e_comp_wl: add state commit signal 93/296293/1
authorChangyeon Lee <cyeon.lee@samsung.com>
Thu, 6 Jul 2023 05:56:50 +0000 (14:56 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Tue, 25 Jul 2023 04:45:13 +0000 (13:45 +0900)
Change-Id: I306a2357f7e4ca394a77c5721269ec264fa35112

src/bin/e_comp_wl.c
src/bin/e_comp_wl.h
src/bin/e_comp_wl_rsm.c

index 0c8c281..02da8ad 100644 (file)
@@ -3106,6 +3106,8 @@ _e_comp_wl_surface_state_commit(E_Client *ec, E_Comp_Wl_Surface_State *state)
 
    state->buffer_viewport.changed = 0;
 
+   wl_signal_emit(&cdata->state_commit_signal, &cdata->surface);
+
    if (buffer &&
        ec->exp_iconify.buffer_flush &&
        e_policy_visibility_client_is_iconic(ec))
index eca86cc..6327498 100644 (file)
@@ -534,6 +534,8 @@ struct _E_Comp_Wl_Client_Data
    struct wl_list pointer_constraints;
    GMutex last_device_kbd_mutex;
    GMutex surface_mutex;
+
+   struct wl_signal state_commit_signal;
 };
 
 struct _E_Comp_Wl_Output
index 0a35f09..1ae81b8 100644 (file)
@@ -2985,10 +2985,9 @@ _e_comp_wl_remote_surface_state_commit(E_Client *ec, E_Comp_Wl_Surface_State *st
    int x = 0, y = 0, sx = 0, sy = 0;
    E_Comp_Wl_Buffer *buffer;
    Eina_List *l, *ll;
+   E_Comp_Wl_Client_Data *cdata = e_client_cdata_get(ec);
    E_Comp_Wl_Buffer_Viewport *vp = &ec->comp_data->scaler.buffer_viewport;
 
-   if (e_object_is_del(E_OBJECT(ec))) return;
-
    if (vp->buffer.transform != state->buffer_viewport.buffer.transform)
      {
         int transform_change = (4 + state->buffer_viewport.buffer.transform - vp->buffer.transform) & 0x3;
@@ -3047,6 +3046,8 @@ _e_comp_wl_remote_surface_state_commit(E_Client *ec, E_Comp_Wl_Surface_State *st
 
    state->buffer_viewport.changed = 0;
 
+   wl_signal_emit(&cdata->state_commit_signal, &cdata->surface);
+
    /* send remote buffer to remote surfaces */
    buffer = e_pixmap_resource_get(ec->pixmap);
    if (buffer)