From: Seunghun Lee Date: Mon, 17 Jun 2024 03:13:45 +0000 (+0900) Subject: compositor: Add e_surface_{map,unmap}_listener_add X-Git-Tag: accepted/tizen/unified/20240626.155314~6 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a556c38833fcba60585bdea9898d596d388cb82e;p=platform%2Fupstream%2Fenlightenment.git compositor: Add e_surface_{map,unmap}_listener_add Change-Id: Ib2c725e77b2b4128dd15eb8f08b29b2dc0b5c886 --- diff --git a/src/bin/server/e_compositor.c b/src/bin/server/e_compositor.c index 652204b..d40ec9d 100644 --- a/src/bin/server/e_compositor.c +++ b/src/bin/server/e_compositor.c @@ -69,6 +69,7 @@ struct _E_Subsurface E_Subsurface_View view; E_Surface *surface; + E_Surface *parent; struct ds_subsurface *ds_subsurface; struct wl_listener destroy; @@ -305,6 +306,24 @@ e_surface_parent_destroy_listener_add(E_Surface *surface, struct wl_listener *li wl_signal_add(&surface->events.parent_destroy, listener); } +EINTERN void +e_surface_commit_listener_add(E_Surface *surface, struct wl_listener *listener) +{ + wl_signal_add(&surface->events.commit, listener); +} + +EINTERN void +e_surface_map_listener_add(E_Surface *surface, struct wl_listener *listener) +{ + ds_surface_add_map_listener(surface->ds_surface, listener); +} + +EINTERN void +e_surface_unmap_listener_add(E_Surface *surface, struct wl_listener *listener) +{ + ds_surface_add_unmap_listener(surface->ds_surface, listener); +} + EINTERN Eina_Bool e_surface_viewporter_resource_set(E_Surface *surface, struct wl_resource *viewporter) { @@ -1411,6 +1430,7 @@ _e_subsurface_create(struct ds_subsurface *ds_subsurface, E_Surface *parent_surf sub->surface_destroy.notify = _e_subsurface_cb_surface_destroy; wl_signal_add(&surface->base.destroy_signal, &sub->surface_destroy); + sub->parent = parent_surface; sub->parent_surface_destroy.notify = _e_subsurface_cb_parent_surface_destroy; wl_signal_add(&parent_surface->base.destroy_signal, &sub->parent_surface_destroy); @@ -1659,6 +1679,8 @@ _e_subsurface_cb_parent_surface_destroy(struct wl_listener *listener, void *data wl_list_remove(&sub->parent_surface_destroy.link); wl_list_init(&sub->parent_surface_destroy.link); + sub->parent = NULL; + e_comp_wl_client_subsurface_parent_unset(sub->surface->ec); } @@ -1788,6 +1810,12 @@ e_subsurface_coord_get(E_Subsurface *subsurface, int *x, int *y) *y = ret_y; } +EINTERN E_Surface * +e_subsurface_parent_get(E_Subsurface *subsurface) +{ + return subsurface->parent; +} + EINTERN void e_subsurface_view_reposition_listener_add(E_Subsurface *subsurface, struct wl_listener *listener) { diff --git a/src/bin/server/e_compositor_intern.h b/src/bin/server/e_compositor_intern.h index 22f41c5..113dcd4 100644 --- a/src/bin/server/e_compositor_intern.h +++ b/src/bin/server/e_compositor_intern.h @@ -15,6 +15,9 @@ EINTERN E_Client *e_compositor_util_client_from_surface_resource(struct wl_resou EINTERN E_Surface *e_surface_from_resource(struct wl_resource *surface_resource); EINTERN void e_surface_destroy_listener_add(E_Surface *surface, struct wl_listener *listener); EINTERN void e_surface_parent_destroy_listener_add(E_Surface *surface, struct wl_listener *listener); +EINTERN void e_surface_commit_listener_add(E_Surface *surface, struct wl_listener *listener); +EINTERN void e_surface_map_listener_add(E_Surface *surface, struct wl_listener *listener); +EINTERN void e_surface_unmap_listener_add(E_Surface *surface, struct wl_listener *listener); EINTERN struct wl_listener *e_surface_destroy_listener_get(E_Surface *surface, wl_notify_func_t notify); EINTERN Eina_Bool e_surface_role_set(E_Surface *surface, const char *role_name, struct wl_resource *error_resource, uint32_t error_code); EINTERN struct wl_resource *e_surface_viewporter_resource_get(E_Surface *surface); @@ -32,8 +35,12 @@ EINTERN E_Subsurface *e_subsurface_from_ec(E_Client *ec); 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); EINTERN void e_subsurface_cached_listener_add(E_Subsurface *subsurface, struct wl_listener *listener); -EINTERN void e_subsurface_sync_commit_pre_listener_add(E_Subsurface *subsurface, struct wl_listener *listener); -EINTERN void e_subsurface_desync_commit_pre_listener_add(E_Subsurface *subsurface, struct wl_listener *listener); +EINTERN void e_subsurface_sync_precommit_listener_add(E_Subsurface *subsurface, struct wl_listener *listener); +EINTERN void e_subsurface_desync_precommit_listener_add(E_Subsurface *subsurface, struct wl_listener *listener); +EINTERN void e_subsurface_stand_alone_mode_set(E_Subsurface *sub); +EINTERN void e_subsurface_stand_alone_mode_unset(E_Subsurface *sub); +EINTERN void e_subsurface_coord_get(E_Subsurface *subsurface, int *x, int *y); +EINTERN E_Surface *e_subsurface_parent_get(E_Subsurface *subsurface); EINTERN void e_subsurface_view_reposition_listener_add(E_Subsurface *subsurface, struct wl_listener *listener); EINTERN void e_subsurface_view_position_set(E_Subsurface *subsurface, int x, int y);