okra pushed a commit to branch master.

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

commit fff3f691146b364d92f1bf4dfac4783a082966a2
Author: thierryOrdissimo <[email protected]>
Date:   Wed Aug 8 09:14:08 2018 -0500

    Update of the dbus calls of the upower module.
    
    Reviewers: zmike, devilhorns, stephenmhouston
    
    Reviewed By: zmike, stephenmhouston
    
    Subscribers: cedric
    
    Tags: #enlightenment-git
    
    Differential Revision: https://phab.enlightenment.org/D6386
---
 src/modules/battery/e_mod_upower.c         | 49 +++++++++++++++++++++++++-----
 src/modules/sysinfo/batman/batman_upower.c | 37 +++++++++++++++++-----
 2 files changed, 70 insertions(+), 16 deletions(-)

diff --git a/src/modules/battery/e_mod_upower.c 
b/src/modules/battery/e_mod_upower.c
index 15da394b6..80307d9de 100644
--- a/src/modules/battery/e_mod_upower.c
+++ b/src/modules/battery/e_mod_upower.c
@@ -6,6 +6,8 @@
 # define BUS "org.freedesktop.UPower"
 # define PATH "/org/freedesktop/UPower"
 # define IFACE "org.freedesktop.UPower"
+# define IFACE_DEVICE "org.freedesktop.UPower.Device"
+# define IFACE_PROPERTIES "org.freedesktop.DBus.Properties"
 
 extern Eina_List *device_batteries;
 extern Eina_List *device_ac_adapters;
@@ -13,6 +15,8 @@ extern double init_time;
 
 static Eldbus_Connection *conn;
 static Eldbus_Proxy *upower_proxy;
+static Eldbus_Proxy *upower_proxy_bat;
+static Eldbus_Proxy *upower_proxy_ac;
 
 static void
 _battery_free(Battery *bat)
@@ -85,7 +89,7 @@ _process_ac(Eldbus_Proxy *proxy)
    ac->proxy = proxy;
    ac->udi = 
eina_stringshare_add(eldbus_object_path_get(eldbus_proxy_object_get(proxy)));
    eldbus_proxy_property_get_all(proxy, _ac_get_all_cb, ac);
-   eldbus_proxy_signal_handler_add(proxy, "Changed", _ac_changed_cb, ac);
+   eldbus_proxy_signal_handler_add(upower_proxy_ac, "PropertiesChanged", 
_ac_changed_cb, ac);
    device_ac_adapters = eina_list_append(device_ac_adapters, ac);
    return;
 
@@ -215,7 +219,7 @@ _process_battery(Eldbus_Proxy *proxy)
    bat->proxy = proxy;
    bat->udi = 
eina_stringshare_add(eldbus_object_path_get(eldbus_proxy_object_get(proxy)));
    eldbus_proxy_property_get_all(proxy, _bat_get_all_cb, bat);
-   eldbus_proxy_signal_handler_add(proxy, "Changed", _bat_changed_cb, bat);
+   eldbus_proxy_signal_handler_add(upower_proxy_bat, "PropertiesChanged", 
_bat_changed_cb, bat);
    device_batteries = eina_list_append(device_batteries, bat);
    _battery_device_update();
 }
@@ -228,14 +232,25 @@ _device_type_cb(void *data, const Eldbus_Message *msg, 
Eldbus_Pending *pending E
    Eldbus_Object *obj;
    unsigned int type;
 
+   const char *path = eldbus_pending_path_get (pending);
    if (!eldbus_message_arguments_get(msg, "v", &variant))
      goto error;
 
    eldbus_message_iter_arguments_get(variant, "u", &type);
-   if (type == 1)
-     _process_ac(proxy);
-   else if (type == 2)
-     _process_battery(proxy);
+   if (type == 1) 
+     {
+        obj = eldbus_object_get(conn, BUS, path);
+        EINA_SAFETY_ON_FALSE_RETURN(obj);
+        upower_proxy_ac = eldbus_proxy_get(obj, IFACE_PROPERTIES);
+        _process_ac(proxy);
+     }
+   else if (type == 2) 
+     {
+        obj = eldbus_object_get(conn, BUS, path);
+        EINA_SAFETY_ON_FALSE_RETURN(obj);
+        upower_proxy_bat = eldbus_proxy_get(obj, IFACE_PROPERTIES);
+        _process_battery(proxy);
+     }
    else
      goto error;
 
@@ -256,7 +271,7 @@ _process_enumerate_path(const char *path)
 
    obj = eldbus_object_get(conn, BUS, path);
    EINA_SAFETY_ON_FALSE_RETURN(obj);
-   proxy = eldbus_proxy_get(obj, "org.freedesktop.UPower.Device");
+   proxy = eldbus_proxy_get(obj, IFACE_DEVICE);
    eldbus_proxy_property_get(proxy, "Type", _device_type_cb, proxy);
 }
 
@@ -312,6 +327,7 @@ _battery_upower_start(void)
 {
    Eldbus_Object *obj;
 
+   eldbus_init();
    conn = eldbus_connection_get(ELDBUS_CONNECTION_TYPE_SYSTEM);
    EINA_SAFETY_ON_NULL_RETURN_VAL(conn, 0);
 
@@ -320,9 +336,9 @@ _battery_upower_start(void)
    upower_proxy = eldbus_proxy_get(obj, IFACE);
    EINA_SAFETY_ON_NULL_GOTO(upower_proxy, proxy_error);
 
-   eldbus_proxy_call(upower_proxy, "EnumerateDevices", _enumerate_cb, NULL, 
-1, "");
    eldbus_proxy_signal_handler_add(upower_proxy, "DeviceAdded", 
_device_added_cb, NULL);
    eldbus_proxy_signal_handler_add(upower_proxy, "DeviceRemoved", 
_device_removed_cb, NULL);
+   eldbus_proxy_call(upower_proxy, "EnumerateDevices", _enumerate_cb, NULL, 
-1, "");
    return 1;
 
 proxy_error:
@@ -339,6 +355,8 @@ _battery_upower_stop(void)
    Battery *bat;
    Ac_Adapter *ac;
    Eldbus_Object *obj;
+   Eldbus_Object *obj_ac;
+   Eldbus_Object *obj_bat;
 
    EINA_LIST_FOREACH_SAFE(device_batteries, list, list2, bat)
      _battery_free(bat);
@@ -348,6 +366,21 @@ _battery_upower_stop(void)
    obj = eldbus_proxy_object_get(upower_proxy);
    eldbus_proxy_unref(upower_proxy);
    eldbus_object_unref(obj);
+   if (upower_proxy_ac) 
+     {
+        obj_ac = eldbus_proxy_object_get(upower_proxy_ac);
+        eldbus_proxy_unref(upower_proxy_ac);
+        eldbus_object_unref(obj_ac);
+        upower_proxy_ac = NULL;
+     }
+   if (upower_proxy_bat) 
+     {
+        obj_bat = eldbus_proxy_object_get(upower_proxy_bat);
+        eldbus_proxy_unref(upower_proxy_bat);
+        eldbus_object_unref(obj_bat);
+        upower_proxy_bat = NULL;
+     }
    eldbus_connection_unref(conn);
+   eldbus_shutdown();
 }
 #endif
diff --git a/src/modules/sysinfo/batman/batman_upower.c 
b/src/modules/sysinfo/batman/batman_upower.c
index 41b424e58..7aa27bce3 100644
--- a/src/modules/sysinfo/batman/batman_upower.c
+++ b/src/modules/sysinfo/batman/batman_upower.c
@@ -3,6 +3,8 @@
 #define BUS   "org.freedesktop.UPower"
 #define PATH  "/org/freedesktop/UPower"
 #define IFACE "org.freedesktop.UPower"
+# define IFACE_DEVICE "org.freedesktop.UPower.Device"
+# define IFACE_PROPERTIES "org.freedesktop.DBus.Properties"
 
 EINTERN extern Eina_List *batman_device_batteries;
 EINTERN extern Eina_List *batman_device_ac_adapters;
@@ -10,6 +12,8 @@ EINTERN extern double batman_init_time;
 
 static Eldbus_Connection *conn;
 static Eldbus_Proxy *upower_proxy;
+static Eldbus_Proxy *upower_proxy_bat;
+static Eldbus_Proxy *upower_proxy_ac;
 
 typedef struct _Upower_Data Upower_Data;
 struct _Upower_Data
@@ -90,7 +94,7 @@ _process_ac(Eldbus_Proxy *proxy, Instance *inst)
    ac->proxy = proxy;
    ac->udi = 
eina_stringshare_add(eldbus_object_path_get(eldbus_proxy_object_get(proxy)));
    eldbus_proxy_property_get_all(proxy, _ac_get_all_cb, ac);
-   eldbus_proxy_signal_handler_add(proxy, "Changed", _ac_changed_cb, ac);
+   eldbus_proxy_signal_handler_add(upower_proxy_ac, "PropertiesChanged", 
_ac_changed_cb, ac);
    batman_device_ac_adapters = eina_list_append(batman_device_ac_adapters, ac);
    return;
 
@@ -220,27 +224,38 @@ _process_battery(Eldbus_Proxy *proxy, Instance *inst)
    bat->proxy = proxy;
    bat->udi = 
eina_stringshare_add(eldbus_object_path_get(eldbus_proxy_object_get(proxy)));
    eldbus_proxy_property_get_all(proxy, _bat_get_all_cb, bat);
-   eldbus_proxy_signal_handler_add(proxy, "Changed", _bat_changed_cb, bat);
+   eldbus_proxy_signal_handler_add(upower_proxy_bat, "PropertiesChanged", 
_bat_changed_cb, bat);
    batman_device_batteries = eina_list_append(batman_device_batteries, bat);
    _batman_device_update(bat->inst);
 }
 
 static void
-_device_type_cb(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending 
EINA_UNUSED)
+_device_type_cb(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending)
 {
    Upower_Data *ud = data;
    Eldbus_Message_Iter *variant;
    Eldbus_Object *obj;
    unsigned int type;
 
+   const char *path = eldbus_pending_path_get (pending);
    if (!eldbus_message_arguments_get(msg, "v", &variant))
      goto error;
 
    eldbus_message_iter_arguments_get(variant, "u", &type);
    if (type == 1)
-     _process_ac(ud->proxy, ud->inst);
-   else if (type == 2)
-     _process_battery(ud->proxy, ud->inst);
+     {
+        obj = eldbus_object_get(conn, BUS, path);
+        EINA_SAFETY_ON_FALSE_RETURN(obj);
+        upower_proxy_ac = eldbus_proxy_get(obj, IFACE_PROPERTIES);
+        _process_ac(proxy);
+     }
+   else if (type == 2) 
+     {
+        obj = eldbus_object_get(conn, BUS, path);
+        EINA_SAFETY_ON_FALSE_RETURN(obj);
+        upower_proxy_bat = eldbus_proxy_get(obj, IFACE_PROPERTIES);
+        _process_battery(proxy);
+     }
    else
      goto error;
 
@@ -265,7 +280,7 @@ _process_enumerate_path(const char *path, Instance *inst)
 
    obj = eldbus_object_get(conn, BUS, path);
    EINA_SAFETY_ON_FALSE_RETURN(obj);
-   proxy = eldbus_proxy_get(obj, "org.freedesktop.UPower.Device");
+   proxy = eldbus_proxy_get(obj, IFACE_DEVICE);
    ud = E_NEW(Upower_Data, 1);
    if (!ud)
      {
@@ -365,9 +380,9 @@ _batman_upower_start(Instance *inst)
    upower_proxy = eldbus_proxy_get(obj, IFACE);
    EINA_SAFETY_ON_NULL_GOTO(upower_proxy, proxy_error);
 
-   eldbus_proxy_call(upower_proxy, "EnumerateDevices", _enumerate_cb, inst, 
-1, "");
    eldbus_proxy_signal_handler_add(upower_proxy, "DeviceAdded", 
_device_added_cb, inst);
    eldbus_proxy_signal_handler_add(upower_proxy, "DeviceRemoved", 
_device_removed_cb, inst);
+   eldbus_proxy_call(upower_proxy, "EnumerateDevices", _enumerate_cb, inst, 
-1, "");
    return 1;
 
 proxy_error:
@@ -393,6 +408,12 @@ _batman_upower_stop(void)
    obj = eldbus_proxy_object_get(upower_proxy);
    E_FREE_FUNC(upower_proxy, eldbus_proxy_unref);
    E_FREE_FUNC(obj, eldbus_object_unref);
+   obj = eldbus_proxy_object_get(upower_proxy_ac);
+   E_FREE_FUNC(upower_proxy_ac, eldbus_proxy_unref);
+   E_FREE_FUNC(obj, eldbus_object_unref);
+   obj = eldbus_proxy_object_get(upower_proxy_bat);
+   E_FREE_FUNC(upower_proxy_bat, eldbus_proxy_unref);
+   E_FREE_FUNC(obj, eldbus_object_unref);
    E_FREE_FUNC(conn, eldbus_connection_unref);
 }
 

-- 


Reply via email to