raster pushed a commit to branch master.

commit 433a2c805ff768c08e6fa87c4e5e66466b3685b0
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date:   Thu Jul 4 08:39:00 2013 +0900

    ethumb - stop requesting ethumbd to start again every time it dies
---
 src/lib/elm_icon.c  | 11 ++++----
 src/lib/elm_thumb.c | 76 ++++++++++++++++++++++++++++-------------------------
 2 files changed, 45 insertions(+), 42 deletions(-)

diff --git a/src/lib/elm_icon.c b/src/lib/elm_icon.c
index 16b067a..652d384 100644
--- a/src/lib/elm_icon.c
+++ b/src/lib/elm_icon.c
@@ -620,17 +620,16 @@ _elm_icon_smart_add(Eo *obj, void *_pd, va_list *list 
EINA_UNUSED)
 static void
 _elm_icon_smart_del(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
 {
-#ifdef HAVE_ELEMENTARY_ETHUMB
-   Ethumb_Client *ethumbd;
-#endif
-
    Elm_Icon_Smart_Data *sd = _pd;
 
    if (sd->stdicon) eina_stringshare_del(sd->stdicon);
 
 #ifdef HAVE_ELEMENTARY_ETHUMB
-   ethumbd = elm_thumb_ethumb_client_get();
-   _icon_thumb_stop(sd, ethumbd);
+   if (sd->thumb.request)
+     {
+        Ethumb_Client *ethumbd = elm_thumb_ethumb_client_get();
+        if (ethumbd) _icon_thumb_stop(sd, ethumbd);
+     }
 
    eina_stringshare_del(sd->thumb.file.path);
    eina_stringshare_del(sd->thumb.file.key);
diff --git a/src/lib/elm_thumb.c b/src/lib/elm_thumb.c
index 906fae5..d615009 100644
--- a/src/lib/elm_thumb.c
+++ b/src/lib/elm_thumb.c
@@ -404,13 +404,47 @@ _thumbnailing_available_cb(void *data,
    return ECORE_CALLBACK_RENEW;
 }
 
+static Eina_Bool _elm_need_ethumb = EINA_FALSE;
+static void _on_die_cb(void *, Ethumb_Client *);
+
+static void
+_connect_cb(void *data __UNUSED__,
+            Ethumb_Client *c,
+            Eina_Bool success)
+{
+   if (success)
+     {
+        ethumb_client_on_server_die_callback_set(c, _on_die_cb, NULL, NULL);
+        _elm_ethumb_connected = EINA_TRUE;
+        ecore_event_add(ELM_ECORE_EVENT_ETHUMB_CONNECT, NULL, NULL, NULL);
+     }
+   else
+     _elm_ethumb_client = NULL;
+}
+
+static void
+_on_die_cb(void *data __UNUSED__,
+           Ethumb_Client *c __UNUSED__)
+{
+   if (_elm_ethumb_client)
+     {
+        ethumb_client_disconnect(_elm_ethumb_client);
+        _elm_ethumb_client = NULL;
+     }
+   _elm_ethumb_connected = EINA_FALSE;
+   if (pending_request > 0)
+     _elm_ethumb_client = ethumb_client_connect(_connect_cb, NULL, NULL);
+}
+
 static void
 _thumb_show(Elm_Thumb_Smart_Data *sd)
 {
    Elm_Widget_Smart_Data *wd = eo_data_scope_get(sd->obj, 
ELM_OBJ_WIDGET_CLASS);
    evas_object_show(wd->resize_obj);
 
-   if (elm_thumb_ethumb_client_connected_get())
+   if (!_elm_ethumb_client)
+     _elm_ethumb_client = ethumb_client_connect(_connect_cb, NULL, NULL);
+   else if (elm_thumb_ethumb_client_connected_get())
      {
         _thumb_start(sd);
         return;
@@ -474,38 +508,6 @@ _elm_thumb_smart_hide(Eo *obj, void *_pd, va_list *list 
EINA_UNUSED)
 #endif
 }
 
-#ifdef ELM_ETHUMB
-static Eina_Bool _elm_need_ethumb = EINA_FALSE;
-static void _on_die_cb(void *, Ethumb_Client *);
-
-static void
-_connect_cb(void *data __UNUSED__,
-            Ethumb_Client *c,
-            Eina_Bool success)
-{
-   if (success)
-     {
-        ethumb_client_on_server_die_callback_set(c, _on_die_cb, NULL, NULL);
-        _elm_ethumb_connected = EINA_TRUE;
-        ecore_event_add(ELM_ECORE_EVENT_ETHUMB_CONNECT, NULL, NULL, NULL);
-     }
-   else
-     _elm_ethumb_client = NULL;
-}
-
-static void
-_on_die_cb(void *data __UNUSED__,
-           Ethumb_Client *c __UNUSED__)
-{
-   ethumb_client_disconnect(_elm_ethumb_client);
-
-   _elm_ethumb_client = NULL;
-   _elm_ethumb_connected = EINA_FALSE;
-   _elm_ethumb_client = ethumb_client_connect(_connect_cb, NULL, NULL);
-}
-
-#endif
-
 void
 _elm_unneed_ethumb(void)
 {
@@ -513,8 +515,11 @@ _elm_unneed_ethumb(void)
    if (!_elm_need_ethumb) return;
    _elm_need_ethumb = EINA_FALSE;
 
-   ethumb_client_disconnect(_elm_ethumb_client);
-   _elm_ethumb_client = NULL;
+   if (_elm_ethumb_client)
+     {
+        ethumb_client_disconnect(_elm_ethumb_client);
+        _elm_ethumb_client = NULL;
+     }
    ethumb_client_shutdown();
    ELM_ECORE_EVENT_ETHUMB_CONNECT = 0;
 #endif
@@ -561,7 +566,6 @@ elm_need_ethumb(void)
 
    ELM_ECORE_EVENT_ETHUMB_CONNECT = ecore_event_type_new();
    ethumb_client_init();
-   _elm_ethumb_client = ethumb_client_connect(_connect_cb, NULL, NULL);
 
    return EINA_TRUE;
 #else

-- 

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

Build for Windows Store.

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

Reply via email to