vlc | branch: master | Rémi Denis-Courmont <r...@remlab.net> | Sat May 19 
12:29:25 2018 +0300| [1cea8586322f00171bbfb3adc0a0294dca727b02] | committer: 
Rémi Denis-Courmont

xdg-shell: latch on configure events

As per protocol specification.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=1cea8586322f00171bbfb3adc0a0294dca727b02
---

 modules/video_output/wayland/xdg-shell.c | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/modules/video_output/wayland/xdg-shell.c 
b/modules/video_output/wayland/xdg-shell.c
index def904e1e7..add0719c5a 100644
--- a/modules/video_output/wayland/xdg-shell.c
+++ b/modules/video_output/wayland/xdg-shell.c
@@ -73,6 +73,9 @@ struct vout_window_sys_t
     struct org_kde_kwin_server_decoration_manager *deco_manager;
     struct org_kde_kwin_server_decoration *deco;
 
+    unsigned width;
+    unsigned height;
+
     vlc_thread_t thread;
 };
 
@@ -170,6 +173,7 @@ static void xdg_toplevel_configure_cb(void *data,
                                       struct wl_array *states)
 {
     vout_window_t *wnd = data;
+    vout_window_sys_t *sys = wnd->sys;
     const uint32_t *state;
 
     msg_Dbg(wnd, "new configuration: %"PRId32"x%"PRId32, width, height);
@@ -180,8 +184,10 @@ static void xdg_toplevel_configure_cb(void *data,
 
     /* Zero width or zero height means client (we) should choose.
      * DO NOT REPORT those values to video output... */
-    if (width != 0 && height != 0)
-        vout_window_ReportSize(wnd,  width, height);
+    if (width != 0)
+        sys->width = width;
+    if (height != 0)
+        sys->height = height;
 
     /* TODO: report fullscreen/minimized/maximized state
      * not implemented in VLC vout_window_t yet though */
@@ -205,7 +211,11 @@ static const struct xdg_toplevel_listener xdg_toplevel_cbs 
=
 static void xdg_surface_configure_cb(void *data, struct xdg_surface *surface,
                                      uint32_t serial)
 {
-    (void) data;
+    vout_window_t *wnd = data;
+    vout_window_sys_t *sys = wnd->sys;
+
+    vout_window_ReportSize(wnd, sys->width, sys->height);
+    xdg_surface_set_window_geometry(surface, 0, 0, sys->width, sys->height);
     xdg_surface_ack_configure(surface, serial);
 }
 
@@ -286,6 +296,8 @@ static int Open(vout_window_t *wnd, const vout_window_cfg_t 
*cfg)
     sys->toplevel = NULL;
     sys->deco_manager = NULL;
     sys->deco = NULL;
+    sys->width = cfg->width;
+    sys->height = cfg->height;
     wnd->sys = sys;
 
     /* Connect to the display server */

_______________________________________________
vlc-commits mailing list
vlc-commits@videolan.org
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to