From a090b038c45732676d9b7e367848d5bee7ab0ea5 Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Mon, 26 Aug 2019 12:26:34 +0200 Subject: [PATCH xserver 12/24] xwayland: xwl_window_should_enable_viewport: Add extra test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Games based on the allegro gaming library or on ClanLib-1.0 do not size their window to match the fullscreen resolution, instead they use a window covering the entire screen, drawing only the fullscreen resolution part of it. This commit adds a check for these games, so that we correctly apply a viewport to them making fullscreen work properly for these games under Xwayland. Reviewed-by: Olivier Fourdan Acked-by: Michel Dänzer Signed-off-by: Hans de Goede (cherry picked from commit 0c305dbff8a44f3fa3d6aefd372a967029a7a527) --- hw/xwayland/xwayland.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/hw/xwayland/xwayland.c b/hw/xwayland/xwayland.c index 9c6cf7cf5..2e01822fd 100644 --- a/hw/xwayland/xwayland.c +++ b/hw/xwayland/xwayland.c @@ -651,6 +651,23 @@ xwl_window_should_enable_viewport(struct xwl_window *xwl_window, } } + /* 2. Test if the window uses override-redirect + vidmode + * and matches (fully covers) the entire screen. + * This path gets hit by: allegro4, ClanLib-1.0. + */ + xwl_output = xwl_screen_get_first_output(xwl_screen); + emulated_mode = xwl_output_get_emulated_mode_for_client(xwl_output, owner); + if (xwl_output && xwl_window->window->overrideRedirect && + emulated_mode && emulated_mode->from_vidmode && + xwl_window->x == 0 && xwl_window->y == 0 && + xwl_window->width == xwl_screen->width && + xwl_window->height == xwl_screen->height) { + + *emulated_mode_ret = emulated_mode; + *xwl_output_ret = xwl_output; + return TRUE; + } + return FALSE; } -- 2.26.2