vcl/qt5/QtFrame.cxx | 1 + 1 file changed, 1 insertion(+) New commits: commit 5d2b2b9f381bbfb19ffd393f361c1fdd4a898550 Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Thu Jan 30 11:58:28 2025 +0100 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Thu Jan 30 15:55:54 2025 +0100
qt: Return from QtFrame::SetPosSize after running it in main thread If QtFrame::SetPosSize is called from a thread other than the main thread, it gets executed in the main thread via QtInstance::RunInMainThread. Once that's done, return, and don't try to run the rest of the method once again in the original thread. This was missed in commit 5ef991ffc226424a673662b6e478db124825022a Author: Michael Weghorn <m.wegh...@posteo.de> Date: Fri Aug 30 17:20:41 2024 +0200 tdf#162696 qt: Always run QtFrame::SetPosSize in main thread and resulted in a deadlock when opening the sample doc attachment 198264 from tdf#164460 with the qt6 VCL plugin and running the macro, using a current qtbase git dev build. With this and the 2 previous commits Change-Id: I0ee7aa62893da92b886acfd3d47be0bdb10d6007 Author: Michael Weghorn <m.wegh...@posteo.de> Date: Thu Jan 30 11:38:52 2025 +0100 qt: Ensure more methods are run in main thread and Change-Id: I787bb74644dcf29ccbd6c7a59fe5ca9fc7a50061 commit 9cfc139a5a9ec499741cfc95669f6469a17e5329 Date: Thu Jan 30 11:47:53 2025 +0100 qt: Ensure QMenu gets destroyed in main thread in place, the macro now gets executed and the form shows as expected without triggering asserts or deadlocks. Change-Id: I503e03133eb09e1bbea5e7549fbbcdd3c3379d1d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180939 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> diff --git a/vcl/qt5/QtFrame.cxx b/vcl/qt5/QtFrame.cxx index ff87fec1a642..791901dcbc29 100644 --- a/vcl/qt5/QtFrame.cxx +++ b/vcl/qt5/QtFrame.cxx @@ -509,6 +509,7 @@ void QtFrame::SetPosSize(tools::Long nX, tools::Long nY, tools::Long nWidth, too if (!rQtInstance.IsMainThread()) { rQtInstance.RunInMainThread([&] { SetPosSize(nX, nY, nWidth, nHeight, nFlags); }); + return; } if (!isWindow() || isChild(true, false))