From e78975d770b2d651930e01a327d434632c18aeaa Mon Sep 17 00:00:00 2001 From: Ilya Fedin Date: Fri, 17 Feb 2023 07:50:57 +0400 Subject: [PATCH] Fix event loop for non-first instance on Linux --- .../platform/linux/specific_linux.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/Telegram/SourceFiles/platform/linux/specific_linux.cpp b/Telegram/SourceFiles/platform/linux/specific_linux.cpp index 6eba0dabb..30453d907 100644 --- a/Telegram/SourceFiles/platform/linux/specific_linux.cpp +++ b/Telegram/SourceFiles/platform/linux/specific_linux.cpp @@ -245,6 +245,22 @@ void LaunchGApplication() { .chopped(8) .toStdString(); + const auto owned = [&] { + if (!Gio::Application::id_is_valid(appId)) { + return false; + } + + try { + return base::Platform::DBus::NameHasOwner( + Gio::DBus::Connection::get_sync( + Gio::DBus::BusType::SESSION), + appId); + } catch (...) { + } + + return false; + }(); + const auto app = Glib::wrap( G_APPLICATION( g_object_new( @@ -254,7 +270,8 @@ void LaunchGApplication() { ? appId.c_str() : nullptr, "flags", - G_APPLICATION_HANDLES_OPEN, + G_APPLICATION_HANDLES_OPEN + | (owned ? G_APPLICATION_NON_UNIQUE : 0), nullptr))); app->signal_startup().connect([=] {