77346a66ec
Implement the basics of screensaver surface management. Exec'ing and killing the screensaver client is punted for later. When a surface registered as a screensaver is mapped, it stays hidden if the screen is not locked, or it is added to the compositor visible surfaces list if the screen is locked. The map() is restructured to set initial position first, and stacking next. This allows SHELL_SURFACE_SCREENSAVER share positioning with SHELL_SURFACE_FULLSCREEN, while show_screensaver() does its own wlsc_surface_configure() call. Also fix centering to the given fullscreen output, not the first output. Another bug fix: previously configure() would call wlsc_surface_configure() unconditionally, which assigns an output to the surface. While the compositor is locked, if an application resizes its window, we hit configure() and assign an output while the surface is not in compositor->surface_list. This leads to invalid memory access on the next call to wlsc_surface_damage_below(). Fix this by not calling wlsc_surface_configure() for surfaces that are not visible. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com> |
||
---|---|---|
.. | ||
.gitignore | ||
compositor-drm.c | ||
compositor-openwfd.c | ||
compositor-wayland.c | ||
compositor-x11.c | ||
compositor.c | ||
compositor.h | ||
data-device.c | ||
evdev.c | ||
image-loader.c | ||
Makefile.am | ||
screenshooter.c | ||
shell.c | ||
switcher.c | ||
tablet-shell.c | ||
tty.c | ||
util.c | ||
xserver-launcher.c |