On Tue, 22 Sep 2015 10:08:46 -0700 Mike Blumenkrantz
<[email protected]> said:


the crash is back again now. same backtraces, same issue. not fixed. please put
back my refcounting as it fixes things to not crash. until you actually find
the REAL root cause... as i said before - i identified that mb->m is pointing
to junk. it obviously is being freed too soon. refcounting is a standard way to
fix things - keep them around as long as they are referenced. i hit this all
the time now (the crash).

> discomfitor pushed a commit to branch master.
> 
> http://git.enlightenment.org/core/enlightenment.git/commit/?id=2373b69c61d7d6ab74675a4facff54601831ce9a
> 
> commit 2373b69c61d7d6ab74675a4facff54601831ce9a
> Author: Mike Blumenkrantz <[email protected]>
> Date:   Tue Sep 22 12:54:10 2015 -0400
> 
>     Revert "Revert "Revert "deskmirror - fix dangling reference to mirror by
> refcounting it""" 
>     This reverts commit 6bef668a8fb37104f1e9e4bb1bb0dd379cb68ef5.
> ---
>  src/bin/e_deskmirror.c | 23 +----------------------
>  1 file changed, 1 insertion(+), 22 deletions(-)
> 
> diff --git a/src/bin/e_deskmirror.c b/src/bin/e_deskmirror.c
> index 4abc0b3..3efe066 100644
> --- a/src/bin/e_deskmirror.c
> +++ b/src/bin/e_deskmirror.c
> @@ -41,7 +41,6 @@ typedef struct Mirror
>     Evas_Object *comp_object;
>     Evas_Object *mirror;
>     int x, y, w, h;
> -   int ref;
>     Eina_Bool added : 1;
>  } Mirror;
>  
> @@ -111,20 +110,6 @@ _mirror_scale_set(Mirror *m, float sc)
>  }
>  
>  static void
> -_mirror_ref(Mirror *m)
> -{
> -   m->ref++;
> -}
> -
> -static void
> -_mirror_unref(Mirror *m)
> -{
> -   m->ref--;
> -   if (m->ref > 0) return;
> -   free(m);
> -}
> -
> -static void
>  _e_deskmirror_smart_reconfigure(E_Smart_Data *sd)
>  {
>     e_layout_freeze(sd->layout);
> @@ -352,10 +337,7 @@ _mirror_client_smart_del(Evas_Object *obj)
>          evas_object_smart_callback_del_full(mb->m->ec->frame,
> "shadow_change", _mirror_client_shadow_change, mb->frame); }
>     evas_object_del(mb->frame);
> -   mb->frame = NULL;
>     evas_object_del(mb->mirror);
> -   mb->mirror = NULL;
> -   _mirror_unref(mb->m);
>     free(mb);
>  }
>  
> @@ -492,13 +474,12 @@ _e_deskmirror_mirror_del_hash(Mirror *m)
>     evas_object_smart_callback_del_full(m->comp_object, "frame_recalc_done",
> _e_deskmirror_mirror_frame_recalc_cb, m); evas_object_event_callback_del_full
> (m->comp_object, EVAS_CALLBACK_DEL, _e_deskmirror_mirror_del_cb, m);
> evas_object_del(m->mirror);
> -   m->mirror = NULL;
>     evas_object_event_callback_del_full(m->comp_object, EVAS_CALLBACK_SHOW,
> (Evas_Object_Event_Cb)_comp_object_show, m);
> evas_object_event_callback_del_full(m->comp_object, EVAS_CALLBACK_HIDE,
> (Evas_Object_Event_Cb)_comp_object_hide, m);
> evas_object_event_callback_del_full(m->comp_object, EVAS_CALLBACK_RESTACK,
> (Evas_Object_Event_Cb)_comp_object_stack, m);
> evas_object_event_callback_del_full(m->comp_object, EVAS_CALLBACK_RESIZE,
> (Evas_Object_Event_Cb)_comp_object_configure, m);
> evas_object_event_callback_del_full(m->comp_object, EVAS_CALLBACK_MOVE,
> (Evas_Object_Event_Cb)_comp_object_configure, m);
> -   _mirror_unref(m);
> +   free(m);
>  }
>  
>  static Evas_Object *
> @@ -511,7 +492,6 @@ _mirror_client_new(Mirror *m)
>     o = evas_object_smart_add(m->sd->e, _mirror_client_smart);
>     mb = evas_object_smart_data_get(o);
>     mb->m = m;
> -   _mirror_ref(m);
>     mb->frame = edje_object_add(m->sd->e);
>     evas_object_name_set(mb->frame, "mirror_border");
>     _mirror_client_theme_setup(mb, mb->frame);
> @@ -676,7 +656,6 @@ _e_deskmirror_mirror_add(E_Smart_Data *sd, Evas_Object
> *obj) m->ec = ec;
>     m->sd = sd;
>     m->mirror = o;
> -   m->ref = 1;
>     evas_object_event_callback_add(obj, EVAS_CALLBACK_SHOW,
> (Evas_Object_Event_Cb)_comp_object_show, m); evas_object_event_callback_add
> (obj, EVAS_CALLBACK_HIDE, (Evas_Object_Event_Cb)_comp_object_hide, m);
> evas_object_event_callback_add(obj, EVAS_CALLBACK_RESTACK,
> (Evas_Object_Event_Cb)_comp_object_stack, m);
> 
> -- 
> 
> 


-- 
------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler)    [email protected]


------------------------------------------------------------------------------
Monitor Your Dynamic Infrastructure at Any Scale With Datadog!
Get real-time metrics from all of your servers, apps and tools
in one place.
SourceForge users - Click here to start your Free Trial of Datadog now!
http://pubads.g.doubleclick.net/gampad/clk?id=241902991&iu=/4140
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to