raster pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=b36fa0a95c7584d0d546759f9e29eb2196f925e0

commit b36fa0a95c7584d0d546759f9e29eb2196f925e0
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date:   Wed Nov 4 10:09:10 2020 +0000

    comp obj - fix frame mirror resize handling
    
    i ooopsed and used the wrong obj and didnt del the cb when not needed
    anymore. led to errors and slowness later.
---
 src/bin/e_comp_object.c | 51 ++++++++++++++++++++++++++-----------------------
 1 file changed, 27 insertions(+), 24 deletions(-)

diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c
index 59d23e4c6..a30af91e1 100644
--- a/src/bin/e_comp_object.c
+++ b/src/bin/e_comp_object.c
@@ -4279,28 +4279,6 @@ e_comp_object_agent_add(Evas_Object *obj)
    return o;
 }
 
-static void
-_e_comp_object_frame_mirror_del_cb(void *data EINA_UNUSED, Evas *e 
EINA_UNUSED, Evas_Object *obj, void *info EINA_UNUSED)
-{
-   Evas_Object *o;
-
-   o = evas_object_data_get(obj, "client");
-   if (o) evas_object_del(o);
-   evas_object_data_del(obj, "client");
-
-   o = evas_object_data_get(obj, "icon");
-   if (o) evas_object_del(o);
-   evas_object_data_del(obj, "icon");
-
-   o = evas_object_data_get(obj, "frame");
-   if (o) evas_object_del(o);
-   evas_object_data_del(obj, "frame");
-
-   o = evas_object_data_get(obj, "zoomap");
-   if (o) evas_object_del(o);
-   evas_object_data_del(obj, "zoomap");
-}
-
 static void
 _e_comp_object_frame_mirror_resize_cb(void *data EINA_UNUSED, Evas *e 
EINA_UNUSED, Evas_Object *obj, void *info EINA_UNUSED)
 {
@@ -4338,12 +4316,37 @@ _e_comp_object_frame_mirror_src_resize_cb(void *data, 
Evas *e EINA_UNUSED, Evas_
    Evas_Object *o_zoomap;
    E_Client *ec = evas_object_data_get(o, "ec");
    if (!ec) return;
-   e_zoomap_child_resize(o_zoomap, ec->w, ec->h);
    o_zoomap = evas_object_data_get(obj, "zoomap");
    if (!o_zoomap) return;
    e_zoomap_child_resize(o_zoomap, ec->w, ec->h);
 }
 
+static void
+_e_comp_object_frame_mirror_del_cb(void *data EINA_UNUSED, Evas *e 
EINA_UNUSED, Evas_Object *obj, void *info EINA_UNUSED)
+{
+   E_Client *ec;
+   Evas_Object *o;
+
+   ec = evas_object_data_get(obj, "ec");
+   if (ec)
+     evas_object_event_callback_del_full(ec->frame, EVAS_CALLBACK_RESIZE, 
_e_comp_object_frame_mirror_src_resize_cb, obj);
+   o = evas_object_data_get(obj, "client");
+   if (o) evas_object_del(o);
+   evas_object_data_del(obj, "client");
+
+   o = evas_object_data_get(obj, "icon");
+   if (o) evas_object_del(o);
+   evas_object_data_del(obj, "icon");
+
+   o = evas_object_data_get(obj, "frame");
+   if (o) evas_object_del(o);
+   evas_object_data_del(obj, "frame");
+
+   o = evas_object_data_get(obj, "zoomap");
+   if (o) evas_object_del(o);
+   evas_object_data_del(obj, "zoomap");
+}
+
 E_API Evas_Object *
 e_comp_object_util_frame_mirror_add(Evas_Object *obj)
 {
@@ -4405,7 +4408,7 @@ e_comp_object_util_frame_mirror_add(Evas_Object *obj)
                                   _e_comp_object_frame_mirror_del_cb, NULL);
    evas_object_event_callback_add(o_sh, EVAS_CALLBACK_RESIZE,
                                   _e_comp_object_frame_mirror_resize_cb, NULL);
-   evas_object_event_callback_add(cw->obj, EVAS_CALLBACK_RESIZE,
+   evas_object_event_callback_add(cw->ec->frame, EVAS_CALLBACK_RESIZE,
                                   _e_comp_object_frame_mirror_src_resize_cb, 
o_sh);
    if (o_zoomap)
      e_zoomap_child_resize(o_zoomap, cw->ec->w, cw->ec->h);

-- 


Reply via email to