e_comp_object: remove "color_set" smart call 65/309565/1
authorSooChan Lim <sc1.lim@samsung.com>
Fri, 12 Apr 2024 01:21:44 +0000 (10:21 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Fri, 12 Apr 2024 06:08:30 +0000 (15:08 +0900)
e_comp_object provides the color_set signal and
move the implementation of color_set callback function
to e_desk_area

Change-Id: I635389179f5cc2694098615d23b77cc11ea7c2fa

src/bin/e_comp_object.c
src/bin/e_comp_wl.c
src/bin/e_desk_area.c

index d46ee35..6a85994 100644 (file)
@@ -3246,7 +3246,6 @@ _e_comp_smart_color_set(Evas_Object *obj, int r, int g, int b, int a)
 {
    INTERNAL_ENTRY;
    evas_object_color_set(cw->clip, r, g, b, a);
-   evas_object_smart_callback_call(obj, "color_set", NULL);
 }
 
 
index 8b3a93f..a586b5c 100644 (file)
@@ -2208,19 +2208,6 @@ _e_comp_wl_evas_cb_focus_out(void *data, Evas *evas EINA_UNUSED, Evas_Object *ob
 }
 
 static void
-_e_comp_wl_evas_cb_color_set(void *data, Evas_Object *obj, void *event EINA_UNUSED)
-{
-   E_Client *ec;
-   int a = 0;
-
-   if (!(ec = data)) return;
-   evas_object_color_get(obj, NULL, NULL, NULL, &a);
-   if (ec->netwm.opacity == a) return;
-   ec->netwm.opacity = a;
-   ec->netwm.opacity_changed = EINA_TRUE;
-}
-
-static void
 _e_comp_wl_buffer_damage_set(E_Comp_Wl_Buffer *buffer, Eina_List *buffer_damages)
 {
    Eina_Rectangle *damage_rect = NULL;
@@ -2286,9 +2273,6 @@ _e_comp_wl_client_evas_init(E_Client *ec)
    evas_object_event_callback_priority_add(ec->frame, EVAS_CALLBACK_FOCUS_IN,    EVAS_CALLBACK_PRIORITY_AFTER, _e_comp_wl_evas_cb_focus_in,    ec);
    evas_object_event_callback_priority_add(ec->frame, EVAS_CALLBACK_FOCUS_OUT,   EVAS_CALLBACK_PRIORITY_AFTER, _e_comp_wl_evas_cb_focus_out,   ec);
 
-   /* setup ping callback */
-   evas_object_smart_callback_add(ec->frame, "color_set",      _e_comp_wl_evas_cb_color_set,      ec);
-
    ec->comp_data->evas_init = EINA_TRUE;
 }
 
@@ -2316,8 +2300,6 @@ _e_comp_wl_client_evas_deinit(E_Client *ec)
    evas_object_event_callback_del(ec->frame, EVAS_CALLBACK_FOCUS_IN,  _e_comp_wl_evas_cb_focus_in);
    evas_object_event_callback_del(ec->frame, EVAS_CALLBACK_FOCUS_OUT, _e_comp_wl_evas_cb_focus_out);
 
-   evas_object_smart_callback_del(ec->frame, "color_set",      _e_comp_wl_evas_cb_color_set);
-
    ec->comp_data->evas_init = EINA_FALSE;
 }
 
index d431d09..789a460 100644 (file)
@@ -101,6 +101,7 @@ struct _E_Desk_Area_Private_Client
    struct wl_listener comp_object_stack_above;
    struct wl_listener comp_object_stack_below;
    struct wl_listener comp_object_resize;
+   struct wl_listener comp_object_color_set;
 };
 
 struct _E_Desk_Area_Smart_Data
@@ -840,6 +841,7 @@ _e_desk_area_private_client_del(E_Desk_Area_Private_Client *eda_client)
    _e_desk_area_client_data_del(eda, ec);
 
    // wl_list remove
+   wl_list_remove(&eda_client->comp_object_color_set.link);
    wl_list_remove(&eda_client->comp_object_resize.link);
    wl_list_remove(&eda_client->comp_object_stack_below.link);
    wl_list_remove(&eda_client->comp_object_stack_above.link);
@@ -2260,6 +2262,23 @@ _desk_area_cb_comp_object_resize(struct wl_listener *listener, void *data)
      e_comp_wl_subsurface_bg_rectangle_map_apply(ec);
 }
 
+static void
+_desk_area_cb_comp_object_color_set(struct wl_listener *listener, void *data)
+{
+   E_Desk_Area_Private_Client *eda_client;
+   E_Client *ec;
+   int a = 0;
+
+   eda_client = wl_container_of(listener, eda_client, comp_object_color_set);
+   ec = eda_client->ec;
+
+   evas_object_color_get(ec->frame, NULL, NULL, NULL, &a);
+   if (ec->netwm.opacity == a) return;
+
+   ec->netwm.opacity = a;
+   ec->netwm.opacity_changed = EINA_TRUE;
+}
+
 EINTERN E_Desk_Area *
 e_desk_area_new(E_Desk *desk, int id, int x, int y, int w, int h, E_Desk_Area_Layer eda_layer)
 {
@@ -2670,9 +2689,10 @@ e_desk_area_ec_add(E_Desk_Area *eda, E_Client *ec)
    e_comp_object_stack_above_listener_add(ec->frame, &eda_client->comp_object_stack_above);
    eda_client->comp_object_stack_below.notify = _desk_area_cb_comp_object_stack_below;
    e_comp_object_stack_below_listener_add(ec->frame, &eda_client->comp_object_stack_below);
-
    eda_client->comp_object_resize.notify = _desk_area_cb_comp_object_resize;
    e_comp_object_resize_listener_add(ec->frame, &eda_client->comp_object_resize);
+   eda_client->comp_object_color_set.notify = _desk_area_cb_comp_object_color_set;
+   e_comp_object_color_set_listener_add(ec->frame, &eda_client->comp_object_color_set);
 
    _e_desk_area_client_data_set(eda, ec);
    _e_desk_area_smart_client_add(eda->smart_obj, ec);