discomfitor pushed a commit to branch master.

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

commit 5ffb7d423cbf89a1f738492a77417b9578b1d37a
Author: Mike Blumenkrantz <zm...@osg.samsung.com>
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 0f664097f7..431d40880e 100644
--- a/src/lib/ecore_wl2/ecore_wl2_private.h
+++ b/src/lib/ecore_wl2/ecore_wl2_private.h
@@ -202,6 +202,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 666fc9a004..ad307edd51 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
@@ -194,6 +194,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;
@@ -1451,7 +1462,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);
 }
 
@@ -1469,7 +1485,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);
 }
 
@@ -1977,6 +1998,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_geometry_set(wdata->win, 0, 0, ee->w, ee->h);

-- 


Reply via email to