e_mod_effect: call e_comp_client_override_add before eff_ref 91/234391/2
authorChangyeon Lee <cyeon.lee@samsung.com>
Mon, 13 Apr 2020 09:14:49 +0000 (18:14 +0900)
committerChangyeon Lee <cyeon.lee@samsung.com>
Tue, 26 May 2020 07:40:36 +0000 (16:40 +0900)
e_comp_object_native_usable_get is valid after e_comp_client_override_add

Change-Id: I28c10971ec9c07772b71ec92311e11fd1c3f0912

src/e_mod_effect.c

index 76ec16b..d4cb5b9 100644 (file)
@@ -950,11 +950,17 @@ _eff_cb_visible(void *data, Evas_Object *obj, const char *signal)
      }
 
    if (evas_object_visible_get(obj)) return EINA_FALSE;
-   if (!_eff_ref(ec)) return EINA_FALSE;
 
-   _eff_stack_update();
    e_comp_client_override_add(ec);
 
+   if (!_eff_ref(ec))
+     {
+        e_comp_client_override_del(ec);
+        return EINA_FALSE;
+     }
+
+   _eff_stack_update();
+
    EFFINF("SET EXTRA_ANIMATING...", ec);
    ec->extra_animating = EINA_TRUE;
 
@@ -1045,10 +1051,14 @@ _eff_cb_hidden(void *data, Evas_Object *obj, const char *signal)
    v2 = _eff_visibility_stack_check(ec, _eff->stack.cur);
    if ((!v1) && (!v2)) return EINA_FALSE;
 
-   if (!_eff_ref(ec)) return EINA_FALSE;
-
    e_comp_client_override_add(ec);
 
+   if (!_eff_ref(ec))
+     {
+        e_comp_client_override_del(ec);
+        return EINA_FALSE;
+     }
+
    // check if client was lowered
    below = evas_object_below_get(obj);
    map_ly = e_comp_canvas_layer_map(evas_object_layer_get(obj));
@@ -1170,10 +1180,14 @@ _eff_cb_uniconify(void *data, Evas_Object *obj, const char *signal)
         if ((v2) && (ec->visibility.obscured == E_VISIBILITY_UNOBSCURED)) return EINA_FALSE;
         if ((!v2) && (ec->visibility.obscured != E_VISIBILITY_UNOBSCURED)) return EINA_FALSE;
 
-        if (!_eff_ref(ec)) return EINA_FALSE;
-
         e_comp_client_override_add(ec);
 
+        if (!_eff_ref(ec))
+          {
+             e_comp_client_override_del(ec);
+             return EINA_FALSE;
+          }
+
         _eff_object_setup(ec, group);
         _eff_object_under_setup(ec);
 
@@ -1256,10 +1270,14 @@ _eff_cb_iconify(void *data, Evas_Object *obj, const char *signal)
    if ((v2) && (ec->visibility.obscured == E_VISIBILITY_UNOBSCURED)) return EINA_FALSE;
    if ((!v2) && (ec->visibility.obscured != E_VISIBILITY_UNOBSCURED)) return EINA_FALSE;
 
-   if (!_eff_ref(ec)) return EINA_FALSE;
-
    e_comp_client_override_add(ec);
 
+   if (!_eff_ref(ec))
+     {
+        e_comp_client_override_del(ec);
+        return EINA_FALSE;
+     }
+
    _eff_object_setup(ec, group);
    _eff_object_under_setup(ec);
 
@@ -1424,13 +1442,18 @@ _eff_cb_restack(void *data, Evas_Object *obj, const char *signal)
              _eff_object_layer_down(ec);
              return EINA_FALSE;
           }
-        if (!_eff_ref(ec)) return EINA_FALSE;
+
+        e_comp_client_override_add(ec);
+
+        if (!_eff_ref(ec))
+          {
+             e_comp_client_override_del(ec);
+             return EINA_FALSE;
+          }
 
         EFFINF("SET EXTRA_ANIMATING...", ec);
         ec->extra_animating = EINA_TRUE;
 
-        e_comp_client_override_add(ec);
-
         _eff_object_setup(ec, group);
         _eff_object_under_setup(ec);
 
@@ -1459,7 +1482,14 @@ _eff_cb_restack(void *data, Evas_Object *obj, const char *signal)
              _eff_object_layer_down(ec);
              return EINA_FALSE;
           }
-        if (!_eff_ref(ec)) return EINA_FALSE;
+
+        e_comp_client_override_add(ec);
+
+        if (!_eff_ref(ec))
+          {
+             e_comp_client_override_del(ec);
+             return EINA_FALSE;
+          }
 
         if (ec_home)
           {
@@ -1480,8 +1510,6 @@ _eff_cb_restack(void *data, Evas_Object *obj, const char *signal)
                }
           }
 
-        e_comp_client_override_add(ec);
-
         _eff_object_layer_up(ec);
 
         _eff_object_setup(ec, group);
@@ -1509,10 +1537,14 @@ _eff_cb_restack(void *data, Evas_Object *obj, const char *signal)
      }
    else if (!e_util_strcmp(emission, "e,action,restack,finish"))
      {
-        if (!_eff_ref(ec)) return EINA_FALSE;
-
         e_comp_client_override_add(ec);
 
+        if (!_eff_ref(ec))
+          {
+             e_comp_client_override_del(ec);
+             return EINA_FALSE;
+          }
+
         _eff_object_setup(ec, group);
         _eff_object_under_setup(ec);