diff options
author | Mario Kleiner <mario.kleiner.de@gmail.com> | 2015-06-21 21:25:12 +0200 |
---|---|---|
committer | Pekka Paalanen <pekka.paalanen@collabora.co.uk> | 2015-07-02 15:14:30 +0300 |
commit | 492c12fb8be4d3fb0b57c4548029cce5a82291c1 (patch) | |
tree | 69110c417fc5818bb72af5833afbff4e3a9a0d95 /desktop-shell/shell.c | |
parent | c8a1ff0ac1d3ceef2c0e99cc5580ee78a69fcc3e (diff) | |
download | weston-492c12fb8be4d3fb0b57c4548029cce5a82291c1.tar.gz |
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 <mario.kleiner.de@gmail.com>
Cc: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Diffstat (limited to 'desktop-shell/shell.c')
-rw-r--r-- | desktop-shell/shell.c | 3 |
1 files changed, 2 insertions, 1 deletions
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. */ |