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

Reply via email to