e_compositor: Add e_subsurface_cached_listener_add 30/313430/1
authorSeunghun Lee <shiin.lee@samsung.com>
Tue, 21 May 2024 06:00:25 +0000 (15:00 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Wed, 26 Jun 2024 00:34:33 +0000 (09:34 +0900)
Change-Id: If08767a2435d3d892477e2dfc61bb78cece199f3

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

index 9de382e..08e0e15 100644 (file)
@@ -67,6 +67,7 @@ struct _E_Subsurface
    struct
      {
         struct wl_signal destroy;
+        struct wl_signal cached;
      } events;
 };
 
@@ -1349,6 +1350,7 @@ _e_subsurface_create(struct ds_subsurface *ds_subsurface, E_Surface *parent_surf
      }
 
    wl_signal_init(&sub->events.destroy);
+   wl_signal_init(&sub->events.cached);
 
    sub->ds_subsurface = ds_subsurface;
    sub->destroy.notify = _e_subsurface_cb_destroy;
@@ -1515,6 +1517,8 @@ _e_subsurface_cb_cached(struct wl_listener *listener, void *data)
 
    sub = wl_container_of(listener, sub, cached);
 
+   wl_signal_emit(&sub->events.cached, sub);
+
    e_presentation_time_container_feedback_discard(&sub->base.cached.presentation_container);
    e_presentation_time_container_feedback_merge(&sub->base.cached.presentation_container,
                                                 &sub->surface->base.pending.presentation_container);
@@ -1636,4 +1640,11 @@ e_subsurface_destroy_listener_add(E_Subsurface *subsurface, struct wl_listener *
 {
    EINA_SAFETY_ON_NULL_RETURN(subsurface);
    wl_signal_add(&subsurface->events.destroy, listener);
+}
+
+EINTERN void
+e_subsurface_cached_listener_add(E_Subsurface *subsurface, struct wl_listener *listener)
+{
+   EINA_SAFETY_ON_NULL_RETURN(subsurface);
+   wl_signal_add(&subsurface->events.cached, listener);
 }
\ No newline at end of file
index 1c539fe..4fba049 100644 (file)
@@ -30,5 +30,6 @@ 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);
+EINTERN void e_subsurface_cached_listener_add(E_Subsurface *subsurface, struct wl_listener *listener);
 
 #endif