From 98068e9b9c995a550035fed766fa176c4ed9e364 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 22 Apr 2015 15:50:05 -0400 Subject: [PATCH] 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); -- 2.7.4