aboutsummaryrefslogtreecommitdiff
path: root/sway
diff options
context:
space:
mode:
Diffstat (limited to 'sway')
-rw-r--r--sway/desktop/output.c12
-rw-r--r--sway/server.c8
-rw-r--r--sway/tree/container.c2
3 files changed, 11 insertions, 11 deletions
diff --git a/sway/desktop/output.c b/sway/desktop/output.c
index a650665f..16183870 100644
--- a/sway/desktop/output.c
+++ b/sway/desktop/output.c
@@ -243,8 +243,8 @@ static void output_frame_notify(struct wl_listener *listener, void *data) {
soutput->last_frame = now;
}
-void output_add_notify(struct wl_listener *listener, void *data) {
- struct sway_server *server = wl_container_of(listener, server, output_add);
+void handle_new_output(struct wl_listener *listener, void *data) {
+ struct sway_server *server = wl_container_of(listener, server, new_output);
struct wlr_output *wlr_output = data;
wlr_log(L_DEBUG, "New output %p: %s", wlr_output, wlr_output->name);
@@ -269,12 +269,14 @@ void output_add_notify(struct wl_listener *listener, void *data) {
sway_input_manager_configure_xcursor(input_manager);
- output->frame.notify = output_frame_notify;
wl_signal_add(&wlr_output->events.frame, &output->frame);
+ output->frame.notify = output_frame_notify;
+
+ wl_signal_add(&wlr_output->events.destroy, &output->output_destroy);
+ output->output_destroy.notify = handle_output_destroy;
}
-void output_remove_notify(struct wl_listener *listener, void *data) {
- struct sway_server *server = wl_container_of(listener, server, output_remove);
+void handle_output_destroy(struct wl_listener *listener, void *data) {
struct wlr_output *wlr_output = data;
wlr_log(L_DEBUG, "Output %p %s removed", wlr_output, wlr_output->name);
diff --git a/sway/server.c b/sway/server.c
index b5eb510b..0753d37e 100644
--- a/sway/server.c
+++ b/sway/server.c
@@ -48,12 +48,8 @@ bool server_init(struct sway_server *server) {
server->data_device_manager =
wlr_data_device_manager_create(server->wl_display);
- server->output_add.notify = output_add_notify;
- wl_signal_add(&server->backend->events.output_add, &server->output_add);
-
- server->output_remove.notify = output_remove_notify;
- wl_signal_add(&server->backend->events.output_remove,
- &server->output_remove);
+ server->new_output.notify = handle_new_output;
+ wl_signal_add(&server->backend->events.new_output, &server->new_output);
server->xdg_shell_v6 = wlr_xdg_shell_v6_create(server->wl_display);
wl_signal_add(&server->xdg_shell_v6->events.new_surface,
diff --git a/sway/tree/container.c b/sway/tree/container.c
index 48aabd86..1a468c19 100644
--- a/sway/tree/container.c
+++ b/sway/tree/container.c
@@ -235,6 +235,8 @@ swayc_t *destroy_output(swayc_t *output) {
}
}
+ wl_list_remove(&output->sway_output->output_destroy.link);
+
wlr_log(L_DEBUG, "OUTPUT: Destroying output '%s'", output->name);
free_swayc(output);