watch dirty smart cb for currently unredirected clients in deskmirror

these clients will be unable to create a comp mirror until this callback
is triggered

fix T2585
This commit is contained in:
Mike Blumenkrantz 2015-08-20 15:56:34 -04:00
parent 41f4bbf663
commit 72377fd255
1 changed files with 9 additions and 0 deletions

View File

@ -603,6 +603,13 @@ _comp_object_configure(Mirror *m, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNU
_e_deskmirror_mirror_reconfigure(m);
}
static void
_comp_object_dirty(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
{
if (_comp_object_check(data))
evas_object_smart_callback_del(obj, "dirty", _comp_object_dirty);
}
static Mirror *
_e_deskmirror_mirror_add(E_Smart_Data *sd, Evas_Object *obj)
{
@ -653,6 +660,8 @@ _e_deskmirror_mirror_add(E_Smart_Data *sd, Evas_Object *obj)
evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, (Evas_Object_Event_Cb)_comp_object_configure, m);
evas_object_event_callback_add(obj, EVAS_CALLBACK_MOVE, (Evas_Object_Event_Cb)_comp_object_configure, m);
evas_object_smart_callback_add(obj, "frame_recalc_done", _e_deskmirror_mirror_frame_recalc_cb, m);
if (!ec->redirected)
evas_object_smart_callback_add(obj, "dirty", _comp_object_dirty, m);
sd->mirrors = eina_inlist_append(sd->mirrors, EINA_INLIST_GET(m));
eina_hash_add(sd->mirror_hash, &obj, m);
_e_deskmirror_mirror_setup(m);