[Libreoffice-commits] core.git: Branch 'libreoffice-5-4' - framework/source

Stephan Bergmann sbergman at redhat.com
Thu Feb 15 20:47:21 UTC 2018


 framework/source/helper/statusindicatorfactory.cxx |    3 ++-
 framework/source/helper/wakeupthread.cxx           |    1 +
 2 files changed, 3 insertions(+), 1 deletion(-)

New commits:
commit 831c4f1874f01bcd7282cdf08b1446acc5c4760e
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Wed Feb 14 13:21:40 2018 +0100

    tdf#108005: Problems with progress bar while saving document
    
    ...as StatusIndicatorFactory::m_pWakeUp is still non-null after it has already
    been used while loading the document.  Regression introduced with
    017f250764ec7b4ecb82ac19f5b3f68cadf1bf56 "Ensure WakeUpThread is joined before
    exit".
    
    (Also, WakeUpThread::stop could take up to 25 msec longer than necessary, as it
    failed to set condition_, so would always have waited for WakeUpThread::execute
    to finish its next 25 msec condition_.wait call.)
    
    Change-Id: Ic7fe15f1b90f3b8292cd2ceccdc2719a00743d44
    Reviewed-on: https://gerrit.libreoffice.org/49718
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Stephan Bergmann <sbergman at redhat.com>
    (cherry picked from commit 57574c2bcc60d37620288c403267c34d960f5863)
    Reviewed-on: https://gerrit.libreoffice.org/49781
    Reviewed-by: Michael Stahl <mstahl at redhat.com>

diff --git a/framework/source/helper/statusindicatorfactory.cxx b/framework/source/helper/statusindicatorfactory.cxx
index 577cabf82ac3..649145d95833 100644
--- a/framework/source/helper/statusindicatorfactory.cxx
+++ b/framework/source/helper/statusindicatorfactory.cxx
@@ -18,6 +18,7 @@
  */
 
 #include <algorithm>
+#include <utility>
 #include <helper/statusindicatorfactory.hxx>
 #include <helper/statusindicator.hxx>
 #include <helper/vclstatusindicator.hxx>
@@ -547,7 +548,7 @@ void StatusIndicatorFactory::impl_stopWakeUpThread()
     rtl::Reference<WakeUpThread> wakeUp;
     {
         osl::MutexGuard g(m_mutex);
-        wakeUp = m_pWakeUp;
+        std::swap(wakeUp, m_pWakeUp);
     }
     if (wakeUp.is())
     {
diff --git a/framework/source/helper/wakeupthread.cxx b/framework/source/helper/wakeupthread.cxx
index b13621225d21..503f6707a010 100644
--- a/framework/source/helper/wakeupthread.cxx
+++ b/framework/source/helper/wakeupthread.cxx
@@ -53,6 +53,7 @@ void framework::WakeUpThread::stop() {
         osl::MutexGuard g(mutex_);
         terminate_ = true;
     }
+    condition_.set();
     join();
 }
 


More information about the Libreoffice-commits mailing list