From 28834b6472d763fae005a35d6e7a6c756ccced05 Mon Sep 17 00:00:00 2001 From: Emmanuel Gil Peyrot Date: Tue, 10 May 2016 03:22:43 +0200 Subject: =?UTF-8?q?desktop-shell:=20Don=E2=80=99t=20reconfigure=20an=20alr?= =?UTF-8?q?eady=20fullscreen=20surface?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When we receive an wl_shell_surface::set_fullscreen request for a surface that was already fullscreen, don’t do anything if the parameters are the same as the initial request. This prevents bogus or malicious clients from being able to always stay on front by flooding the compositor with set_fullscreen requests after the user has put them in the background with a mod+tab. Signed-off-by: Emmanuel Gil Peyrot Reviewed-by: Yong Bakos Reviewed-by: Bryce Harrington --- desktop-shell/shell.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c index 1c39a12d..7d5bca95 100644 --- a/desktop-shell/shell.c +++ b/desktop-shell/shell.c @@ -2561,6 +2561,13 @@ shell_surface_set_fullscreen(struct wl_client *client, struct shell_surface *shsurf = wl_resource_get_user_data(resource); struct weston_output *output; + if (shsurf->fullscreen_output == shsurf->output && + shsurf->fullscreen.type == method && + shsurf->fullscreen.framerate == framerate) { + send_configure_for_surface(shsurf); + return; + } + if (output_resource) output = wl_resource_get_user_data(output_resource); else -- cgit v1.2.1