raster pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=014b74bc74d29c13dca71f5dd75ff06a9b8a6486

commit 014b74bc74d29c13dca71f5dd75ff06a9b8a6486
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date:   Mon Aug 21 23:14:18 2017 +0900

    e sys - add listening to prepare for shutdown/suspend from systemd
    
    listen to the prepare and post signals... just print right now as not
    really used... but knowing and logging is good.
---
 src/bin/e_sys.c | 30 +++++++++++++++++++++++++++++-
 1 file changed, 29 insertions(+), 1 deletion(-)

diff --git a/src/bin/e_sys.c b/src/bin/e_sys.c
index f70ddc93b..29b0422bc 100644
--- a/src/bin/e_sys.c
+++ b/src/bin/e_sys.c
@@ -264,6 +264,28 @@ _e_sys_comp_resume(void)
    ecore_timer_add(1.5, _e_sys_comp_resume2, NULL);
 }
 
+static void
+_e_sys_systemd_signal_prepare_shutdown(void *data EINA_UNUSED, const 
Eldbus_Message *msg)
+{
+   EINA_SAFETY_ON_TRUE_RETURN(eldbus_message_error_get(msg, NULL, NULL));
+   Eina_Bool b = EINA_FALSE;
+
+   if (!eldbus_message_arguments_get(msg, "b", &b)) return;
+   fprintf(stderr, "SSS: systemd said to prepare for shutdown! bool=%i 
@%1.8f\n", (int)b, ecore_time_get());
+}
+
+static void
+_e_sys_systemd_signal_prepare_sleep(void *data EINA_UNUSED, const 
Eldbus_Message *msg)
+{
+   EINA_SAFETY_ON_TRUE_RETURN(eldbus_message_error_get(msg, NULL, NULL));
+   Eina_Bool b = EINA_FALSE;
+
+   if (!eldbus_message_arguments_get(msg, "b", &b)) return;
+   // b == 1 -> suspending
+   // b == 0 -> resuming
+   fprintf(stderr, "SSS: systemd said to prepare for sleep! bool=%i @%1.8f\n", 
(int)b, ecore_time_get());
+}
+
 /* externally accessible functions */
 EINTERN int
 e_sys_init(void)
@@ -276,10 +298,16 @@ e_sys_init(void)
                            "/org/freedesktop/login1");
    login1_manger_proxy = eldbus_proxy_get(obj,
                                           "org.freedesktop.login1.Manager");
+   eldbus_proxy_signal_handler_add(login1_manger_proxy, "PrepareForShutdown",
+                                   _e_sys_systemd_signal_prepare_shutdown,
+                                   NULL);
+   eldbus_proxy_signal_handler_add(login1_manger_proxy, "PrepareForSleep",
+                                   _e_sys_systemd_signal_prepare_sleep,
+                                   NULL);
    eldbus_name_owner_get(conn, "org.freedesktop.login1",
                          _e_sys_systemd_exists_cb, NULL);
    _e_sys_systemd_handle_inhibit();
-   
+
    E_EVENT_SYS_SUSPEND = ecore_event_type_new();
    E_EVENT_SYS_HIBERNATE = ecore_event_type_new();
    E_EVENT_SYS_RESUME = ecore_event_type_new();

-- 


Reply via email to