}
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;
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;
}
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;
}
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
_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);
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)
{
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);