discomfitor pushed a commit to branch efl-1.20.

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

commit cceb25d9a73acda33608cb740891598c52631907
Author: Mike Blumenkrantz <[email protected]>
Date:   Fri Aug 11 18:43:15 2017 -0400

    wayland: set min/max size hints to surface before show
    
    with deferred surface creation the first canvas change of hints may not
    be able to trigger protocol methods for size hints, so ensure that hints are
    set
---
 src/lib/ecore_wl2/ecore_wl2_private.h              |  2 ++
 .../engines/wayland/ecore_evas_wayland_common.c    | 36 ++++++++++++++++++++--
 2 files changed, 36 insertions(+), 2 deletions(-)

diff --git a/src/lib/ecore_wl2/ecore_wl2_private.h 
b/src/lib/ecore_wl2/ecore_wl2_private.h
index 3569db9f39..585615c726 100644
--- a/src/lib/ecore_wl2/ecore_wl2_private.h
+++ b/src/lib/ecore_wl2/ecore_wl2_private.h
@@ -201,6 +201,8 @@ struct _Ecore_Wl2_Window
    struct
      {
         Eina_Bool configure : 1;
+        Eina_Bool min : 1;
+        Eina_Bool max : 1;
      } pending;
 
    struct
diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c 
b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c
index d6b6350174..417c6e9485 100644
--- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c
+++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c
@@ -192,6 +192,17 @@ _ecore_evas_wl_common_resize(Ecore_Evas *ee, int w, int h)
    ee->w = w;
    ee->h = h;
 
+   if (wdata->win->zxdg_set_min_size && wdata->win->zxdg_toplevel && 
wdata->win->pending.min)
+     {
+        wdata->win->zxdg_set_min_size(wdata->win->zxdg_toplevel, 
ee->prop.min.w, ee->prop.min.h);
+        wdata->win->pending.min = 0;
+     }
+   if (wdata->win->zxdg_set_max_size && wdata->win->zxdg_toplevel && 
wdata->win->pending.max)
+     {
+        wdata->win->zxdg_set_max_size(wdata->win->zxdg_toplevel, 
ee->prop.max.w, ee->prop.max.h);
+        wdata->win->pending.max = 0;
+     }
+
    if (!ee->prop.fullscreen)
      {
         int fw = 0, fh = 0;
@@ -1426,7 +1437,12 @@ _ecore_evas_wl_common_size_min_set(Ecore_Evas *ee, int 
w, int h)
    ee->prop.min.h = h;
    wdata = ee->engine.data;
    if (wdata->win->zxdg_set_min_size && wdata->win->zxdg_toplevel)
-     wdata->win->zxdg_set_min_size(wdata->win->zxdg_toplevel, w, h);
+     {
+        wdata->win->zxdg_set_min_size(wdata->win->zxdg_toplevel, w, h);
+        wdata->win->pending.min = 0;
+     }
+   else
+     wdata->win->pending.min = 1;
    _ecore_evas_wl_common_resize(ee, ee->w, ee->h);
 }
 
@@ -1442,7 +1458,12 @@ _ecore_evas_wl_common_size_max_set(Ecore_Evas *ee, int 
w, int h)
    ee->prop.max.h = h;
    wdata = ee->engine.data;
    if (wdata->win->zxdg_set_max_size && wdata->win->zxdg_toplevel)
-     wdata->win->zxdg_set_max_size(wdata->win->zxdg_toplevel, w, h);
+     {
+        wdata->win->zxdg_set_max_size(wdata->win->zxdg_toplevel, w, h);
+        wdata->win->pending.max = 0;
+     }
+   else
+     wdata->win->pending.max = 1;
    _ecore_evas_wl_common_resize(ee, ee->w, ee->h);
 }
 
@@ -1953,6 +1974,17 @@ _ecore_evas_wl_common_show(Ecore_Evas *ee)
      {
         int fw, fh;
 
+        if (wdata->win->zxdg_set_min_size && wdata->win->zxdg_toplevel && 
wdata->win->pending.min)
+          {
+             wdata->win->zxdg_set_min_size(wdata->win->zxdg_toplevel, 
ee->prop.min.w, ee->prop.min.h);
+             wdata->win->pending.min = 0;
+          }
+        if (wdata->win->zxdg_set_max_size && wdata->win->zxdg_toplevel && 
wdata->win->pending.max)
+          {
+             wdata->win->zxdg_set_max_size(wdata->win->zxdg_toplevel, 
ee->prop.max.w, ee->prop.max.h);
+             wdata->win->pending.max = 0;
+          }
+
         evas_output_framespace_get(ee->evas, NULL, NULL, &fw, &fh);
 
         ecore_wl2_window_show(wdata->win);

-- 


Reply via email to