compositor: Add e_surface_{map,unmap}_listener_add 34/313434/1
authorSeunghun Lee <shiin.lee@samsung.com>
Mon, 17 Jun 2024 03:13:45 +0000 (12:13 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Wed, 26 Jun 2024 00:34:33 +0000 (09:34 +0900)
Change-Id: Ib2c725e77b2b4128dd15eb8f08b29b2dc0b5c886

src/bin/server/e_compositor.c
src/bin/server/e_compositor_intern.h

index 652204b..d40ec9d 100644 (file)
@@ -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)
 {
index 22f41c5..113dcd4 100644 (file)
@@ -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);