discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=98068e9b9c995a550035fed766fa176c4ed9e364

commit 98068e9b9c995a550035fed766fa176c4ed9e364
Author: Mike Blumenkrantz <zm...@osg.samsung.com>
Date:   Wed Apr 22 15:50:05 2015 -0400

    add e_acpi_lid_is_closed() for returning cached state of computer lid
---
 src/bin/e_acpi.c | 12 ++++++++++++
 src/bin/e_acpi.h |  2 +-
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/src/bin/e_acpi.c b/src/bin/e_acpi.c
index 09379bc..62ea63c 100644
--- a/src/bin/e_acpi.c
+++ b/src/bin/e_acpi.c
@@ -53,6 +53,7 @@ static int _e_acpi_events_frozen = 0;
 static Ecore_Con_Server *_e_acpid = NULL;
 static Eina_List *_e_acpid_hdls = NULL;
 static Eina_Strbuf *acpibuf = NULL;
+static int lid_is_closed = -1;
 
 static E_ACPI_Device_Simple _devices_simple[] =
 {
@@ -191,6 +192,14 @@ e_acpi_lid_status_get(void)
    return E_ACPI_LID_UNKNOWN;
 }
 
+EINTERN Eina_Bool
+e_acpi_lid_is_closed(void)
+{
+   if (lid_is_closed == -1)
+     lid_is_closed = (e_acpi_lid_status_get() == E_ACPI_LID_CLOSED);
+   return lid_is_closed;
+}
+
 EAPI void
 e_acpi_events_freeze(void)
 {
@@ -335,6 +344,9 @@ _e_acpi_cb_server_data(void *data EINA_UNUSED, int type 
EINA_UNUSED, void *event
                 case E_ACPI_TYPE_LID:
                   acpi_event->status =
                     _e_acpi_lid_status_get(device, bus);
+                  /* no change in lid state */
+                  if (lid_is_closed == (acpi_event->status == 
E_ACPI_LID_CLOSED)) break;
+                  lid_is_closed = (acpi_event->status == E_ACPI_LID_CLOSED);
                   break;
 
                 default:
diff --git a/src/bin/e_acpi.h b/src/bin/e_acpi.h
index 50440c1..f8a5481 100644
--- a/src/bin/e_acpi.h
+++ b/src/bin/e_acpi.h
@@ -72,7 +72,7 @@ EINTERN int e_acpi_init(void);
 EINTERN int e_acpi_shutdown(void);
 
 EINTERN E_Acpi_Lid_Status e_acpi_lid_status_get(void);
-
+EINTERN Eina_Bool e_acpi_lid_is_closed(void);
 EAPI void e_acpi_events_freeze(void);
 EAPI void e_acpi_events_thaw(void);
 

-- 


Reply via email to