From 4316dbf123bae2f56e6b07059c884dbaa4988cfb Mon Sep 17 00:00:00 2001 From: Michael Taubert Date: Tue, 21 May 2024 13:50:26 +0200 Subject: [PATCH 1/3] Added quit on last client disconnect --- src/main.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main.c b/src/main.c index 8f54184..57037ba 100644 --- a/src/main.c +++ b/src/main.c @@ -84,6 +84,7 @@ enum socket_type { struct wayvnc { bool do_exit; + bool quit_on_disconnect; struct wl_display* display; struct wl_registry* registry; @@ -1296,6 +1297,10 @@ static void client_destroy(void* obj) nvnc_log(NVNC_LOG_DEBUG, "Client disconnected, new client count: %d", wayvnc->nr_clients); + if (self->server->quit_on_disconnect && self->server->nr_clients == 0) { + self->server->do_exit = true; + } + if (wayvnc->ctl) { struct ctl_server_client_info info = {}; compose_client_info(self, &info); @@ -1720,6 +1725,9 @@ int main(int argc, char* argv[]) bool disable_input = false; bool use_transient_seat = false; + bool quit_on_disconnect = false; + bool first_client_connected = false; + int drm_fd MAYBE_UNUSED = -1; int log_level = NVNC_LOG_WARNING; @@ -1752,6 +1760,8 @@ int main(int argc, char* argv[]) .default_ = "30" }, { 'p', "performance", NULL, "Show performance counters." }, + { 'q', "quit", NULL, + "Quit on last client disconnect" }, { 'u', "unix-socket", NULL, "Create unix domain socket." }, { 'd', "disable-input", NULL, @@ -1794,6 +1804,7 @@ int main(int argc, char* argv[]) socket_path = option_parser_get_value(&option_parser, "socket"); overlay_cursor = !!option_parser_get_value(&option_parser, "render-cursor"); show_performance = !!option_parser_get_value(&option_parser, "performance"); + quit_on_disconnect = !!option_parser_get_value(&option_parser, "quit"); use_unix_socket = !!option_parser_get_value(&option_parser, "unix-socket"); use_websocket = !!option_parser_get_value(&option_parser, "websocket"); disable_input = !!option_parser_get_value(&option_parser, "disable-input"); @@ -1807,6 +1818,7 @@ int main(int argc, char* argv[]) start_detached = !!option_parser_get_value(&option_parser, "detached"); self.start_detached = start_detached; + self.quit_on_disconnect = quit_on_disconnect; keyboard_options = option_parser_get_value(&option_parser, "keyboard"); if (keyboard_options) From ff36847b8a405223b045b1de1d21eee5d9380d31 Mon Sep 17 00:00:00 2001 From: Michael Taubert Date: Wed, 22 May 2024 08:52:42 +0200 Subject: [PATCH 2/3] Removed unused variable --- src/main.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main.c b/src/main.c index 57037ba..20273c5 100644 --- a/src/main.c +++ b/src/main.c @@ -1726,7 +1726,6 @@ int main(int argc, char* argv[]) bool use_transient_seat = false; bool quit_on_disconnect = false; - bool first_client_connected = false; int drm_fd MAYBE_UNUSED = -1; From 6f6e766bfc2ed273a2173a35bc86af4e01bc323a Mon Sep 17 00:00:00 2001 From: Michael Taubert Date: Mon, 3 Jun 2024 21:45:26 +0200 Subject: [PATCH 3/3] renamed option to exit_on_disconnect and cleanup --- src/main.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main.c b/src/main.c index 20273c5..e9e6fd9 100644 --- a/src/main.c +++ b/src/main.c @@ -84,7 +84,7 @@ enum socket_type { struct wayvnc { bool do_exit; - bool quit_on_disconnect; + bool exit_on_disconnect; struct wl_display* display; struct wl_registry* registry; @@ -1297,8 +1297,8 @@ static void client_destroy(void* obj) nvnc_log(NVNC_LOG_DEBUG, "Client disconnected, new client count: %d", wayvnc->nr_clients); - if (self->server->quit_on_disconnect && self->server->nr_clients == 0) { - self->server->do_exit = true; + if (self->server->exit_on_disconnect && self->server->nr_clients == 0) { + wayvnc_exit(wayvnc); } if (wayvnc->ctl) { @@ -1725,7 +1725,7 @@ int main(int argc, char* argv[]) bool disable_input = false; bool use_transient_seat = false; - bool quit_on_disconnect = false; + bool exit_on_disconnect = false; int drm_fd MAYBE_UNUSED = -1; @@ -1759,8 +1759,8 @@ int main(int argc, char* argv[]) .default_ = "30" }, { 'p', "performance", NULL, "Show performance counters." }, - { 'q', "quit", NULL, - "Quit on last client disconnect" }, + { 'e', "exit-on-disconnect", NULL, + "Exit on last client disconnect." }, { 'u', "unix-socket", NULL, "Create unix domain socket." }, { 'd', "disable-input", NULL, @@ -1803,7 +1803,7 @@ int main(int argc, char* argv[]) socket_path = option_parser_get_value(&option_parser, "socket"); overlay_cursor = !!option_parser_get_value(&option_parser, "render-cursor"); show_performance = !!option_parser_get_value(&option_parser, "performance"); - quit_on_disconnect = !!option_parser_get_value(&option_parser, "quit"); + exit_on_disconnect = !!option_parser_get_value(&option_parser, "exit-on-disconnect"); use_unix_socket = !!option_parser_get_value(&option_parser, "unix-socket"); use_websocket = !!option_parser_get_value(&option_parser, "websocket"); disable_input = !!option_parser_get_value(&option_parser, "disable-input"); @@ -1817,7 +1817,7 @@ int main(int argc, char* argv[]) start_detached = !!option_parser_get_value(&option_parser, "detached"); self.start_detached = start_detached; - self.quit_on_disconnect = quit_on_disconnect; + self.exit_on_disconnect = exit_on_disconnect; keyboard_options = option_parser_get_value(&option_parser, "keyboard"); if (keyboard_options)