From 71afa388906bf29dcd937aa92b65a97c8b320f60 Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Thu, 3 Dec 2015 08:35:22 -0500 Subject: [PATCH] Add swaylock protocol, add resource destructors This prevents sway crashing if swaybg or swaybar dies. --- common/libsway-common.a | Bin 0 -> 59254 bytes include/extensions.h | 11 ++++++++++- protocols/CMakeLists.txt | 11 +++++++++++ protocols/libsway-protocols.a | Bin 0 -> 31798 bytes protocols/swaylock.xml | 18 ++++++++++++++++++ sway/extensions.c | 29 +++++++++++++++++++++++++++++ wayland/libsway-wayland.a | Bin 0 -> 70060 bytes 7 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 common/libsway-common.a create mode 100644 protocols/libsway-protocols.a create mode 100644 protocols/swaylock.xml create mode 100644 wayland/libsway-wayland.a diff --git a/common/libsway-common.a b/common/libsway-common.a new file mode 100644 index 0000000000000000000000000000000000000000..222678004178c29b264464be622628efa862a801 GIT binary patch literal 59254 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 E2lanl=Kufz literal 0 HcmV?d00001 diff --git a/include/extensions.h b/include/extensions.h index 1ef7d920c..872fd3bda 100644 --- a/include/extensions.h +++ b/include/extensions.h @@ -1,18 +1,21 @@ #ifndef _SWAY_EXTENSIONS_H #define _SWAY_EXTENSIONS_H +#include +#include #include "wayland-desktop-shell-server-protocol.h" #include "list.h" -#include "wlc/wlc-wayland.h" struct background_config { wlc_handle output; wlc_resource surface; + struct wl_resource *resource; }; struct panel_config { wlc_handle output; wlc_resource surface; + struct wl_resource *resource; }; struct desktop_shell_state { @@ -22,6 +25,12 @@ struct desktop_shell_state { struct wlc_size panel_size; }; +struct swaylock_state { + bool active; + wlc_handle output; + wlc_resource surface; +}; + extern struct desktop_shell_state desktop_shell; void register_extensions(void); diff --git a/protocols/CMakeLists.txt b/protocols/CMakeLists.txt index 07becc367..d7516d0cd 100644 --- a/protocols/CMakeLists.txt +++ b/protocols/CMakeLists.txt @@ -13,10 +13,21 @@ WAYLAND_ADD_PROTOCOL_SERVER(proto-server-desktop-shell desktop-shell ) +WAYLAND_ADD_PROTOCOL_CLIENT(proto-client-swaylock + swaylock.xml + swaylock +) +WAYLAND_ADD_PROTOCOL_SERVER(proto-server-swaylock + swaylock.xml + swaylock +) + add_library(sway-protocols ${proto-client-xdg-shell} ${proto-client-desktop-shell} ${proto-server-desktop-shell} + ${proto-client-swaylock} + ${proto-server-swaylock} ) set(PROTOCOLS_INCLUDE_DIRS ${CMAKE_BINARY_DIR}/protocols PARENT_SCOPE) diff --git a/protocols/libsway-protocols.a b/protocols/libsway-protocols.a new file mode 100644 index 0000000000000000000000000000000000000000..284f46c23a8c193cac5c95868dca75d95bf35b18 GIT binary patch literal 31798 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 NfakFex4JFp{{S`01XTb4 literal 0 HcmV?d00001 diff --git a/protocols/swaylock.xml b/protocols/swaylock.xml new file mode 100644 index 000000000..c7a102dd7 --- /dev/null +++ b/protocols/swaylock.xml @@ -0,0 +1,18 @@ + + + + + The Weston desktop-shell protocol's locking functionality depends more + on the behavior of the compositor than of a screen locking client, so + another protocol is necessary. + + + + + + + + + + + diff --git a/sway/extensions.c b/sway/extensions.c index 1f8e9a7c6..18621015c 100644 --- a/sway/extensions.c +++ b/sway/extensions.c @@ -8,6 +8,31 @@ struct desktop_shell_state desktop_shell; +void background_surface_destructor(struct wl_resource *resource) { + sway_log(L_DEBUG, "Background surface killed"); + int i; + for (i = 0; i < desktop_shell.backgrounds->length; ++i) { + struct background_config *config = desktop_shell.backgrounds->items[i]; + if (config->resource == resource) { + list_del(desktop_shell.backgrounds, i); + break; + } + } +} + +void panel_surface_destructor(struct wl_resource *resource) { + sway_log(L_DEBUG, "Panel surface killed"); + int i; + for (i = 0; i < desktop_shell.panels->length; ++i) { + struct panel_config *config = desktop_shell.panels->items[i]; + if (config->resource == resource) { + list_del(desktop_shell.panels, i); + arrange_windows(&root_container, -1, -1); + break; + } + } +} + static void set_background(struct wl_client *client, struct wl_resource *resource, struct wl_resource *_output, struct wl_resource *surface) { wlc_handle output = wlc_handle_from_wl_output_resource(_output); @@ -18,7 +43,9 @@ static void set_background(struct wl_client *client, struct wl_resource *resourc struct background_config *config = malloc(sizeof(struct background_config)); config->output = output; config->surface = wlc_resource_from_wl_surface_resource(surface); + config->resource = surface; list_add(desktop_shell.backgrounds, config); + wl_resource_set_destructor(surface, background_surface_destructor); } static void set_panel(struct wl_client *client, struct wl_resource *resource, @@ -31,7 +58,9 @@ static void set_panel(struct wl_client *client, struct wl_resource *resource, struct panel_config *config = malloc(sizeof(struct panel_config)); config->output = output; config->surface = wlc_resource_from_wl_surface_resource(surface); + config->resource = surface; list_add(desktop_shell.panels, config); + wl_resource_set_destructor(surface, panel_surface_destructor); desktop_shell.panel_size = *wlc_surface_get_size(config->surface); arrange_windows(&root_container, -1, -1); } diff --git a/wayland/libsway-wayland.a b/wayland/libsway-wayland.a new file mode 100644 index 0000000000000000000000000000000000000000..ac0f682c4630b9276be3f89d9da9f6f31497539f GIT binary patch literal 70060 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 OoI(-ghO0=ezyAf#XRMR} literal 0 HcmV?d00001