struct wl_listener parent_surface_destroy;
struct wl_listener cached;
struct wl_listener request_move;
+
+ struct
+ {
+ struct wl_signal destroy;
+ } events;
};
struct _E_Frame_Callback
return NULL;
}
+ wl_signal_init(&sub->events.destroy);
+
sub->ds_subsurface = ds_subsurface;
sub->destroy.notify = _e_subsurface_cb_destroy;
wl_signal_add(&ds_subsurface->events.destroy, &sub->destroy);
_e_subsurface_destroy(E_Subsurface *sub)
{
ELOGF("SUBSURFACE", "Destroy", sub->surface->ec);
+
+ wl_signal_emit(&sub->events.destroy, sub);
+
e_comp_wl_client_subsurface_finish(sub->surface->ec);
wl_list_remove(&sub->request_move.link);
wl_list_remove(&sub->parent_surface_destroy.link);
return subsurface;
}
+
+EINTERN void
+e_subsurface_destroy_listener_add(E_Subsurface *subsurface, struct wl_listener *listener)
+{
+ EINA_SAFETY_ON_NULL_RETURN(subsurface);
+ wl_signal_add(&subsurface->events.destroy, listener);
+}
\ No newline at end of file
EINTERN E_Subsurface *e_subsurface_from_resource(struct wl_resource *resource);
EINTERN E_Subsurface *e_subsurface_from_surface(E_Surface *surface);
EINTERN Eina_Bool e_subsurface_position_set(E_Subsurface *subsurface, int x, int y);
+EINTERN void e_subsurface_destroy_listener_add(E_Subsurface *subsurface, struct wl_listener *listener);
#endif