From 396a4b93d18508e4fdc7c61f2227afb39ef3e4c9 Mon Sep 17 00:00:00 2001 From: Consolatis <35009135+Consolatis@users.noreply.github.com> Date: Mon, 22 Jan 2024 15:22:26 +0100 Subject: [PATCH] src/output.c: expose output configuration test to clients --- include/labwc.h | 1 + src/output.c | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/include/labwc.h b/include/labwc.h index 62b32cd1..78b8b3b6 100644 --- a/include/labwc.h +++ b/include/labwc.h @@ -292,6 +292,7 @@ struct server { struct wl_listener output_layout_change; struct wlr_output_manager_v1 *output_manager; + struct wl_listener output_manager_test; struct wl_listener output_manager_apply; /* * While an output layout change is in process, this counter is diff --git a/src/output.c b/src/output.c index 650a338e..2805b285 100644 --- a/src/output.c +++ b/src/output.c @@ -549,6 +549,20 @@ custom_mode_failed: return false; } +static void +handle_output_manager_test(struct wl_listener *listener, void *data) +{ + struct server *server = wl_container_of(listener, server, output_manager_test); + struct wlr_output_configuration_v1 *config = data; + + if (verify_output_config_v1(config)) { + wlr_output_configuration_v1_send_succeeded(config); + } else { + wlr_output_configuration_v1_send_failed(config); + } + wlr_output_configuration_v1_destroy(config); +} + static void handle_output_manager_apply(struct wl_listener *listener, void *data) { @@ -667,6 +681,10 @@ output_manager_init(struct server *server) wl_signal_add(&server->output_manager->events.apply, &server->output_manager_apply); + server->output_manager_test.notify = handle_output_manager_test; + wl_signal_add(&server->output_manager->events.test, + &server->output_manager_test); + server->gamma_control_set_gamma.notify = handle_gamma_control_set_gamma; wl_signal_add(&server->gamma_control_manager_v1->events.set_gamma, &server->gamma_control_set_gamma);