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>
This commit is contained in:
parent
c8a1ff0ac1
commit
492c12fb8b
|
@ -2963,6 +2963,7 @@ shell_configure_fullscreen(struct shell_surface *shsurf)
|
||||||
output->y - surf_y);
|
output->y - surf_y);
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
|
weston_log("shell: Can't switch to temporary mode.\n");
|
||||||
restore_output_mode(output);
|
restore_output_mode(output);
|
||||||
center_on_output(shsurf->view, 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)
|
if (shsurf->state.fullscreen && configure)
|
||||||
shell_configure_fullscreen(shsurf);
|
shell_configure_fullscreen(shsurf);
|
||||||
else
|
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
|
/* Update the surface’s layer. This brings it to the top of the stacking
|
||||||
* order as appropriate. */
|
* order as appropriate. */
|
||||||
|
|
Loading…
Reference in New Issue