From c7d6e959e0c97fa28892e08ca4c1cf7b3b2f8d36 Mon Sep 17 00:00:00 2001 From: loki Date: Thu, 16 Apr 2020 15:35:12 +0200 Subject: [PATCH] Fix stream not closing properly when exiting app --- sunshine/platform/linux.cpp | 2 +- sunshine/round_robin.h | 0 sunshine/stream.cpp | 7 +++++-- 3 files changed, 6 insertions(+), 3 deletions(-) mode change 100755 => 100644 sunshine/round_robin.h diff --git a/sunshine/platform/linux.cpp b/sunshine/platform/linux.cpp index 1c82a892..137ae0e4 100644 --- a/sunshine/platform/linux.cpp +++ b/sunshine/platform/linux.cpp @@ -160,7 +160,7 @@ struct x11_attr_t : public display_t { if(width != xattr.width || height != xattr.height) { return capture_e::reinit; } - + XImage *img { XGetImage( xdisplay.get(), xwindow, diff --git a/sunshine/round_robin.h b/sunshine/round_robin.h old mode 100755 new mode 100644 diff --git a/sunshine/stream.cpp b/sunshine/stream.cpp index e3f504e0..08899f80 100644 --- a/sunshine/stream.cpp +++ b/sunshine/stream.cpp @@ -494,8 +494,11 @@ void controlBroadcastThread(safe::signal_t *shutdown_event, control_server_t *se server->send(std::string_view {(char*)payload.data(), payload.size()}); - shutdown_event->raise(true); - continue; + auto lg = server->_map_addr_session.lock(); + for(auto pos = std::begin(*server->_map_addr_session); pos != std::end(*server->_map_addr_session); ++pos) { + auto session = pos->second.second; + session->shutdown_event.raise(true); + } } server->iterate(500ms);