diff --git a/abi_used_symbols b/abi_used_symbols --- a/abi_used_symbols +++ b/abi_used_symbols @@ -1418,7 +1418,6 @@ libQt5WaylandClient.so.5:_ZTIN15QtWaylandClient30QWaylandShellIntegrationPluginE libQt5WaylandClient.so.5:_ZTVN15QtWaylandClient20QWaylandShellSurfaceE libQt5WaylandClient.so.5:wl_output_interface -libQt5WaylandClient.so.5:wl_seat_interface libQt5WaylandClient.so.5:wl_surface_interface libQt5Widgets.so.5:_ZN11QFileDialog10selectFileERK7QString libQt5Widgets.so.5:_ZN11QFileDialog10setOptionsE6QFlagsINS_6OptionEE @@ -2526,6 +2525,7 @@ libglibmm-2.4.so.1:_ZN4Glib8MainLoop3runEv libglibmm-2.4.so.1:_ZN4Glib8MainLoop4quitEv libglibmm-2.4.so.1:_ZN4Glib8MainLoop6createERKNS_6RefPtrINS_11MainContextEEEb +libglibmm-2.4.so.1:_ZN4Glib8MainLoop6createEb libglibmm-2.4.so.1:_ZN4Glib9MatchInfo5fetchEi libglibmm-2.4.so.1:_ZN4Glib9MatchInfoC1Ev libglibmm-2.4.so.1:_ZN4Glib9MatchInfoD1Ev @@ -3005,7 +3005,6 @@ libwayland-client.so.0:wl_proxy_marshal_constructor libwayland-client.so.0:wl_proxy_marshal_constructor_versioned libwayland-client.so.0:wl_seat_interface -libwayland-client.so.0:wl_surface_interface libxcb-keysyms.so.1:xcb_is_keypad_key libxcb-keysyms.so.1:xcb_is_private_keypad_key libxcb-keysyms.so.1:xcb_key_symbols_alloc diff --git a/files/0001-fix-freeze-after-file-dialog.patch b/files/0001-fix-freeze-after-file-dialog.patch new file mode 100644 --- /dev/null +++ b/files/0001-fix-freeze-after-file-dialog.patch @@ -0,0 +1,41 @@ +From 1261c775d4ca6fb78277ec213794da7c15e304e2 Mon Sep 17 00:00:00 2001 +From: Ilya Fedin +Date: Fri, 2 Jul 2021 16:50:34 +0400 +Subject: [PATCH] Fix freeze after creating file dialog + +--- + .../platform/linux/linux_xdp_file_dialog.cpp | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +diff --git a/Telegram/SourceFiles/platform/linux/linux_xdp_file_dialog.cpp b/Telegram/SourceFiles/platform/linux/linux_xdp_file_dialog.cpp +index 7bbd7e218644..96d5b2102e03 100644 +--- a/Telegram/SourceFiles/platform/linux/linux_xdp_file_dialog.cpp ++++ b/Telegram/SourceFiles/platform/linux/linux_xdp_file_dialog.cpp +@@ -569,13 +569,6 @@ int XDPFileDialog::exec() { + setAttribute(Qt::WA_ShowModal, true); + setResult(0); + +- show(); +- if (failedToOpen()) { +- return result(); +- } +- +- QPointer guard = this; +- + // HACK we have to avoid returning until we emit + // that the dialog was accepted or rejected + const auto context = Glib::MainContext::create(); +@@ -593,6 +586,13 @@ int XDPFileDialog::exec() { + loop->quit(); + }, lifetime); + ++ show(); ++ if (failedToOpen()) { ++ return result(); ++ } ++ ++ QPointer guard = this; ++ + loop->run(); + g_main_context_pop_thread_default(context->gobj()); + diff --git a/files/0002-use-gsl-finally-to-pop-thread.patch b/files/0002-use-gsl-finally-to-pop-thread.patch new file mode 100644 --- /dev/null +++ b/files/0002-use-gsl-finally-to-pop-thread.patch @@ -0,0 +1,78 @@ +From b335741f99f530156cd64fde5a5517f4561089f7 Mon Sep 17 00:00:00 2001 +From: Ilya Fedin +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 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) { diff --git a/files/0003-right-file-dialog-freeze-fix.patch b/files/0003-right-file-dialog-freeze-fix.patch new file mode 100644 --- /dev/null +++ b/files/0003-right-file-dialog-freeze-fix.patch @@ -0,0 +1,52 @@ +From 8ecc98eb0308def4749c059a7d1e82f5056e0d02 Mon Sep 17 00:00:00 2001 +From: Ilya Fedin +Date: Mon, 12 Jul 2021 00:06:56 +0400 +Subject: [PATCH] Right file dialog freeze fix + +The freezing is still happening if the service is not accessible +--- + .../platform/linux/linux_xdp_file_dialog.cpp | 22 +++++++------------ + 1 file changed, 8 insertions(+), 14 deletions(-) + +diff --git a/Telegram/SourceFiles/platform/linux/linux_xdp_file_dialog.cpp b/Telegram/SourceFiles/platform/linux/linux_xdp_file_dialog.cpp +index 47622c2d58b5..40810db2cb88 100644 +--- a/Telegram/SourceFiles/platform/linux/linux_xdp_file_dialog.cpp ++++ b/Telegram/SourceFiles/platform/linux/linux_xdp_file_dialog.cpp +@@ -569,15 +569,16 @@ int XDPFileDialog::exec() { + setAttribute(Qt::WA_ShowModal, true); + setResult(0); + ++ show(); ++ if (failedToOpen()) { ++ return result(); ++ } ++ ++ QPointer guard = this; ++ + // HACK we have to avoid returning until we emit + // that the dialog was accepted or rejected +- 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 loop = Glib::MainLoop::create(); + rpl::lifetime lifetime; + + accepted( +@@ -590,13 +591,6 @@ int XDPFileDialog::exec() { + loop->quit(); + }, lifetime); + +- show(); +- if (failedToOpen()) { +- return result(); +- } +- +- QPointer guard = this; +- + loop->run(); + + if (guard.isNull()) { diff --git a/files/series b/files/series new file mode 100644 --- /dev/null +++ b/files/series @@ -0,0 +1,3 @@ +0001-fix-freeze-after-file-dialog.patch +0002-use-gsl-finally-to-pop-thread.patch +0003-right-file-dialog-freeze-fix.patch diff --git a/package.yml b/package.yml --- a/package.yml +++ b/package.yml @@ -1,6 +1,6 @@ name : telegram version : 2.8.4 -release : 153 +release : 154 source : - https://github.com/telegramdesktop/tdesktop/releases/download/v2.8.4/tdesktop-2.8.4-full.tar.gz : 0a2a68590cdbccb40ff835516e9c575c761c91f83712891f69a5310fcb23a6a0 - git|https://github.com/desktop-app/tg_owt.git : 91d836dc84a16584c6ac52b36c04c0de504d9c34 @@ -40,6 +40,7 @@ rundeps : - qt5-imageformats setup : | + %apply_patches cp -r $sources/tg_owt.git tg_owt pushd tg_owt %cmake_ninja -DBUILD_SHARED_LIBS=NO diff --git a/pspec_x86_64.xml b/pspec_x86_64.xml --- a/pspec_x86_64.xml +++ b/pspec_x86_64.xml @@ -2,8 +2,8 @@ telegram - Fabio Forni - livingsilver94.solus@redaril.me + Reilly Brogan + reilly@reillybrogan.com GPL-3.0-or-later network.im @@ -32,12 +32,12 @@ - - 2021-07-04 + + 2021-07-15 2.8.4 Packaging update - Fabio Forni - livingsilver94.solus@redaril.me + Reilly Brogan + reilly@reillybrogan.com \ No newline at end of file