diff --git a/src/bin/e_apps.c b/src/bin/e_apps.c index 2ac9a1ff4..7ec63217f 100644 --- a/src/bin/e_apps.c +++ b/src/bin/e_apps.c @@ -626,7 +626,7 @@ e_app_launch_id_pid_find(int launch_id, pid_t pid) for (l = _e_apps_list; l; l = l->next) { E_App *a; - + a = l->data; for (ll = a->instances; ll; ll = ll->next) { diff --git a/src/bin/e_border.c b/src/bin/e_border.c index 5cd8eae99..92d686710 100644 --- a/src/bin/e_border.c +++ b/src/bin/e_border.c @@ -2107,6 +2107,7 @@ e_border_icon_add(E_Border *bd, Evas *evas) { edje_object_file_set(o, a->path, "icon"); bd->app = a; + e_object_ref(E_OBJECT(bd->app)); } } else if (bd->client.netwm.icons) @@ -2506,6 +2507,11 @@ _e_border_free(E_Border *bd) e_object_unref(E_OBJECT(bd->cur_mouse_action)); bd->cur_mouse_action = NULL; } + if (bd->app) + { + e_object_unref(E_OBJECT(bd->app)); + bd->app = NULL; + } E_FREE(bd->shape_rects); bd->shape_rects_num = 0; @@ -7178,6 +7184,9 @@ _e_border_app_change(void *data, E_App *app, E_App_Change change) bd = l->data; if (e_app_equals(bd->app, app)) { + e_object_unref(E_OBJECT(bd->app)); + bd->app = NULL; + bd->changes.icon = 1; bd->changed = 1; }