add e_acpi_lid_is_closed() for returning cached state of computer lid

This commit is contained in:
Mike Blumenkrantz 2015-04-22 15:50:05 -04:00
parent f843b48eb2
commit 98068e9b9c
2 changed files with 13 additions and 1 deletions

View File

@ -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:

View File

@ -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);