e_comp_object: check smart object before get smart data 19/218219/2
authorChangyeon Lee <cyeon.lee@samsung.com>
Wed, 20 Nov 2019 08:53:29 +0000 (17:53 +0900)
committerSooChan Lim <sc1.lim@samsung.com>
Wed, 20 Nov 2019 10:33:03 +0000 (10:33 +0000)
Change-Id: If7939de60334a7e04f0d149e8541609813365b43

src/bin/e_comp_object.c

index 223601d64b7a682ad90e07676b00b5be25ab7097..d2550ded45e49bfd9e003c31ff2930b55e531c4d 100644 (file)
@@ -555,7 +555,10 @@ _e_comp_object_layers_add(E_Comp_Object *cw, E_Comp_Object *above, E_Comp_Object
     * will return NULL for fake layers (eg. wayland)
     */
    if (e_comp->layers[cw->layer].obj)
-     layer_cw = evas_object_smart_data_get(e_comp->layers[cw->layer].obj);
+     {
+        if (evas_object_smart_smart_get(e_comp->layers[cw->layer].obj))
+          layer_cw = evas_object_smart_data_get(e_comp->layers[cw->layer].obj);
+     }
    if (layer_cw == cw) layer_cw = NULL;
    if (above)
     e_comp->layers[above->layer].clients = eina_inlist_append_relative(e_comp->layers[above->layer].clients, EINA_INLIST_GET(cw->ec), EINA_INLIST_GET(above->ec));
@@ -1749,9 +1752,12 @@ _e_comp_object_raise(Evas_Object *obj)
 {
    evas_object_raise(obj);
 
-   E_Client *ec = e_comp_object_client_get(obj);
-   if (ec)
-     _e_comp_object_hook_call(E_COMP_OBJECT_HOOK_RESTACK, ec);
+   if (evas_object_smart_smart_get(obj))
+     {
+        E_Client *ec = e_comp_object_client_get(obj);
+        if (ec)
+          _e_comp_object_hook_call(E_COMP_OBJECT_HOOK_RESTACK, ec);
+     }
 }
 
 static void
@@ -1759,9 +1765,12 @@ _e_comp_object_lower(Evas_Object *obj)
 {
    evas_object_lower(obj);
 
-   E_Client *ec = e_comp_object_client_get(obj);
-   if (ec)
-     _e_comp_object_hook_call(E_COMP_OBJECT_HOOK_RESTACK, ec);
+   if (evas_object_smart_smart_get(obj))
+     {
+        E_Client *ec = e_comp_object_client_get(obj);
+        if (ec)
+          _e_comp_object_hook_call(E_COMP_OBJECT_HOOK_RESTACK, ec);
+     }
 }
 
 static void
@@ -1769,9 +1778,12 @@ _e_comp_object_stack_above(Evas_Object *obj, Evas_Object *target)
 {
    evas_object_stack_above(obj, target);
 
-   E_Client *ec = e_comp_object_client_get(obj);
-   if (ec)
-     _e_comp_object_hook_call(E_COMP_OBJECT_HOOK_RESTACK, ec);
+   if (evas_object_smart_smart_get(obj))
+     {
+        E_Client *ec = e_comp_object_client_get(obj);
+        if (ec)
+          _e_comp_object_hook_call(E_COMP_OBJECT_HOOK_RESTACK, ec);
+     }
 }
 
 static void
@@ -1779,9 +1791,12 @@ _e_comp_object_stack_below(Evas_Object *obj, Evas_Object *target)
 {
    evas_object_stack_below(obj, target);
 
-   E_Client *ec = e_comp_object_client_get(obj);
-   if (ec)
-     _e_comp_object_hook_call(E_COMP_OBJECT_HOOK_RESTACK, ec);
+   if (evas_object_smart_smart_get(obj))
+     {
+        E_Client *ec = e_comp_object_client_get(obj);
+        if (ec)
+          _e_comp_object_hook_call(E_COMP_OBJECT_HOOK_RESTACK, ec);
+     }
 }
 
 static Eina_Bool
@@ -1980,8 +1995,10 @@ _e_comp_intercept_stack_below(void *data, Evas_Object *obj, Evas_Object *below)
 
    TRACE_DS_BEGIN(COMP:INTERCEPT STACK BELOW);
    _e_comp_intercept_stack_helper(data, below, _e_comp_object_stack_below);
-   _e_comp_object_transform_obj_stack_update(obj);
-   _e_comp_object_transform_obj_stack_update(below);
+   if (evas_object_smart_smart_get(obj))
+     _e_comp_object_transform_obj_stack_update(obj);
+   if (evas_object_smart_smart_get(below))
+     _e_comp_object_transform_obj_stack_update(below);
    TRACE_DS_END();
 }
 
@@ -2060,10 +2077,13 @@ _e_comp_intercept_raise(void *data, Evas_Object *obj)
              o && o != e_comp->layers[cw->layer - 1].obj;
              op = o, o = evas_object_below_get(o))
           {
-             E_Client *ec;
+             if (evas_object_smart_smart_get(o))
+               {
+                  E_Client *ec;
 
-             ec = e_comp_object_client_get(o);
-             if (ec && (!ec->override)) break;
+                  ec = e_comp_object_client_get(o);
+                  if (ec && (!ec->override)) break;
+               }
           }
         _e_comp_object_stack_below(obj, op);
         e_client_focus_defer_set(cw->ec);