[Libreoffice-commits] core.git: vcl/qt5

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Mon Jul 23 15:13:03 UTC 2018


 vcl/qt5/Qt5Instance.cxx |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

New commits:
commit bded890a44cc3cc7ce07113565ce80469697f73f
Author:     Jan-Marek Glogowski <glogow at fbihome.de>
AuthorDate: Mon Jul 23 11:58:07 2018 +0000
Commit:     Jan-Marek Glogowski <glogow at fbihome.de>
CommitDate: Mon Jul 23 17:12:40 2018 +0200

    Qt5 just release the SolarMutex for Qt events
    
    Just like the other backends, just release the SolarMutex when
    processing Qt events and keep it for user events.
    
    Change-Id: I0c4a7149f1541607b546a99e51e790836bc9b2f9
    Reviewed-on: https://gerrit.libreoffice.org/57844
    Tested-by: Jenkins
    Reviewed-by: Katarina Behrens <Katarina.Behrens at cib.de>
    Reviewed-by: Jan-Marek Glogowski <glogow at fbihome.de>

diff --git a/vcl/qt5/Qt5Instance.cxx b/vcl/qt5/Qt5Instance.cxx
index cf45dacf835a..c365afbe8ec2 100644
--- a/vcl/qt5/Qt5Instance.cxx
+++ b/vcl/qt5/Qt5Instance.cxx
@@ -140,6 +140,7 @@ std::shared_ptr<SalBitmap> Qt5Instance::CreateSalBitmap()
 
 bool Qt5Instance::ImplYield(bool bWait, bool bHandleAllCurrentEvents)
 {
+    // Re-aquire the guard for user events when called via Q_EMIT ImplYieldSignal
     SolarMutexGuard aGuard;
     bool wasEvent = DispatchUserEvents(bHandleAllCurrentEvents);
     if (!bHandleAllCurrentEvents && wasEvent)
@@ -149,6 +150,7 @@ bool Qt5Instance::ImplYield(bool bWait, bool bHandleAllCurrentEvents)
      * Quoting the Qt docs: [QAbstractEventDispatcher::processEvents] processes
      * pending events that match flags until there are no more events to process.
      */
+    SolarMutexReleaser aReleaser;
     QAbstractEventDispatcher* dispatcher = QAbstractEventDispatcher::instance(qApp->thread());
     if (bWait && !wasEvent)
         wasEvent = dispatcher->processEvents(QEventLoop::WaitForMoreEvents);
@@ -162,8 +164,6 @@ bool Qt5Instance::DoYield(bool bWait, bool bHandleAllCurrentEvents)
     bool bWasEvent = false;
     if (qApp->thread() == QThread::currentThread())
     {
-        // release YieldMutex (and re-acquire in ImplYield)
-        SolarMutexReleaser aReleaser;
         bWasEvent = ImplYield(bWait, bHandleAllCurrentEvents);
         if (bWasEvent)
             m_aWaitingYieldCond.set();


More information about the Libreoffice-commits mailing list