forked from enlightenment/efl
elput: Support sending of session activate/deactivate event
This patch adds support for notifying when a session gets activated or deactivated. This will be used in drm2 to notify compositor when to pause/restart rendering during a vt switch @feature Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
This commit is contained in:
parent
9ed2f42c08
commit
3de066469a
|
@ -91,11 +91,19 @@ typedef struct _Elput_Event_Device_Change
|
|||
Elput_Device_Change_Type type;
|
||||
} Elput_Event_Device_Change;
|
||||
|
||||
/* structure to represent session active changes */
|
||||
typedef struct _Elput_Event_Session_Active
|
||||
{
|
||||
const char *session;
|
||||
Eina_Bool active : 1;
|
||||
} Elput_Event_Session_Active;
|
||||
|
||||
EAPI extern int ELPUT_EVENT_SEAT_CAPS;
|
||||
EAPI extern int ELPUT_EVENT_SEAT_FRAME;
|
||||
EAPI extern int ELPUT_EVENT_KEYMAP_SEND;
|
||||
EAPI extern int ELPUT_EVENT_MODIFIERS_SEND;
|
||||
EAPI extern int ELPUT_EVENT_DEVICE_CHANGE;
|
||||
EAPI extern int ELPUT_EVENT_SESSION_ACTIVE;
|
||||
|
||||
/**
|
||||
* @file
|
||||
|
|
|
@ -11,6 +11,7 @@ EAPI int ELPUT_EVENT_SEAT_FRAME = -1;
|
|||
EAPI int ELPUT_EVENT_KEYMAP_SEND = -1;
|
||||
EAPI int ELPUT_EVENT_MODIFIERS_SEND = -1;
|
||||
EAPI int ELPUT_EVENT_DEVICE_CHANGE = -1;
|
||||
EAPI int ELPUT_EVENT_SESSION_ACTIVE = -1;
|
||||
|
||||
EAPI int
|
||||
elput_init(void)
|
||||
|
@ -34,6 +35,7 @@ elput_init(void)
|
|||
ELPUT_EVENT_KEYMAP_SEND = ecore_event_type_new();
|
||||
ELPUT_EVENT_MODIFIERS_SEND = ecore_event_type_new();
|
||||
ELPUT_EVENT_DEVICE_CHANGE = ecore_event_type_new();
|
||||
ELPUT_EVENT_SESSION_ACTIVE = ecore_event_type_new();
|
||||
|
||||
return _elput_init_count;
|
||||
|
||||
|
@ -60,6 +62,7 @@ elput_shutdown(void)
|
|||
ELPUT_EVENT_KEYMAP_SEND = -1;
|
||||
ELPUT_EVENT_MODIFIERS_SEND = -1;
|
||||
ELPUT_EVENT_DEVICE_CHANGE = -1;
|
||||
ELPUT_EVENT_SESSION_ACTIVE = -1;
|
||||
|
||||
eina_log_domain_unregister(_elput_log_dom);
|
||||
_elput_log_dom = -1;
|
||||
|
|
|
@ -2,6 +2,31 @@
|
|||
|
||||
#ifdef HAVE_SYSTEMD
|
||||
|
||||
static void
|
||||
_logind_session_active_cb_free(void *data EINA_UNUSED, void *event)
|
||||
{
|
||||
Elput_Event_Session_Active *ev;
|
||||
|
||||
ev = event;
|
||||
eina_stringshare_del(ev->session);
|
||||
free(ev);
|
||||
}
|
||||
|
||||
static void
|
||||
_logind_session_active_send(Elput_Manager *em, Eina_Bool active)
|
||||
{
|
||||
Elput_Event_Session_Active *ev;
|
||||
|
||||
ev = calloc(1, sizeof(Elput_Event_Session_Active));
|
||||
if (!ev) return;
|
||||
|
||||
ev->session = eina_stringshare_add(em->sid);
|
||||
ev->active = active;
|
||||
|
||||
ecore_event_add(ELPUT_EVENT_SESSION_ACTIVE, ev,
|
||||
_logind_session_active_cb_free, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
_logind_device_pause_complete(Elput_Manager *em, uint32_t major, uint32_t minor)
|
||||
{
|
||||
|
@ -79,9 +104,7 @@ _cb_device_paused(void *data, const Eldbus_Message *msg)
|
|||
_logind_device_pause_complete(em, maj, min);
|
||||
|
||||
if ((em->sync) && (maj == 226)) // DRM_MAJOR
|
||||
{
|
||||
/* TODO: _ecore_drm2_launcher_activate_send(em, EINA_FALSE); */
|
||||
}
|
||||
_logind_session_active_send(em, EINA_FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -103,9 +126,7 @@ _cb_device_resumed(void *data, const Eldbus_Message *msg)
|
|||
if (eldbus_message_arguments_get(msg, "u", &maj))
|
||||
{
|
||||
if ((em->sync) && (maj == 226)) // DRM_MAJOR
|
||||
{
|
||||
/* TODO: _ecore_drm2_launcher_activate_send(em, EINA_TRUE); */
|
||||
}
|
||||
_logind_session_active_send(em, EINA_TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -125,9 +146,7 @@ _cb_property_changed(void *data, Eldbus_Proxy *proxy EINA_UNUSED, void *event)
|
|||
{
|
||||
eina_value_get(ev->value, &active);
|
||||
if ((!em->sync) || (!active))
|
||||
{
|
||||
/* TODO: _ecore_drm2_launcher_activate_send(em, active); */
|
||||
}
|
||||
_logind_session_active_send(em, active);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue