[PATCH weston] desktop-shell: Don’t reconfigure an already fullscreen surface

Emmanuel Gil Peyrot linkmauve at linkmauve.fr
Tue May 10 01:22:43 UTC 2016


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 <linkmauve at linkmauve.fr>
---
 desktop-shell/shell.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
index 1c39a12..7d5bca9 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
-- 
2.8.2



More information about the wayland-devel mailing list