On Fri, 21 Aug 2015 13:43:08 -0700 Mike Blumenkrantz <zm...@osg.samsung.com> said:
> discomfitor pushed a commit to branch master. > > http://git.enlightenment.org/core/enlightenment.git/commit/?id=d70667a0678b97ea74733b15017596085dc36330 > > commit d70667a0678b97ea74733b15017596085dc36330 > Author: Mike Blumenkrantz <zm...@osg.samsung.com> > Date: Fri Aug 21 13:10:06 2015 -0400 > > don't watch dirty smart cb for desmirror clients with unusable pixmaps > > this seems to fix an extremely rare issue related to both deskmirror > artifacts and crashes in deskmirror during restart; I was only able to > reproduce the crash twice in the span of over an hour of testing and it > seemed to disappear after this change the reason i put the refs/unrefs there was i got the bug 100% of the time. every restart was a seg. mb->m was pointing to garbage. mirror had been deleted while mb's still pointed to it. refs/unrefs are not a hack. they are not some "oh well we'll ignore the bug" they are a mechanism to keep track of references and only free when references are gone. it's one of the core bits of eo and many other object systems to do this. they are actually a mechanism to track object existence. :) > --- > src/bin/e_deskmirror.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/src/bin/e_deskmirror.c b/src/bin/e_deskmirror.c > index fee6f30..85d130f 100644 > --- a/src/bin/e_deskmirror.c > +++ b/src/bin/e_deskmirror.c > @@ -662,7 +662,7 @@ _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) && (!ec->new_client)) > + if ((!ec->redirected) && (!ec->new_client) && e_pixmap_usable_get > (ec->pixmap)) 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); > > -- > > -- ------------- Codito, ergo sum - "I code, therefore I am" -------------- The Rasterman (Carsten Haitzler) ras...@rasterman.com ------------------------------------------------------------------------------ _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel