[Libreoffice-commits] core.git: framework/inc framework/source
Noel Grandin (via logerrit)
logerrit at kemper.freedesktop.org
Thu Jul 22 19:17:29 UTC 2021
framework/inc/helper/statusindicatorfactory.hxx | 3
framework/source/helper/statusindicatorfactory.cxx | 196 +++++++++++----------
2 files changed, 108 insertions(+), 91 deletions(-)
New commits:
commit 9ca9d364581e64b8e7ba9b4cd8d745ba22b2a2d8
Author: Noel Grandin <noelgrandin at gmail.com>
AuthorDate: Wed Jul 21 21:47:21 2021 +0200
Commit: Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Thu Jul 22 21:16:54 2021 +0200
osl::Mutex->std::mutex in StatusIndicatorFactory
Change-Id: I23c6765e5932288ce439273c600bdbf5017266ac
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119377
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
diff --git a/framework/inc/helper/statusindicatorfactory.hxx b/framework/inc/helper/statusindicatorfactory.hxx
index f0f46a26ee95..ca8cef12d5fe 100644
--- a/framework/inc/helper/statusindicatorfactory.hxx
+++ b/framework/inc/helper/statusindicatorfactory.hxx
@@ -22,6 +22,7 @@
// Attention: stl headers must(!) be included at first. Otherwise it can make trouble
// with solaris headers ...
#include <vector>
+#include <mutex>
// include files of own module
#include <helper/wakeupthread.hxx>
@@ -124,7 +125,7 @@ class StatusIndicatorFactory final : public ::cppu::WeakImplHelper<
// member
private:
- osl::Mutex m_mutex;
+ std::mutex m_mutex;
/** stack with all current indicator children. */
IndicatorStack m_aStack;
diff --git a/framework/source/helper/statusindicatorfactory.cxx b/framework/source/helper/statusindicatorfactory.cxx
index addda602667f..702436b1dc61 100644
--- a/framework/source/helper/statusindicatorfactory.cxx
+++ b/framework/source/helper/statusindicatorfactory.cxx
@@ -66,7 +66,7 @@ StatusIndicatorFactory::~StatusIndicatorFactory()
void SAL_CALL StatusIndicatorFactory::initialize(const css::uno::Sequence< css::uno::Any >& lArguments)
{
if (lArguments.hasElements()) {
- osl::MutexGuard g(m_mutex);
+ std::lock_guard g(m_mutex);
css::uno::Reference< css::frame::XFrame > xTmpFrame;
css::uno::Reference< css::awt::XWindow > xTmpWindow;
@@ -103,7 +103,7 @@ css::uno::Reference< css::task::XStatusIndicator > SAL_CALL StatusIndicatorFacto
void SAL_CALL StatusIndicatorFactory::update()
{
- osl::MutexGuard g(m_mutex);
+ std::lock_guard g(m_mutex);
m_bAllowReschedule = true;
}
@@ -111,20 +111,21 @@ void StatusIndicatorFactory::start(const css::uno::Reference< css::task::XStatus
const OUString& sText ,
sal_Int32 nRange)
{
+ css::uno::Reference< css::task::XStatusIndicator > xProgress;
// SAFE -> ----------------------------------
- osl::ClearableMutexGuard aWriteLock(m_mutex);
-
- // create new info structure for this child or move it to the front of our stack
- IndicatorStack::iterator pItem = ::std::find(m_aStack.begin(), m_aStack.end(), xChild);
- if (pItem != m_aStack.end())
- m_aStack.erase(pItem);
- IndicatorInfo aInfo(xChild, sText);
- m_aStack.push_back (aInfo );
+ {
+ std::lock_guard aWriteLock(m_mutex);
- m_xActiveChild = xChild;
- css::uno::Reference< css::task::XStatusIndicator > xProgress = m_xProgress;
+ // create new info structure for this child or move it to the front of our stack
+ IndicatorStack::iterator pItem = ::std::find(m_aStack.begin(), m_aStack.end(), xChild);
+ if (pItem != m_aStack.end())
+ m_aStack.erase(pItem);
+ IndicatorInfo aInfo(xChild, sText);
+ m_aStack.push_back (aInfo );
- aWriteLock.clear();
+ m_xActiveChild = xChild;
+ xProgress = m_xProgress;
+ }
// <- SAFE ----------------------------------
implts_makeParentVisibleIfAllowed();
@@ -138,21 +139,23 @@ void StatusIndicatorFactory::start(const css::uno::Reference< css::task::XStatus
void StatusIndicatorFactory::reset(const css::uno::Reference< css::task::XStatusIndicator >& xChild)
{
+ css::uno::Reference< css::task::XStatusIndicator > xActive;
+ css::uno::Reference< css::task::XStatusIndicator > xProgress;
// SAFE -> ----------------------------------
- osl::ClearableMutexGuard aReadLock(m_mutex);
-
- // reset the internal info structure related to this child
- IndicatorStack::iterator pItem = ::std::find(m_aStack.begin(), m_aStack.end(), xChild);
- if (pItem != m_aStack.end())
{
- pItem->m_nValue = 0;
- pItem->m_sText.clear();
- }
+ std::lock_guard aReadLock(m_mutex);
- css::uno::Reference< css::task::XStatusIndicator > xActive = m_xActiveChild;
- css::uno::Reference< css::task::XStatusIndicator > xProgress = m_xProgress;
+ // reset the internal info structure related to this child
+ IndicatorStack::iterator pItem = ::std::find(m_aStack.begin(), m_aStack.end(), xChild);
+ if (pItem != m_aStack.end())
+ {
+ pItem->m_nValue = 0;
+ pItem->m_sText.clear();
+ }
- aReadLock.clear();
+ xActive = m_xActiveChild;
+ xProgress = m_xProgress;
+ }
// <- SAFE ----------------------------------
// not the top most child => don't change UI
@@ -168,30 +171,32 @@ void StatusIndicatorFactory::reset(const css::uno::Reference< css::task::XStatus
void StatusIndicatorFactory::end(const css::uno::Reference< css::task::XStatusIndicator >& xChild)
{
+ css::uno::Reference< css::task::XStatusIndicator > xActive;
+ css::uno::Reference< css::task::XStatusIndicator > xProgress;
+ OUString sText;
+ sal_Int32 nValue = 0;
// SAFE -> ----------------------------------
- osl::ClearableMutexGuard aWriteLock(m_mutex);
-
- // remove this child from our stack
- IndicatorStack::iterator pItem = ::std::find(m_aStack.begin(), m_aStack.end(), xChild);
- if (pItem != m_aStack.end())
- m_aStack.erase(pItem);
-
- // activate next child ... or finish the progress if there is no further one.
- m_xActiveChild.clear();
- OUString sText;
- sal_Int32 nValue = 0;
- IndicatorStack::reverse_iterator pNext = m_aStack.rbegin();
- if (pNext != m_aStack.rend())
{
- m_xActiveChild = pNext->m_xIndicator;
- sText = pNext->m_sText;
- nValue = pNext->m_nValue;
- }
+ std::lock_guard aWriteLock(m_mutex);
- css::uno::Reference< css::task::XStatusIndicator > xActive = m_xActiveChild;
- css::uno::Reference< css::task::XStatusIndicator > xProgress = m_xProgress;
+ // remove this child from our stack
+ IndicatorStack::iterator pItem = ::std::find(m_aStack.begin(), m_aStack.end(), xChild);
+ if (pItem != m_aStack.end())
+ m_aStack.erase(pItem);
- aWriteLock.clear();
+ // activate next child ... or finish the progress if there is no further one.
+ m_xActiveChild.clear();
+ IndicatorStack::reverse_iterator pNext = m_aStack.rbegin();
+ if (pNext != m_aStack.rend())
+ {
+ m_xActiveChild = pNext->m_xIndicator;
+ sText = pNext->m_sText;
+ nValue = pNext->m_nValue;
+ }
+
+ xActive = m_xActiveChild;
+ xProgress = m_xProgress;
+ }
// <- SAFE ----------------------------------
if (xActive.is())
@@ -222,17 +227,19 @@ void StatusIndicatorFactory::end(const css::uno::Reference< css::task::XStatusIn
void StatusIndicatorFactory::setText(const css::uno::Reference< css::task::XStatusIndicator >& xChild,
const OUString& sText )
{
+ css::uno::Reference< css::task::XStatusIndicator > xActive;
+ css::uno::Reference< css::task::XStatusIndicator > xProgress;
// SAFE -> ----------------------------------
- osl::ClearableMutexGuard aWriteLock(m_mutex);
-
- IndicatorStack::iterator pItem = ::std::find(m_aStack.begin(), m_aStack.end(), xChild);
- if (pItem != m_aStack.end())
- pItem->m_sText = sText;
+ {
+ std::lock_guard aWriteLock(m_mutex);
- css::uno::Reference< css::task::XStatusIndicator > xActive = m_xActiveChild;
- css::uno::Reference< css::task::XStatusIndicator > xProgress = m_xProgress;
+ IndicatorStack::iterator pItem = ::std::find(m_aStack.begin(), m_aStack.end(), xChild);
+ if (pItem != m_aStack.end())
+ pItem->m_sText = sText;
- aWriteLock.clear();
+ xActive = m_xActiveChild;
+ xProgress = m_xProgress;
+ }
// SAFE -> ----------------------------------
// paint only the top most indicator
@@ -251,21 +258,23 @@ void StatusIndicatorFactory::setText(const css::uno::Reference< css::task::XStat
void StatusIndicatorFactory::setValue( const css::uno::Reference< css::task::XStatusIndicator >& xChild ,
sal_Int32 nValue )
{
- // SAFE -> ----------------------------------
- osl::ClearableMutexGuard aWriteLock(m_mutex);
-
sal_Int32 nOldValue = 0;
- IndicatorStack::iterator pItem = ::std::find(m_aStack.begin(), m_aStack.end(), xChild);
- if (pItem != m_aStack.end())
+ css::uno::Reference< css::task::XStatusIndicator > xActive;
+ css::uno::Reference< css::task::XStatusIndicator > xProgress;
+ // SAFE -> ----------------------------------
{
- nOldValue = pItem->m_nValue;
- pItem->m_nValue = nValue;
- }
+ std::lock_guard aWriteLock(m_mutex);
- css::uno::Reference< css::task::XStatusIndicator > xActive = m_xActiveChild;
- css::uno::Reference< css::task::XStatusIndicator > xProgress = m_xProgress;
+ IndicatorStack::iterator pItem = ::std::find(m_aStack.begin(), m_aStack.end(), xChild);
+ if (pItem != m_aStack.end())
+ {
+ nOldValue = pItem->m_nValue;
+ pItem->m_nValue = nValue;
+ }
- aWriteLock.clear();
+ xActive = m_xActiveChild;
+ xProgress = m_xProgress;
+ }
// SAFE -> ----------------------------------
if (
@@ -282,17 +291,20 @@ void StatusIndicatorFactory::setValue( const css::uno::Reference< css::task::XSt
void StatusIndicatorFactory::implts_makeParentVisibleIfAllowed()
{
+ css::uno::Reference< css::frame::XFrame > xFrame;
+ css::uno::Reference< css::awt::XWindow > xPluggWindow;
+ css::uno::Reference< css::uno::XComponentContext > xContext;
// SAFE -> ----------------------------------
- osl::ClearableMutexGuard aReadLock(m_mutex);
-
- if (!m_bAllowParentShow)
- return;
+ {
+ std::lock_guard aReadLock(m_mutex);
- css::uno::Reference< css::frame::XFrame > xFrame (m_xFrame.get() , css::uno::UNO_QUERY);
- css::uno::Reference< css::awt::XWindow > xPluggWindow(m_xPluggWindow.get(), css::uno::UNO_QUERY);
- css::uno::Reference< css::uno::XComponentContext > xContext( m_xContext);
+ if (!m_bAllowParentShow)
+ return;
- aReadLock.clear();
+ xFrame = m_xFrame;
+ xPluggWindow = m_xPluggWindow;
+ xContext = m_xContext;
+ }
// <- SAFE ----------------------------------
css::uno::Reference< css::awt::XWindow > xParentWindow;
@@ -374,13 +386,15 @@ void StatusIndicatorFactory::implts_makeParentVisibleIfAllowed()
void StatusIndicatorFactory::impl_createProgress()
{
+ css::uno::Reference< css::frame::XFrame > xFrame;
+ css::uno::Reference< css::awt::XWindow > xWindow;
// SAFE -> ----------------------------------
- osl::ClearableMutexGuard aReadLock(m_mutex);
-
- css::uno::Reference< css::frame::XFrame > xFrame (m_xFrame.get() , css::uno::UNO_QUERY);
- css::uno::Reference< css::awt::XWindow > xWindow(m_xPluggWindow.get(), css::uno::UNO_QUERY);
+ {
+ std::lock_guard aReadLock(m_mutex);
- aReadLock.clear();
+ xFrame = m_xFrame;
+ xWindow = m_xPluggWindow;
+ }
// <- SAFE ----------------------------------
css::uno::Reference< css::task::XStatusIndicator > xProgress;
@@ -413,18 +427,19 @@ void StatusIndicatorFactory::impl_createProgress()
}
}
- osl::MutexGuard g(m_mutex);
+ std::lock_guard g(m_mutex);
m_xProgress = xProgress;
}
void StatusIndicatorFactory::impl_showProgress()
{
+ css::uno::Reference< css::frame::XFrame > xFrame;
// SAFE -> ----------------------------------
- osl::ClearableMutexGuard aReadLock(m_mutex);
-
- css::uno::Reference< css::frame::XFrame > xFrame (m_xFrame.get() , css::uno::UNO_QUERY);
+ {
+ std::lock_guard aReadLock(m_mutex);
- aReadLock.clear();
+ xFrame = m_xFrame;
+ }
// <- SAFE ----------------------------------
css::uno::Reference< css::task::XStatusIndicator > xProgress;
@@ -453,18 +468,19 @@ void StatusIndicatorFactory::impl_showProgress()
}
}
- osl::MutexGuard g(m_mutex);
+ std::lock_guard g(m_mutex);
m_xProgress = xProgress;
}
void StatusIndicatorFactory::impl_hideProgress()
{
+ css::uno::Reference< css::frame::XFrame > xFrame;
// SAFE -> ----------------------------------
- osl::ClearableMutexGuard aReadLock(m_mutex);
-
- css::uno::Reference< css::frame::XFrame > xFrame (m_xFrame.get() , css::uno::UNO_QUERY);
+ {
+ std::lock_guard aReadLock(m_mutex);
- aReadLock.clear();
+ xFrame = m_xFrame;
+ }
// <- SAFE ----------------------------------
if (xFrame.is())
@@ -485,7 +501,7 @@ void StatusIndicatorFactory::impl_reschedule(bool bForce)
{
// SAFE ->
{
- osl::MutexGuard aReadLock(m_mutex);
+ std::lock_guard aReadLock(m_mutex);
if (m_bDisableReschedule)
return;
}
@@ -494,7 +510,7 @@ void StatusIndicatorFactory::impl_reschedule(bool bForce)
bool bReschedule = bForce;
if (!bReschedule)
{
- osl::MutexGuard g(m_mutex);
+ std::lock_guard g(m_mutex);
bReschedule = m_bAllowReschedule;
m_bAllowReschedule = false;
}
@@ -524,7 +540,7 @@ void StatusIndicatorFactory::impl_reschedule(bool bForce)
void StatusIndicatorFactory::impl_startWakeUpThread()
{
- osl::MutexGuard g(m_mutex);
+ std::lock_guard g(m_mutex);
if (m_bDisableReschedule)
return;
@@ -540,7 +556,7 @@ void StatusIndicatorFactory::impl_stopWakeUpThread()
{
rtl::Reference<WakeUpThread> wakeUp;
{
- osl::MutexGuard g(m_mutex);
+ std::lock_guard g(m_mutex);
std::swap(wakeUp, m_pWakeUp);
}
if (wakeUp.is())
More information about the Libreoffice-commits
mailing list