englebass pushed a commit to branch master.

commit 71122d59209135df81b2d07b7620557c1fbce031
Author: Sebastian Dransfeld <[email protected]>
Date:   Tue Jun 25 04:32:26 2013 +0200

    efreet: Init no longer fails without dbus session
    
    Allow programs to use efreet without requiering a dbus session. This
    gives limited functionality, as efreet_icon wont work without a cache.
    efreet_desktop will partially work, as it reads info from files directly
    if cache is missing.
---
 src/lib/efreet/efreet_cache.c | 42 +++++++++++++++++++++++-------------------
 1 file changed, 23 insertions(+), 19 deletions(-)

diff --git a/src/lib/efreet/efreet_cache.c b/src/lib/efreet/efreet_cache.c
index 9c2eaf6..1ee9d6d 100644
--- a/src/lib/efreet/efreet_cache.c
+++ b/src/lib/efreet/efreet_cache.c
@@ -142,23 +142,24 @@ efreet_cache_init(void)
     eldbus_init();
     if (efreet_cache_update)
     {
-        Eldbus_Object *obj;
-
         conn = eldbus_connection_get(ELDBUS_CONNECTION_TYPE_SESSION);
-        if (!conn) goto error;
+        if (conn)
+        {
+            Eldbus_Object *obj;
 
-        obj = eldbus_object_get(conn, BUS, PATH);
-        proxy = eldbus_proxy_get(obj, INTERFACE);
-        eldbus_proxy_signal_handler_add(proxy, "IconCacheUpdate", 
icon_cache_update, NULL);
-        eldbus_proxy_signal_handler_add(proxy, "DesktopCacheUpdate", 
desktop_cache_update, NULL);
+            obj = eldbus_object_get(conn, BUS, PATH);
+            proxy = eldbus_proxy_get(obj, INTERFACE);
+            eldbus_proxy_signal_handler_add(proxy, "IconCacheUpdate", 
icon_cache_update, NULL);
+            eldbus_proxy_signal_handler_add(proxy, "DesktopCacheUpdate", 
desktop_cache_update, NULL);
 
-        eldbus_proxy_call(proxy, "Register", on_send_register, NULL, -1, "s", 
efreet_language_get());
+            eldbus_proxy_call(proxy, "Register", on_send_register, NULL, -1, 
"s", efreet_language_get());
 
-        /*
-         * TODO: Needed?
-        eldbus_name_owner_changed_callback_add(conn, BUS, 
on_name_owner_changed,
-                                              conn, EINA_TRUE);
-                                              */
+            /*
+             * TODO: Needed?
+             eldbus_name_owner_changed_callback_add(conn, BUS, 
on_name_owner_changed,
+             conn, EINA_TRUE);
+             */
+        }
     }
 
     return 1;
@@ -897,7 +898,8 @@ efreet_cache_desktop_add(Efreet_Desktop *desktop)
     Eldbus_Message_Iter *iter, *array_of_string;
     char *path;
 
-    if (!efreet_cache_update) return;
+    if ((!efreet_cache_update) || (!proxy))
+        return;
     /* TODO: Chunk updates */
     if (!eina_main_loop_is()) return;
     /*
@@ -923,7 +925,8 @@ efreet_cache_icon_exts_add(Eina_List *exts)
     Eina_List *l;
     const char *ext;
 
-    if (!efreet_cache_update) return;
+    if ((!efreet_cache_update) || (!proxy))
+        return;
     msg = eldbus_proxy_method_call_new(proxy, "AddIconExts");
     iter = eldbus_message_iter_get(msg);
     array_of_string = eldbus_message_iter_container_new(iter, 'a',"s");
@@ -941,7 +944,8 @@ efreet_cache_icon_dirs_add(Eina_List *dirs)
     Eina_List *l;
     const char *dir;
 
-    if (!efreet_cache_update) return;
+    if ((!efreet_cache_update) || (!proxy))
+        return;
     msg = eldbus_proxy_method_call_new(proxy, "AddIconDirs");
     iter = eldbus_message_iter_get(msg);
     array_of_string = eldbus_message_iter_container_new(iter, 'a',"s");
@@ -994,9 +998,9 @@ efreet_cache_desktop_close(void)
 void
 efreet_cache_desktop_build(void)
 {
-    if (!efreet_cache_update) return;
-    if (proxy)
-        eldbus_proxy_call(proxy, "BuildDesktopCache", NULL, NULL, -1, "s", 
efreet_language_get());
+    if ((!efreet_cache_update) || (!proxy))
+        return;
+    eldbus_proxy_call(proxy, "BuildDesktopCache", NULL, NULL, -1, "s", 
efreet_language_get());
 }
 
 static Eina_Bool

-- 

------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev

Reply via email to