From 492c12fb8be4d3fb0b57c4548029cce5a82291c1 Mon Sep 17 00:00:00 2001 From: Mario Kleiner Date: Sun, 21 Jun 2015 21:25:12 +0200 Subject: [PATCH] desktop-shell: Allow fullscreen windows to mode-switch their output. Fix desktop-shell's activate() method to only restore the output mode on the single output on which a shell surface gets activated. This way toplevel fullscreen surfaces can mode-switch their output via method WL_SHELL_SURFACE_FULLSCREEN_METHOD_DRIVER and that temporary mode properly persists until the surface loses its fullscreen status, but effects like window switching and exposay still work in the expected way. v2: Split into a separate patch from original patch "Allow restore_output_mode() to work properly.", as suggested by Derek Foreman. Signed-off-by: Mario Kleiner Cc: Derek Foreman Reviewed-by: Pekka Paalanen --- desktop-shell/shell.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c index 9799acb1..d97e92d0 100644 --- a/desktop-shell/shell.c +++ b/desktop-shell/shell.c @@ -2963,6 +2963,7 @@ shell_configure_fullscreen(struct shell_surface *shsurf) output->y - surf_y); break; } else { + weston_log("shell: Can't switch to temporary mode.\n"); restore_output_mode(output); center_on_output(shsurf->view, output); } @@ -5069,7 +5070,7 @@ activate(struct desktop_shell *shell, struct weston_surface *es, if (shsurf->state.fullscreen && configure) shell_configure_fullscreen(shsurf); else - restore_all_output_modes(shell->compositor); + restore_output_mode(shsurf->output); /* Update the surface’s layer. This brings it to the top of the stacking * order as appropriate. */