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
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)
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;
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;
#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)
{
Eldbus_Proxy *proxy;
_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);
}
}
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);
}
}
{
eina_value_get(ev->value, &active);
if ((!em->sync) || (!active))
- {
- /* TODO: _ecore_drm2_launcher_activate_send(em, active); */
- }
+ _logind_session_active_send(em, active);
}
}