raster pushed a commit to branch master.

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

commit 3779086a638ec5e30bc102fefa17e34d91d17767
Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com>
Date:   Sun Jan 1 22:19:51 2017 +0900

    e icon - use new skip header async preload to make icon loads async
    
    now they can be trule async hopefully stopping things like application
    menu from stalling while loading icons header... which is really nasty
    with svg's. this actually makes icons async by default which is really
    EXACTLY what you want. this also prepares for later making edje loads
    async.
    
    @feature
---
 src/bin/e_dialog.c                               |   6 +-
 src/bin/e_fm.c                                   |   4 +-
 src/bin/e_icon.c                                 | 187 +++++++++++++----------
 src/bin/e_icon.h                                 |   2 +-
 src/bin/e_utils.c                                |   3 +-
 src/bin/e_widget_image.c                         |   9 +-
 src/bin/e_xkb.c                                  |   1 +
 src/modules/conf_display/e_int_config_desklock.c |   6 +-
 src/modules/conf_theme/e_int_config_xsettings.c  |  14 +-
 src/modules/everything/evry_util.c               |   6 +-
 src/modules/ibar/e_mod_main.c                    |   4 +-
 src/modules/ibox/e_mod_main.c                    |   4 +-
 src/modules/notification/e_mod_popup.c           |  11 +-
 src/modules/systray/e_mod_notifier_host.c        |   6 +-
 src/modules/tasks/e_mod_main.c                   |   2 +-
 src/modules/winlist/e_winlist.c                  |   6 +-
 16 files changed, 135 insertions(+), 136 deletions(-)

diff --git a/src/bin/e_dialog.c b/src/bin/e_dialog.c
index 2b0435b..d9639be 100644
--- a/src/bin/e_dialog.c
+++ b/src/bin/e_dialog.c
@@ -176,11 +176,7 @@ e_dialog_icon_set(E_Dialog *dia, const char *icon, 
Evas_Coord size)
              evas_object_show(dia->icon_object);
           }
         if (!e_util_icon_theme_set(dia->icon_object, icon))
-          if (!e_icon_file_edje_set(dia->icon_object, icon, "icon"))
-            {
-               E_FREE_FUNC(dia->icon_object, evas_object_del);
-               return;
-            }
+          e_icon_file_edje_set(dia->icon_object, icon, "icon");
         evas_object_size_hint_min_set(dia->icon_object, size * e_scale, size * 
e_scale);
         elm_layout_signal_emit(dia->bg_object, "e,state,icon", "e");
         elm_layout_signal_emit(dia->bg_object, "e,icon,enabled", "e");
diff --git a/src/bin/e_fm.c b/src/bin/e_fm.c
index b05ef1e..048c4d2 100644
--- a/src/bin/e_fm.c
+++ b/src/bin/e_fm.c
@@ -11517,9 +11517,9 @@ _update_volume_icon(E_Volume *v, E_Fm2_Icon *ic)
    if (e)
      {
         if (ic->info.removable_full)
-          edje_object_signal_emit(e, "e,state,removable,full", "e");
+          e_icon_edje_emit(ic->obj_icon, "e,state,removable,full", "e");
         else
-          edje_object_signal_emit(e, "e,state,removable,empty", "e");
+          e_icon_edje_emit(ic->obj_icon, "e,state,removable,empty", "e");
      }
 
    if (v)
diff --git a/src/bin/e_icon.c b/src/bin/e_icon.c
index 305fcfd..2e4ed79 100644
--- a/src/bin/e_icon.c
+++ b/src/bin/e_icon.c
@@ -217,20 +217,22 @@ _handle_anim(E_Smart_Data *sd)
    return 1;
 }
 
-E_API Eina_Bool
+E_API void
 e_icon_file_set(Evas_Object *obj, const char *file)
 {
    E_Smart_Data *sd;
    int len;
 
-   if (!file) return EINA_FALSE;
-   if (evas_object_smart_smart_get(obj) != _e_smart) SMARTERR(0);
-   if (!(sd = evas_object_smart_data_get(obj)))
-     return EINA_FALSE;
+   if (!file) return;
+   if (evas_object_smart_smart_get(obj) != _e_smart) SMARTERR();
+   if (!(sd = evas_object_smart_data_get(obj))) return;
 
    len = strlen(file);
    if ((len > 4) && (!strcasecmp(file + len - 4, ".edj")))
-     return e_icon_file_edje_set(obj, file, "icon");
+     {
+        e_icon_file_edje_set(obj, file, "icon");
+        return;
+     }
 
    /* smart code here */
    _e_icon_obj_prepare(obj, sd);
@@ -258,13 +260,15 @@ e_icon_file_set(Evas_Object *obj, const char *file)
    if (_e_icon_cache_find(obj, file))
      {
         _e_icon_smart_reconfigure(sd);
-        return EINA_TRUE;
+        return;
      }
 #endif
 
+   if (sd->preload)
+     evas_object_image_load_head_skip_set(sd->obj, EINA_TRUE);
    evas_object_image_file_set(sd->obj, file, NULL);
-   if (evas_object_image_load_error_get(sd->obj) != EVAS_LOAD_ERROR_NONE)
-     return EINA_FALSE;
+//   if (evas_object_image_load_error_get(sd->obj) != EVAS_LOAD_ERROR_NONE)
+//     return EINA_FALSE;
 
    if (!_handle_anim(sd))
      {
@@ -294,17 +298,15 @@ e_icon_file_set(Evas_Object *obj, const char *file)
 #endif
 
    _e_icon_smart_reconfigure(sd);
-   return EINA_TRUE;
 }
 
-E_API Eina_Bool
+E_API void
 e_icon_file_key_set(Evas_Object *obj, const char *file, const char *key)
 {
    E_Smart_Data *sd;
 
-   if (evas_object_smart_smart_get(obj) != _e_smart) SMARTERR(0);
-   if (!(sd = evas_object_smart_data_get(obj)))
-     return EINA_FALSE;
+   if (evas_object_smart_smart_get(obj) != _e_smart) SMARTERR();
+   if (!(sd = evas_object_smart_data_get(obj))) return;
 
    /* smart code here */
    sd->loading = 0;
@@ -327,8 +329,8 @@ e_icon_file_key_set(Evas_Object *obj, const char *file, 
const char *key)
      evas_object_image_load_size_set(sd->obj, sd->size, sd->size);
    if (sd->preload) evas_object_hide(sd->obj);
    evas_object_image_file_set(sd->obj, file, key);
-   if (evas_object_image_load_error_get(sd->obj) != EVAS_LOAD_ERROR_NONE)
-     return EINA_FALSE;
+//   if (evas_object_image_load_error_get(sd->obj) != EVAS_LOAD_ERROR_NONE)
+//     return EINA_FALSE;
    if (!_handle_anim(sd))
      {
         if (sd->preload)
@@ -340,7 +342,6 @@ e_icon_file_key_set(Evas_Object *obj, const char *file, 
const char *key)
           evas_object_show(sd->obj);
      }
    _e_icon_smart_reconfigure(sd);
-   return EINA_TRUE;
 }
 
 E_API void
@@ -385,14 +386,13 @@ e_icon_edje_get(Evas_Object *obj)
    return sd->edje ? sd->obj : NULL;
 }
 
-E_API Eina_Bool
+E_API void
 e_icon_file_edje_set(Evas_Object *obj, const char *file, const char *part)
 {
    E_Smart_Data *sd;
 
-   if (evas_object_smart_smart_get(obj) != _e_smart) SMARTERR(0);
-   if (!(sd = evas_object_smart_data_get(obj)))
-     return EINA_FALSE;
+   if (evas_object_smart_smart_get(obj) != _e_smart) SMARTERR();
+   if (!(sd = evas_object_smart_data_get(obj))) return;
 
    /* smart code here */
    if (sd->obj) evas_object_del(sd->obj);
@@ -413,27 +413,29 @@ e_icon_file_edje_set(Evas_Object *obj, const char *file, 
const char *part)
 
    sd->obj = edje_object_add(evas_object_evas_get(obj));
    edje_object_file_set(sd->obj, file, part);
-   if (edje_object_load_error_get(sd->obj) != EDJE_LOAD_ERROR_NONE)
-     return EINA_FALSE;
+//   if (edje_object_load_error_get(sd->obj) != EDJE_LOAD_ERROR_NONE)
+//     return EINA_FALSE;
    if (evas_object_visible_get(obj)) evas_object_show(sd->obj);
    evas_object_smart_member_add(sd->obj, obj);
    _e_icon_smart_reconfigure(sd);
-   return EINA_TRUE;
 }
 
-E_API Eina_Bool
+E_API void
 e_icon_fdo_icon_set(Evas_Object *obj, const char *icon)
 {
    E_Smart_Data *sd;
    const char *path;
    int len;
 
-   if (!icon) return EINA_FALSE;
-   if (evas_object_smart_smart_get(obj) != _e_smart) SMARTERR(0);
-   if (icon[0] == '/') return e_icon_file_set(obj, icon);
+   if (!icon) return;
+   if (evas_object_smart_smart_get(obj) != _e_smart) SMARTERR();
+   if (icon[0] == '/')
+     {
+        e_icon_file_set(obj, icon);
+        return;
+     }
 
-   if (!(sd = evas_object_smart_data_get(obj)))
-     return EINA_FALSE;
+   if (!(sd = evas_object_smart_data_get(obj))) return;
 
    if (sd->timer) ecore_timer_del(sd->timer);
    sd->timer = NULL;
@@ -444,19 +446,22 @@ e_icon_fdo_icon_set(Evas_Object *obj, const char *icon)
    sd->edje = EINA_FALSE;
 
    eina_stringshare_replace(&sd->fdo, icon);
-   if (!sd->fdo) return EINA_FALSE;
+   if (!sd->fdo) return;
 
    path = efreet_icon_path_find(e_config->icon_theme, sd->fdo, sd->size);
    if (!path)
      {
         if (e_util_strcmp(e_config->icon_theme, "hicolor"))
           path = efreet_icon_path_find("hicolor", sd->fdo, sd->size);
-        if (!path) return EINA_FALSE;
+        if (!path) return;
      }
 
    len = strlen(icon);
    if ((len > 4) && (!strcasecmp(icon + len - 4, ".edj")))
-     return e_icon_file_edje_set(obj, path, "icon");
+     {
+        e_icon_file_edje_set(obj, path, "icon");
+        return;
+     }
 
    /* smart code here */
    _e_icon_obj_prepare(obj, sd);
@@ -465,8 +470,8 @@ e_icon_fdo_icon_set(Evas_Object *obj, const char *icon)
      evas_object_image_load_size_set(sd->obj, sd->size, sd->size);
    if (sd->preload) evas_object_hide(sd->obj);
    evas_object_image_file_set(sd->obj, path, NULL);
-   if (evas_object_image_load_error_get(sd->obj) != EVAS_LOAD_ERROR_NONE)
-     return EINA_FALSE;
+//   if (evas_object_image_load_error_get(sd->obj) != EVAS_LOAD_ERROR_NONE)
+//     return EINA_FALSE;
    if (sd->preload)
      {
         sd->loading = 1;
@@ -475,7 +480,7 @@ e_icon_fdo_icon_set(Evas_Object *obj, const char *icon)
    else if (evas_object_visible_get(obj))
      evas_object_show(sd->obj);
    _e_icon_smart_reconfigure(sd);
-   return EINA_TRUE;
+   return;
 }
 
 E_API void
@@ -723,6 +728,16 @@ e_icon_selected_set(const Evas_Object *obj, Eina_Bool 
selected)
      edje_object_signal_emit(sd->obj, "e,state,unselected", "e");
 }
 
+E_API void
+e_icon_edje_emit(const Evas_Object *obj, const char *sig, const char *src)
+{
+   E_Smart_Data *sd;
+
+   if (evas_object_smart_smart_get(obj) != _e_smart) SMARTERR();
+   if (!(sd = evas_object_smart_data_get(obj))) return;
+   edje_object_signal_emit(sd->obj, sig, src);
+}
+
 /* local subsystem globals */
 static void
 _e_icon_smart_reconfigure(E_Smart_Data *sd)
@@ -731,61 +746,62 @@ _e_icon_smart_reconfigure(E_Smart_Data *sd)
    Evas_Coord x, y, w, h;
 
    if (!sd->obj) return;
-   if (sd->edje)
+   w = sd->w;
+   h = sd->h;
+   x = sd->x;
+   y = sd->y;
+   if (!sd->loading)
      {
-        w = sd->w;
-        h = sd->h;
-        x = sd->x;
-        y = sd->y;
-        evas_object_move(sd->obj, x, y);
-        evas_object_resize(sd->obj, w, h);
-        evas_object_move(sd->eventarea, x, y);
-        evas_object_resize(sd->eventarea, w, h);
-     }
-   else
-     {
-        iw = 0;
-        ih = 0;
-        evas_object_image_size_get(sd->obj, &iw, &ih);
-        if (iw < 1) iw = 1;
-        if (ih < 1) ih = 1;
-
-        if (sd->fill_inside)
+        if (sd->edje)
           {
-             w = sd->w;
-             h = ((double)ih * w) / (double)iw;
-             if (h > sd->h)
-               {
-                  h = sd->h;
-                  w = ((double)iw * h) / (double)ih;
-               }
+             evas_object_move(sd->obj, x, y);
+             evas_object_resize(sd->obj, w, h);
           }
         else
           {
-             w = sd->w;
-             h = ((double)ih * w) / (double)iw;
-             if (h < sd->h)
+             iw = 0;
+             ih = 0;
+             evas_object_image_size_get(sd->obj, &iw, &ih);
+             if (iw < 1) iw = 1;
+             if (ih < 1) ih = 1;
+
+             if (sd->fill_inside)
                {
-                  h = sd->h;
-                  w = ((double)iw * h) / (double)ih;
+                  w = sd->w;
+                  h = ((double)ih * w) / (double)iw;
+                  if (h > sd->h)
+                    {
+                       h = sd->h;
+                       w = ((double)iw * h) / (double)ih;
+                    }
                }
-          }
-        if (!sd->scale_up)
-          {
-             if ((w > iw) || (h > ih))
+             else
                {
-                  w = iw;
-                  h = ih;
+                  w = sd->w;
+                  h = ((double)ih * w) / (double)iw;
+                  if (h < sd->h)
+                    {
+                       h = sd->h;
+                       w = ((double)iw * h) / (double)ih;
+                    }
                }
+             if (!sd->scale_up)
+               {
+                  if ((w > iw) || (h > ih))
+                    {
+                       w = iw;
+                       h = ih;
+                    }
+               }
+             x = sd->x + ((sd->w - w) / 2);
+             y = sd->y + ((sd->h - h) / 2);
+             evas_object_move(sd->obj, x, y);
+             evas_object_image_fill_set(sd->obj, 0, 0, w, h);
+             evas_object_resize(sd->obj, w, h);
           }
-        x = sd->x + ((sd->w - w) / 2);
-        y = sd->y + ((sd->h - h) / 2);
-        evas_object_move(sd->obj, x, y);
-        evas_object_image_fill_set(sd->obj, 0, 0, w, h);
-        evas_object_resize(sd->obj, w, h);
-        evas_object_move(sd->eventarea, x, y);
-        evas_object_resize(sd->eventarea, w, h);
      }
+   evas_object_move(sd->eventarea, x, y);
+   evas_object_resize(sd->eventarea, w, h);
 }
 
 static void
@@ -820,7 +836,7 @@ _e_icon_preloaded(void *data, Evas *e EINA_UNUSED, 
Evas_Object *obj EINA_UNUSED,
    evas_object_smart_callback_call(data, "preloaded", NULL);
    evas_object_show(sd->obj);
    sd->loading = 0;
-
+   _e_icon_smart_reconfigure(sd);
 #ifdef USE_ICON_CACHE
    _e_icon_cache_icon_loaded(sd->ci);
 #endif
@@ -832,13 +848,15 @@ _e_icon_smart_add(Evas_Object *obj)
    E_Smart_Data *sd;
 
    if (!(sd = calloc(1, sizeof(E_Smart_Data)))) return;
-   sd->eventarea = evas_object_rectangle_add(evas_object_evas_get(obj));
-   evas_object_color_set(sd->eventarea, 0, 0, 0, 0);
-   evas_object_smart_member_add(sd->eventarea, obj);
 
    sd->obj = evas_object_image_add(evas_object_evas_get(obj));
    evas_object_event_callback_add(sd->obj, EVAS_CALLBACK_IMAGE_PRELOADED,
                                   _e_icon_preloaded, obj);
+
+   sd->eventarea = evas_object_rectangle_add(evas_object_evas_get(obj));
+   evas_object_color_set(sd->eventarea, 0, 0, 0, 0);
+   evas_object_smart_member_add(sd->eventarea, obj);
+
    sd->x = 0;
    sd->y = 0;
    sd->w = 0;
@@ -846,6 +864,7 @@ _e_icon_smart_add(Evas_Object *obj)
    sd->fill_inside = 1;
    sd->scale_up = 1;
    sd->size = 64;
+   sd->preload = 0;
    evas_object_smart_member_add(sd->obj, obj);
    evas_object_smart_data_set(obj, sd);
 }
diff --git a/src/bin/e_icon.h b/src/bin/e_icon.h
index 3c08d4a..d7fcabb 100644
--- a/src/bin/e_icon.h
+++ b/src/bin/e_icon.h
@@ -31,6 +31,6 @@ E_API void        *e_icon_data_get         (const Evas_Object 
*obj, int *w, int
 E_API void         e_icon_scale_size_set   (Evas_Object *obj, int size);
 E_API int          e_icon_scale_size_get   (const Evas_Object *obj);
 E_API void         e_icon_selected_set     (const Evas_Object *obj, Eina_Bool 
selected);
-
+E_API void         e_icon_edje_emit        (const Evas_Object *obj, const char 
*sig, const char *src);
 #endif
 #endif
diff --git a/src/bin/e_utils.c b/src/bin/e_utils.c
index 5db1631..24d5829 100644
--- a/src/bin/e_utils.c
+++ b/src/bin/e_utils.c
@@ -224,7 +224,8 @@ e_util_icon_theme_set(Evas_Object *obj, const char *icon)
 {
    if (icon && (icon[0] == '/'))
      {
-        if (e_icon_file_set(obj, icon)) return 1;
+        e_icon_file_set(obj, icon);
+        return 1;
      }
    if (e_config->icon_theme_overrides)
      {
diff --git a/src/bin/e_widget_image.c b/src/bin/e_widget_image.c
index d792edf..2196ae3 100644
--- a/src/bin/e_widget_image.c
+++ b/src/bin/e_widget_image.c
@@ -49,19 +49,14 @@ e_widget_image_add_from_file(Evas *evas, const char *file, 
int minw, int minh)
    Evas_Object *obj, *o;
    E_Widget_Data *wd;
 
+   if (!ecore_file_exists(file)) return NULL;
    obj = e_widget_add(evas);
    wd = calloc(1, sizeof(E_Widget_Data));
    if (!wd) return NULL;
 
    o = e_icon_add(evas);
    e_icon_fill_inside_set(o, 1);
-   if (!e_icon_file_set(o, file))
-     {
-        evas_object_del(o);
-        free(wd);
-        evas_object_del(obj);
-        return NULL;
-     }
+   e_icon_file_set(o, file);
 
    wd->img = o;
    evas_object_show(o);
diff --git a/src/bin/e_xkb.c b/src/bin/e_xkb.c
index acabc51..bd17e2c 100644
--- a/src/bin/e_xkb.c
+++ b/src/bin/e_xkb.c
@@ -459,6 +459,7 @@ e_xkb_e_icon_flag_setup(Evas_Object *eicon, const char 
*name)
    char buf[PATH_MAX];
 
    e_xkb_flag_file_get(buf, sizeof(buf), name);
+   e_icon_preload_set(eicon, EINA_FALSE);
    e_icon_file_set(eicon, buf);
    e_icon_size_get(eicon, &w, &h);
    edje_extern_object_aspect_set(eicon, EDJE_ASPECT_CONTROL_BOTH, w, h);
diff --git a/src/modules/conf_display/e_int_config_desklock.c 
b/src/modules/conf_display/e_int_config_desklock.c
index cfd2f9a..bb62f1a 100644
--- a/src/modules/conf_display/e_int_config_desklock.c
+++ b/src/modules/conf_display/e_int_config_desklock.c
@@ -316,11 +316,7 @@ _basic_create(E_Config_Dialog *cfd, Evas *evas, 
E_Config_Dialog_Data *cfdata)
           }
         e_xkb_flag_file_get(buf, sizeof(buf), name);
         icon = e_icon_add(evas);
-        if (!e_icon_file_set(icon, buf))
-          {
-             evas_object_del(icon);
-             icon = NULL;
-          }
+        e_icon_file_set(icon, buf);
         if (cl->variant)
           snprintf(buf, sizeof(buf), "%s (%s, %s)", cl->name, cl->model, 
cl->variant);
         else
diff --git a/src/modules/conf_theme/e_int_config_xsettings.c 
b/src/modules/conf_theme/e_int_config_xsettings.c
index 08f60c5..abfb757 100644
--- a/src/modules/conf_theme/e_int_config_xsettings.c
+++ b/src/modules/conf_theme/e_int_config_xsettings.c
@@ -336,14 +336,8 @@ _icon_new(Evas *evas, const char *theme, const char *icon, 
unsigned int size)
 
    if (!(path = efreet_icon_path_find(theme, icon, size))) return NULL;
    o = e_icon_add(evas);
-   if (e_icon_file_set(o, path))
-     e_icon_fill_inside_set(o, 1);
-   else
-     {
-        evas_object_del(o);
-        o = NULL;
-     }
-
+   e_icon_file_set(o, path);
+   e_icon_fill_inside_set(o, EINA_TRUE);
    return o;
 }
 
@@ -359,8 +353,8 @@ _populate_icon_preview(E_Config_Dialog_Data *cfdata)
 
         if (!(path = efreet_icon_path_find(t, _icon_previews[i], 
PREVIEW_SIZE)))
           continue;
-        if (e_icon_file_set(cfdata->gui.icon_preview[i], path))
-          e_icon_fill_inside_set(cfdata->gui.icon_preview[i], EINA_TRUE);
+        e_icon_file_set(cfdata->gui.icon_preview[i], path);
+        e_icon_fill_inside_set(cfdata->gui.icon_preview[i], EINA_TRUE);
      }
 }
 
diff --git a/src/modules/everything/evry_util.c 
b/src/modules/everything/evry_util.c
index 0552b3a..33b59c3 100644
--- a/src/modules/everything/evry_util.c
+++ b/src/modules/everything/evry_util.c
@@ -441,11 +441,7 @@ evry_icon_theme_get(const char *icon, Evas *e)
 
    if (icon[0] == '/')
      {
-        if (!e_icon_file_set(o, icon))
-          {
-             evas_object_del(o);
-             o = NULL;
-          }
+        e_icon_file_set(o, icon);
      }
    else if (!e_util_icon_theme_set(o, icon))
      {
diff --git a/src/modules/ibar/e_mod_main.c b/src/modules/ibar/e_mod_main.c
index d5b6458..1b949de 100644
--- a/src/modules/ibar/e_mod_main.c
+++ b/src/modules/ibar/e_mod_main.c
@@ -972,11 +972,11 @@ _ibar_icon_signal_emit(IBar_Icon *ic, const char *sig, 
const char *src)
    if (ic->o_holder)
      edje_object_signal_emit(ic->o_holder, sig, src);
    if (ic->o_icon && e_icon_edje_get(ic->o_icon))
-     edje_object_signal_emit(e_icon_edje_get(ic->o_icon), sig, src);
+     e_icon_edje_emit(ic->o_icon, sig, src);
    if (ic->o_holder2)
      edje_object_signal_emit(ic->o_holder2, sig, src);
    if (ic->o_icon2 && e_icon_edje_get(ic->o_icon2))
-     edje_object_signal_emit(e_icon_edje_get(ic->o_icon2), sig, src);
+     e_icon_edje_emit(ic->o_icon2, sig, src);
 }
 
 static void
diff --git a/src/modules/ibox/e_mod_main.c b/src/modules/ibox/e_mod_main.c
index df755d7..7d0f4be 100644
--- a/src/modules/ibox/e_mod_main.c
+++ b/src/modules/ibox/e_mod_main.c
@@ -635,11 +635,11 @@ _ibox_icon_signal_emit(IBox_Icon *ic, char *sig, char 
*src)
    if (ic->o_holder)
      edje_object_signal_emit(ic->o_holder, sig, src);
    if (ic->o_icon && e_icon_edje_get(ic->o_icon))
-     edje_object_signal_emit(e_icon_edje_get(ic->o_icon), sig, src);
+     e_icon_edje_emit(ic->o_icon, sig, src);
    if (ic->o_holder2)
      edje_object_signal_emit(ic->o_holder2, sig, src);
    if (ic->o_icon2 && e_icon_edje_get(ic->o_icon2))
-     edje_object_signal_emit(e_icon_edje_get(ic->o_icon2), sig, src);
+     e_icon_edje_emit(ic->o_icon2, sig, src);
 }
 
 static Eina_List *
diff --git a/src/modules/notification/e_mod_popup.c 
b/src/modules/notification/e_mod_popup.c
index d8f5739..9d1e24f 100644
--- a/src/modules/notification/e_mod_popup.c
+++ b/src/modules/notification/e_mod_popup.c
@@ -470,12 +470,11 @@ _notification_popup_refresh(Popup_Data *popup)
              if (!popup->app_icon)
                {
                   popup->app_icon = e_icon_add(popup->e);
-                  if (!e_icon_file_set(popup->app_icon, uri ? uri->path : 
icon_path))
-                    {
-                       evas_object_del(popup->app_icon);
-                       popup->app_icon = NULL;
-                    }
-                  else e_icon_size_get(popup->app_icon, &w, &h);
+                  e_icon_file_set(popup->app_icon, uri ? uri->path : 
icon_path);
+                  // XXX: FIXME: this disallows for async to work
+                  // e_icon_size_get(popup->app_icon, &w, &h);
+                  w = width;
+                  h = height;
                }
              efreet_uri_free(uri);
           }
diff --git a/src/modules/systray/e_mod_notifier_host.c 
b/src/modules/systray/e_mod_notifier_host.c
index 81c4e59..46a2395 100644
--- a/src/modules/systray/e_mod_notifier_host.c
+++ b/src/modules/systray/e_mod_notifier_host.c
@@ -93,7 +93,11 @@ image_load(const char *name, const char *path, uint32_t 
*imgdata, int w, int h,
                   for (ext = exts; *ext; ext++)
                     {
                        snprintf(buf, sizeof(buf), "%s/%s/%ux%u/apps/%s%s", 
path, *theme, *i, *i, name, *ext);
-                       if (e_icon_file_set(image, buf)) return;
+                       if (ecore_file_exists(buf))
+                         {
+                            e_icon_file_set(image, buf);
+                            return;
+                         }
                     }
                }
           }
diff --git a/src/modules/tasks/e_mod_main.c b/src/modules/tasks/e_mod_main.c
index 5010ca6..ef75cf4 100644
--- a/src/modules/tasks/e_mod_main.c
+++ b/src/modules/tasks/e_mod_main.c
@@ -723,7 +723,7 @@ _tasks_item_signal_emit(Tasks_Item *item, char *sig, char 
*src)
 {
    if (item->o_item) edje_object_signal_emit(item->o_item, sig, src);
    if (item->o_icon && e_icon_edje_get(item->o_icon))
-     edje_object_signal_emit(e_icon_edje_get(item->o_icon), sig, src);
+     e_icon_edje_emit(item->o_icon, sig, src);
 }
 
 static Config_Item *
diff --git a/src/modules/winlist/e_winlist.c b/src/modules/winlist/e_winlist.c
index b8ac20e..d7ff140 100644
--- a/src/modules/winlist/e_winlist.c
+++ b/src/modules/winlist/e_winlist.c
@@ -773,8 +773,7 @@ _e_winlist_activate(void)
    ww = _win_selected->data;
    edje_object_signal_emit(ww->bg_object, "e,state,selected", "e");
    if (ww->icon_object && e_icon_edje_get(ww->icon_object))
-     edje_object_signal_emit(e_icon_edje_get(ww->icon_object),
-                             "e,state,selected", "e");
+     e_icon_edje_emit(ww->icon_object, "e,state,selected", "e");
 
    if ((ww->client->iconic) &&
        (e_config->winlist_list_uncover_while_selecting))
@@ -868,8 +867,7 @@ _e_winlist_deactivate(void)
    edje_object_part_text_set(_bg_object, "e.text.label", "");
    edje_object_signal_emit(ww->bg_object, "e,state,unselected", "e");
    if (ww->icon_object && e_icon_edje_get(ww->icon_object))
-     edje_object_signal_emit(e_icon_edje_get(ww->icon_object),
-                             "e,state,unselected", "e");
+     e_icon_edje_emit(ww->icon_object, "e,state,unselected", "e");
    if (!ww->client->lock_focus_in)
      evas_object_focus_set(ww->client->frame, 0);
 }

-- 


Reply via email to