e_view_client: Fix effect destroy error 03/320903/1
authorJunkyeong Kim <jk0430.kim@samsung.com>
Fri, 7 Mar 2025 09:45:13 +0000 (18:45 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Tue, 11 Mar 2025 00:58:52 +0000 (09:58 +0900)
Change-Id: I11761372d1fe8a6f5cf04d6dcaf7f1629c744173

src/bin/core/e_view_client.c

index 341d4e7e8fbc75584b3f739a06dfe3d98f2bbca3..4e1ff818ed062e5902d505cf0c7c1d08af87398d 100644 (file)
 E_View_Tree_Impl view_client_tree_impl;
 
 static void _view_client_handle_destroy(E_View *view);
-static void _view_client_effect_handle_destroy(E_View *view);
-
 
 static const E_View_Impl view_client_impl = {
      .destroy = _view_client_handle_destroy,
 };
 
-static const E_View_Impl view_client_effect_impl = {
-     .destroy = _view_client_effect_handle_destroy,
-};
-
 typedef struct _E_View_Client_Effect
 {
    E_View_Client *client;
@@ -130,25 +124,13 @@ _view_client_handle_destroy(E_View *view)
           }
      }
 
-   if (client->effect)
-     e_view_destroy(client->effect);
-
-   E_FREE(client);
-}
-
-static void
-_view_client_effect_handle_destroy(E_View *view)
-{
-   E_View_Client *client;
-
-   assert(view->impl == (E_View_Impl*)&view_client_effect_impl);
-   client = wl_container_of(view, client, effect);
-
    if (client->effect)
      {
-        evas_object_del(view->eo);
+        e_view_destroy(client->effect);
         E_FREE(client->effect);
      }
+
+   E_FREE(client);
 }
 
 static void
@@ -418,12 +400,13 @@ e_view_client_effect_object_get(E_View_Client *client)
         if (effect->eo == eo)
           return effect;
         e_view_destroy(effect);
+        E_FREE(effect);
      }
 
    effect = E_NEW(E_View, 1);
    if (!effect) return NULL;
 
-   e_view_init(effect, E_VIEW_TYPE_EDJE, (E_View_Impl *)&view_client_effect_impl, eo, client->view.parent);
+   e_view_init(effect, E_VIEW_TYPE_EDJE, NULL, eo, client->view.parent);
    client->effect = effect;
 
    return effect;