Changeset View
Changeset View
Standalone View
Standalone View
files/0002-use-gsl-finally-to-pop-thread.patch
- This file was added.
| From b335741f99f530156cd64fde5a5517f4561089f7 Mon Sep 17 00:00:00 2001 | |||||
| From: Ilya Fedin <fedin-ilja2010@ya.ru> | |||||
| Date: Fri, 2 Jul 2021 20:29:46 +0400 | |||||
| Subject: [PATCH] Use gsl::finally to pop thread context where appropriate | |||||
| --- | |||||
| .../SourceFiles/platform/linux/linux_xdp_file_dialog.cpp | 5 ++++- | |||||
| .../platform/linux/linux_xdp_open_with_dialog.cpp | 4 +++- | |||||
| Telegram/SourceFiles/platform/linux/specific_linux.cpp | 4 +++- | |||||
| 3 files changed, 10 insertions(+), 3 deletions(-) | |||||
| diff --git a/Telegram/SourceFiles/platform/linux/linux_xdp_file_dialog.cpp b/Telegram/SourceFiles/platform/linux/linux_xdp_file_dialog.cpp | |||||
| index 96d5b2102e03..47622c2d58b5 100644 | |||||
| --- a/Telegram/SourceFiles/platform/linux/linux_xdp_file_dialog.cpp | |||||
| +++ b/Telegram/SourceFiles/platform/linux/linux_xdp_file_dialog.cpp | |||||
| @@ -574,6 +574,10 @@ int XDPFileDialog::exec() { | |||||
| const auto context = Glib::MainContext::create(); | |||||
| const auto loop = Glib::MainLoop::create(context); | |||||
| g_main_context_push_thread_default(context->gobj()); | |||||
| + const auto contextGuard = gsl::finally([&] { | |||||
| + g_main_context_pop_thread_default(context->gobj()); | |||||
| + }); | |||||
| + | |||||
| rpl::lifetime lifetime; | |||||
| accepted( | |||||
| @@ -594,7 +598,6 @@ int XDPFileDialog::exec() { | |||||
| QPointer<QDialog> guard = this; | |||||
| loop->run(); | |||||
| - g_main_context_pop_thread_default(context->gobj()); | |||||
| if (guard.isNull()) { | |||||
| return QDialog::Rejected; | |||||
| diff --git a/Telegram/SourceFiles/platform/linux/linux_xdp_open_with_dialog.cpp b/Telegram/SourceFiles/platform/linux/linux_xdp_open_with_dialog.cpp | |||||
| index de8e02bcfb8f..dddf1b54acc0 100644 | |||||
| --- a/Telegram/SourceFiles/platform/linux/linux_xdp_open_with_dialog.cpp | |||||
| +++ b/Telegram/SourceFiles/platform/linux/linux_xdp_open_with_dialog.cpp | |||||
| @@ -108,6 +108,9 @@ bool ShowXDPOpenWithDialog(const QString &filepath) { | |||||
| const auto context = Glib::MainContext::create(); | |||||
| const auto loop = Glib::MainLoop::create(context); | |||||
| g_main_context_push_thread_default(context->gobj()); | |||||
| + const auto contextGuard = gsl::finally([&] { | |||||
| + g_main_context_pop_thread_default(context->gobj()); | |||||
| + }); | |||||
| const auto signalId = connection->signal_subscribe( | |||||
| [&]( | |||||
| @@ -163,7 +166,6 @@ bool ShowXDPOpenWithDialog(const QString &filepath) { | |||||
| QWindow window; | |||||
| QGuiApplicationPrivate::showModalWindow(&window); | |||||
| loop->run(); | |||||
| - g_main_context_pop_thread_default(context->gobj()); | |||||
| QGuiApplicationPrivate::hideModalWindow(&window); | |||||
| } | |||||
| diff --git a/Telegram/SourceFiles/platform/linux/specific_linux.cpp b/Telegram/SourceFiles/platform/linux/specific_linux.cpp | |||||
| index 7f13948eee96..1707e53f388b 100644 | |||||
| --- a/Telegram/SourceFiles/platform/linux/specific_linux.cpp | |||||
| +++ b/Telegram/SourceFiles/platform/linux/specific_linux.cpp | |||||
| @@ -148,6 +148,9 @@ void PortalAutostart(bool start, bool silent) { | |||||
| const auto context = Glib::MainContext::create(); | |||||
| const auto loop = Glib::MainLoop::create(context); | |||||
| g_main_context_push_thread_default(context->gobj()); | |||||
| + const auto contextGuard = gsl::finally([&] { | |||||
| + g_main_context_pop_thread_default(context->gobj()); | |||||
| + }); | |||||
| const auto signalId = connection->signal_subscribe( | |||||
| [&]( | |||||
| @@ -200,7 +203,6 @@ void PortalAutostart(bool start, bool silent) { | |||||
| QWindow window; | |||||
| QGuiApplicationPrivate::showModalWindow(&window); | |||||
| loop->run(); | |||||
| - g_main_context_pop_thread_default(context->gobj()); | |||||
| QGuiApplicationPrivate::hideModalWindow(&window); | |||||
| } | |||||
| } catch (const Glib::Error &e) { | |||||
Copyright © 2015-2021 Solus Project. The Solus logo is Copyright © 2016-2021 Solus Project. All Rights Reserved.