discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=a7f708d568b9d8b9e67f3aba60c102199e539ab1

commit a7f708d568b9d8b9e67f3aba60c102199e539ab1
Author: Mike Blumenkrantz <[email protected]>
Date:   Fri Mar 10 15:57:15 2017 -0500

    add wl client flag to indicate status of xdg6 pre-buffer configure
    
    ensure that initial configure is not sent more than once
    
    ref T5044
---
 src/bin/e_comp_wl.c                 | 2 +-
 src/bin/e_comp_wl.h                 | 1 +
 src/modules/wl_desktop_shell/xdg6.c | 4 ++++
 3 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index ef5dabe..9ed79ea 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -1499,7 +1499,7 @@ _e_comp_wl_surface_state_commit(E_Client *ec, 
E_Comp_Wl_Surface_State *state)
              ec->want_focus |= ec->icccm.accepts_focus && (!ec->override);
           }
      }
-   else if (first && ec->comp_data->shell.surface)
+   else if (ec->comp_data->need_xdg6_configure && ec->comp_data->shell.surface)
      _e_comp_wl_configure_send(ec, 0);
 
    state->sx = 0;
diff --git a/src/bin/e_comp_wl.h b/src/bin/e_comp_wl.h
index 41e9b51..cbb246f 100644
--- a/src/bin/e_comp_wl.h
+++ b/src/bin/e_comp_wl.h
@@ -356,6 +356,7 @@ struct _E_Comp_Wl_Client_Data
    Eina_Bool is_xdg_surface : 1;
    Eina_Bool grab : 1;
    Eina_Bool buffer_commit : 1;
+   Eina_Bool need_xdg6_configure : 1;
 };
 
 struct _E_Comp_Wl_Output
diff --git a/src/modules/wl_desktop_shell/xdg6.c 
b/src/modules/wl_desktop_shell/xdg6.c
index b6d34de..b112df1 100644
--- a/src/modules/wl_desktop_shell/xdg6.c
+++ b/src/modules/wl_desktop_shell/xdg6.c
@@ -363,6 +363,7 @@ _xdg_shell_surface_send_configure(struct wl_resource 
*resource, Eina_Bool fullsc
    zxdg_surface_v6_send_configure(shd->surface, serial);
 
    wl_array_release(&states);
+   ec->comp_data->need_xdg6_configure = 0;
 }
 
 static void
@@ -388,6 +389,7 @@ _e_xdg_shell_surface_configure_send(struct wl_resource 
*resource, uint32_t edges
         serial = wl_display_next_serial(e_comp_wl->wl.disp);
         zxdg_popup_v6_send_configure(resource, ec->x - ec->parent->x, ec->y - 
ec->parent->y, width ?: ec->w, height ?: ec->h);
         zxdg_surface_v6_send_configure(shd->surface, serial);
+        ec->comp_data->need_xdg6_configure = 0;
         return;
      }
 
@@ -918,6 +920,7 @@ _e_xdg_surface_cb_popup_get(struct wl_client *client, 
struct wl_resource *resour
    cdata->shell.configure = _e_xdg_shell_surface_configure;
    cdata->shell.map = _e_xdg_shell_surface_map;
    cdata->shell.unmap = _e_xdg_shell_surface_unmap;
+   cdata->need_xdg6_configure = 1;
 
    if (!ec->internal)
      ec->borderless = !ec->internal_elm_win;
@@ -1219,6 +1222,7 @@ _e_xdg_surface_cb_toplevel_get(struct wl_client *client 
EINA_UNUSED, struct wl_r
    cdata->shell.configure = _e_xdg_shell_surface_configure;
    cdata->shell.map = _e_xdg_shell_surface_map;
    cdata->shell.unmap = _e_xdg_shell_surface_unmap;
+   cdata->need_xdg6_configure = 1;
 
    /* set toplevel client properties */
    ec->icccm.accepts_focus = 1;

-- 


Reply via email to