From 40e6f35f2ef0252e3668813ab81856b779cc9d3e Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 21 Aug 2015 17:13:48 -0400 Subject: [PATCH] remove dirty callback for deskmirror clients upon creating visual if another callback triggered the creation of a deskmirror visual while the dirty callback was in place, a second mirror object would be created leading to an orphaned mirror object which retained references to the dm client and eventually resulting in a crash --- src/bin/e_deskmirror.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/bin/e_deskmirror.c b/src/bin/e_deskmirror.c index 85d130f..c9c6a3d 100644 --- a/src/bin/e_deskmirror.c +++ b/src/bin/e_deskmirror.c @@ -549,6 +549,7 @@ _comp_object_check(Mirror *m) if ((w < 2) || (h < 2)) return EINA_FALSE; m->mirror = e_comp_object_util_mirror_add(m->comp_object); if (!m->mirror) return EINA_FALSE; + evas_object_smart_callback_del(m->comp_object, "dirty", _comp_object_dirty); evas_object_name_set(m->mirror, "m->mirror"); _e_deskmirror_mirror_setup(m); return EINA_TRUE; @@ -606,10 +607,9 @@ _comp_object_configure(Mirror *m, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNU } static void -_comp_object_dirty(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) +_comp_object_dirty(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { - if (_comp_object_check(data)) - evas_object_smart_callback_del(obj, "dirty", _comp_object_dirty); + _comp_object_check(data); } static Mirror * -- 2.7.4