From 29f7ff3201c91fee44b04615934199915a7b203f Mon Sep 17 00:00:00 2001 From: fduncanh Date: Thu, 5 Aug 2021 19:47:32 -0400 Subject: [PATCH] relaunch server when display window is closed --- README.md | 5 +++-- renderers/video_renderer_gstreamer.c | 4 ++-- uxplay.cpp | 6 +++++- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 55da23b..deeb8d9 100644 --- a/README.md +++ b/README.md @@ -124,8 +124,9 @@ visible for screen-sharing.) Thanks to David Ventura https://github.com/DavidVentura/UxPlay for the fix and also for getting it into gstreamer-1.20. -4. uxplay now terminates correctly when the gstreamer display window is -closed, as well as when Ctrl-C is typed in the terminal window. +4. The AirPlay server now terminates correctly when the gstreamer display window is +closed, and is relaunched with the same settings to wait for a new connection. +The program uxplay terminates when Ctrl-C is typed in the terminal window. 5. In principle, multiple instances of uxplay can be run simultaneously using the **-m** (generate random MAC address) option to give each a diff --git a/renderers/video_renderer_gstreamer.c b/renderers/video_renderer_gstreamer.c index 3d331b0..e7f6994 100644 --- a/renderers/video_renderer_gstreamer.c +++ b/renderers/video_renderer_gstreamer.c @@ -63,9 +63,9 @@ video_renderer_t *video_renderer_init(logger_t *logger, const char *server_name, #endif /* this call to g_set_application_name makes server_name appear in the display window title bar, */ - /* (instead of the program name uxplay taken from (argv[0]) */ + /* (instead of the program name uxplay taken from (argv[0]). It is only set one time. */ - g_set_application_name(server_name); + if (!g_get_application_name()) g_set_application_name(server_name); renderer = calloc(1, sizeof(video_renderer_t)); assert(renderer); diff --git a/uxplay.cpp b/uxplay.cpp index 7ec4425..4acae82 100755 --- a/uxplay.cpp +++ b/uxplay.cpp @@ -286,13 +286,17 @@ int main (int argc, char *argv[]) { parse_hw_addr(mac_address, server_hw_addr); mac_address.clear(); + relaunch: if (start_server(server_hw_addr, server_name, display_size, tcp, udp, videoflip,use_audio, debug_log) != 0) { return 1; } running = true; while (running) { - if ((video_renderer_listen(video_renderer))) break; + if ((video_renderer_listen(video_renderer))) { + stop_server(); + goto relaunch; + } } LOGI("Stopping...");