Some applications would set-up the app_id after the initial commit
(without a buffer) which is too late to correctly assign the application
to the corresponding output set-up in the configuration file.
This patch fixes that by checking one more time, after a buffer has been
attached, if indeed there's an output with an app_id set.
Fixes: #469
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
(cherry picked from commit 8a1849db8a)
This will allow us to create a solid weston_buffer as well, since we
need to store that separately.
Signed-off-by: Daniel Stone <daniels@collabora.com>
Some applications would set-up the app_id after the initial commit
(without a buffer) which is too late to correctly assign the application
to the corresponding output set-up in the configuration file.
This patch fixes that by checking one more time, after a buffer has been
attached, if indeed there's an output with an app_id set.
Fixes: #469
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
According to xdg-shell spec, if the surface doesn't cover the whole
output we should center it and install a border fill covering the rest
of the output.
While we center out the surface we never got around installing the
border fill. This patch re-uses the activation of a surface to control
this bit as well, by making use of an new layer to place the
surface while not being active.
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
The seat_cap listener was to register a signal for keyboard_focus, which
we no longer use. Remove it entirely to avoid dead code.
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Suggested-by: Derek Foreman <derek.foreman@collabora.com>
desktop-shell's client is able to read-up from the config file, [shell]
section the background, but for kiosk-shell we don't actually have
client that does that, so instead allow the shell do that directly.
Seems to be a useful thing to have, as a default background color.
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
When using xwayland surfaces and multiple outputs we need to notify
xwayland surface that the surface position has changed, otherwise we're
going to end up with pop-ups being displayed on other outputs rather
than the one were the main surface resides.
Stolen from desktop-shell.
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Suggested-by: Alexandros Frantzis <alexandros.frantzis@collabora.com>
kiosk_shell_destroy() will free up weston_desktop, but still keeping
listeners set-up (keyboard/seat/caps), which will fire
when the the compositor is stopped/shutdown by clients still connected.
This patch maintains a list of seats and uses it to remove any listeners
when calling kiosk_shell_destroy(). desktop-shell and ivi-shell do not
appear to be using weston_desktop_destroy() in their respective destroy
parts.
This avoids an illegal access happening when calling one of the
listeners, after weston_desktop has been free'ed, like the following:
==2002== at 0x10F3F8FD: weston_desktop_get_display (libweston-desktop.c:125)
==2002== by 0x10F450A7: weston_desktop_xdg_surface_schedule_configure (xdg-shell.c:1022)
==2002== by 0x10F44793: weston_desktop_xdg_toplevel_set_activated (xdg-shell.c:643)
==2002== by 0x10F41AA5: weston_desktop_surface_set_activated (surface.c:468)
==2002== by 0x10F32E7E: kiosk_shell_seat_handle_keyboard_focus (kiosk-shell.c:329)
==2002== by 0x4A726A7: wl_signal_emit (wayland-server-core.h:478)
==2002== by 0x4A75BD1: weston_keyboard_set_focus (input.c:1586)
==2002== by 0x4A776FE: notify_keyboard_focus_out (input.c:2314)
==2002== by 0x5902BC1: udev_seat_destroy (libinput-seat.c:469)
==2002== by 0x59028C5: udev_input_destroy (libinput-seat.c:375)
==2002== by 0x58F0449: drm_destroy (drm.c:2571)
==2002== by 0x4A6EE39: weston_compositor_destroy (compositor.c:7814)
==2002== Address 0x10bd1780 is 0 bytes inside a block of size 152 free'd
==2002== at 0x48399AB: free (vg_replace_malloc.c:538)
==2002== by 0x10F3F8DA: weston_desktop_destroy (libweston-desktop.c:112)
==2002== by 0x10F34357: kiosk_shell_destroy (kiosk-shell.c:1009)
==2002== by 0x4A5F618: wl_signal_emit (wayland-server-core.h:478)
==2002== by 0x4A6EE06: weston_compositor_destroy (compositor.c:7809)
==2002== by 0x4855548: wet_main (main.c:3420)
==2002== by 0x109154: main (executable.c:33)
==2002== Block was alloc'd at
==2002== at 0x483AB65: calloc (vg_replace_malloc.c:760)
==2002== by 0x10F3F681: zalloc (zalloc.h:38)
==2002== by 0x10F3F724: weston_desktop_create (libweston-desktop.c:65)
==2002== by 0x10F34458: wet_shell_init (kiosk-shell.c:1045)
==2002== by 0x484F83D: wet_load_shell (main.c:924)
==2002== by 0x48552D3: wet_main (main.c:3361)
==2002== by 0x109154: main (executable.c:33)
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
kiosk-shell is fullscreen shell for apps that use the xdg-shell
protocol. The goal is to make life easier for people shipping embedded
devices with simple fullscreen shell requirements, and reduce the
proliferation of desktop-shell hacks.
Top level surfaces are made fullscreen, whereas dialogs are placed on
top in the center of the output and retain their natural sizes. Dialogs
can be moved and (un)maximized, but resizing is currently not supported.
An app can be directed to a particular output by populating the
"app-ids" field with the app's XDG app id, in the relevant
"[output]" section in the weston config file.
Fixes: #277
Signed-off-by: Alexandros Frantzis <alexandros.frantzis@collabora.com>