[Libreoffice-commits] core.git: 5 commits - framework/inc framework/source

Stephan Bergmann sbergman at redhat.com
Thu Mar 20 03:03:53 PDT 2014


 framework/inc/services/dispatchhelper.hxx           |    6 
 framework/inc/uiconfiguration/globalsettings.hxx    |    1 
 framework/inc/uifactory/factoryconfiguration.hxx    |    3 
 framework/source/inc/loadenv/loadenv.hxx            |    4 
 framework/source/loadenv/loadenv.cxx                |  138 +++++++-------------
 framework/source/services/dispatchhelper.cxx        |   24 +--
 framework/source/uiconfiguration/globalsettings.cxx |   17 --
 framework/source/uifactory/factoryconfiguration.cxx |   33 +---
 8 files changed, 79 insertions(+), 147 deletions(-)

New commits:
commit 85f7ed1c74364505356ff27e8269f2268536fdc6
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Thu Mar 20 10:49:20 2014 +0100

    Use an osl::Mutex directly
    
    Change-Id: I2e2a7c380ca593ad957c3b0085d01971c843f172

diff --git a/framework/source/inc/loadenv/loadenv.hxx b/framework/source/inc/loadenv/loadenv.hxx
index 2642f09..29b6599 100644
--- a/framework/source/inc/loadenv/loadenv.hxx
+++ b/framework/source/inc/loadenv/loadenv.hxx
@@ -22,7 +22,6 @@
 
 #include <loadenv/loadenvexception.hxx>
 #include <loadenv/actionlockguard.hxx>
-#include <threadhelp/threadhelpbase.hxx>
 
 #include <com/sun/star/lang/IllegalArgumentException.hpp>
 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
@@ -52,7 +51,7 @@ class QuietInteraction;
 
     @author as96863
  */
-class LoadEnv : private ThreadHelpBase
+class LoadEnv
 {
 public:
 
@@ -106,6 +105,7 @@ public:
     };
 
 private:
+    mutable osl::Mutex m_mutex;
 
     /** @short  reference to an uno service manager, which must be used
                 to created on needed services on demand.
diff --git a/framework/source/loadenv/loadenv.cxx b/framework/source/loadenv/loadenv.cxx
index 1b07490..7bfabd2 100644
--- a/framework/source/loadenv/loadenv.cxx
+++ b/framework/source/loadenv/loadenv.cxx
@@ -23,7 +23,6 @@
 #include <framework/framelistanalyzer.hxx>
 
 #include <interaction/quietinteraction.hxx>
-#include <threadhelp/guard.hxx>
 #include <properties.h>
 #include <protocols.h>
 #include <services.h>
@@ -132,8 +131,7 @@ class LoadEnvListener : public ::cppu::WeakImplHelper2< css::frame::XLoadEventLi
 
 LoadEnv::LoadEnv(const css::uno::Reference< css::uno::XComponentContext >& xContext)
     throw(LoadEnvException, css::uno::RuntimeException)
-    : ThreadHelpBase(     )
-    , m_xContext    (xContext)
+    : m_xContext    (xContext)
     , m_pQuietInteraction( 0 )
 {
 }
@@ -232,8 +230,7 @@ void LoadEnv::initializeLoading(const OUString&
                                       EFeature                                                   eFeature        , // => use default ...
                                       EContentType                                               eContentType    ) // => use default ...
 {
-    // SAFE -> ----------------------------------
-    Guard aWriteLock(m_aLock);
+    osl::MutexGuard g(m_mutex);
 
     // Handle still running processes!
     if (m_xAsynchronousJob.is())
@@ -300,9 +297,6 @@ void LoadEnv::initializeLoading(const OUString&
         bUIMode,
         &m_pQuietInteraction
     );
-
-    aWriteLock.unlock();
-    // <- SAFE ----------------------------------
 }
 
 
@@ -358,7 +352,7 @@ void LoadEnv::initializeUIDefaults( const css::uno::Reference< css::uno::XCompon
 void LoadEnv::startLoading()
 {
     // SAFE ->
-    Guard aReadLock(m_aLock);
+    osl::ClearableMutexGuard aReadLock(m_mutex);
 
     // Handle still running processes!
     if (m_xAsynchronousJob.is())
@@ -370,7 +364,7 @@ void LoadEnv::startLoading()
         throw LoadEnvException(LoadEnvException::ID_UNSUPPORTED_CONTENT, "from LoadEnv::startLoading");
 
     // <- SAFE
-    aReadLock.unlock();
+    aReadLock.clear();
 
     // detect its type/filter etc.
     // These information will be available by the
@@ -420,10 +414,10 @@ sal_Bool LoadEnv::waitWhileLoading(sal_uInt32 nTimeout)
     while(true)
     {
         // SAFE -> ------------------------------
-        Guard aReadLock1(m_aLock);
+        osl::ClearableMutexGuard aReadLock1(m_mutex);
         if (!m_xAsynchronousJob.is())
             break;
-        aReadLock1.unlock();
+        aReadLock1.clear();
         // <- SAFE ------------------------------
 
         Application::Yield();
@@ -438,16 +432,13 @@ sal_Bool LoadEnv::waitWhileLoading(sal_uInt32 nTimeout)
             break;
     }
 
-    // SAFE -> ----------------------------------
-    Guard aReadLock2(m_aLock);
+    osl::MutexGuard g(m_mutex);
     return !m_xAsynchronousJob.is();
-    // <- SAFE ----------------------------------
 }
 
 css::uno::Reference< css::lang::XComponent > LoadEnv::getTargetComponent() const
 {
-    // SAFE ->
-    Guard aReadLock(m_aLock);
+    osl::MutexGuard g(m_mutex);
 
     if (!m_xTargetFrame.is())
         return css::uno::Reference< css::lang::XComponent >();
@@ -461,7 +452,6 @@ css::uno::Reference< css::lang::XComponent > LoadEnv::getTargetComponent() const
         return css::uno::Reference< css::lang::XComponent >(xController, css::uno::UNO_QUERY);
 
     return css::uno::Reference< css::lang::XComponent >(xModel, css::uno::UNO_QUERY);
-    // <- SAFE
 }
 
 
@@ -523,8 +513,7 @@ void SAL_CALL LoadEnvListener::disposing(const css::lang::EventObject&)
 
 void LoadEnv::impl_setResult(sal_Bool bResult)
 {
-    // SAFE -> ----------------------------------
-    Guard aWriteLock(m_aLock);
+    osl::MutexGuard g(m_mutex);
 
     m_bLoaded = bResult;
 
@@ -534,9 +523,6 @@ void LoadEnv::impl_setResult(sal_Bool bResult)
     // So we must be sure, that loading process was really finished.
     // => do it as last operation of this method ...
     m_xAsynchronousJob.clear();
-
-    aWriteLock.unlock();
-    // <- SAFE ----------------------------------
 }
 
 /*-----------------------------------------------
@@ -776,7 +762,7 @@ void LoadEnv::impl_detectTypeAndFilter()
     static sal_Int32       FILTERFLAG_TEMPLATEPATH  = 16;
 
     // SAFE ->
-    Guard aReadLock(m_aLock);
+    osl::ClearableMutexGuard aReadLock(m_mutex);
 
     // Attention: Because our stl media descriptor is a copy of an uno sequence
     // we can't use as an in/out parameter here. Copy it before and don't forget to
@@ -784,7 +770,7 @@ void LoadEnv::impl_detectTypeAndFilter()
     css::uno::Sequence< css::beans::PropertyValue >        lDescriptor = m_lMediaDescriptor.getAsConstPropertyValueList();
     css::uno::Reference< css::uno::XComponentContext >     xContext = m_xContext;
 
-    aReadLock.unlock();
+    aReadLock.clear();
     // <- SAFE
 
     OUString sType, sFilter;
@@ -811,7 +797,7 @@ void LoadEnv::impl_detectTypeAndFilter()
             LoadEnvException::ID_UNSUPPORTED_CONTENT, "type detection failed");
 
     // SAFE ->
-    Guard aWriteLock(m_aLock);
+    osl::ResettableMutexGuard aWriteLock(m_mutex);
 
     // detection was successfully => update the descriptor member of this class
     m_lMediaDescriptor << lDescriptor;
@@ -820,7 +806,7 @@ void LoadEnv::impl_detectTypeAndFilter()
     // see below ...
     sFilter = m_lMediaDescriptor.getUnpackedValueOrDefault(utl::MediaDescriptor::PROP_FILTERNAME(), OUString());
 
-    aWriteLock.unlock();
+    aWriteLock.clear();
     // <- SAFE
 
     // But the type isn't enough. For loading sometimes we need more information.
@@ -842,9 +828,9 @@ void LoadEnv::impl_detectTypeAndFilter()
             if (!sFilter.isEmpty())
             {
                 // SAFE ->
-                aWriteLock.lock();
+                aWriteLock.reset();
                 m_lMediaDescriptor[utl::MediaDescriptor::PROP_FILTERNAME()] <<= sFilter;
-                aWriteLock.unlock();
+                aWriteLock.clear();
                 // <- SAFE
             }
         }
@@ -876,12 +862,12 @@ void LoadEnv::impl_detectTypeAndFilter()
     if (bIsOwnTemplate)
     {
         // SAFE ->
-        aWriteLock.lock();
+        aWriteLock.reset();
         // Don't overwrite external decisions! See comments before ...
         utl::MediaDescriptor::const_iterator pAsTemplateItem = m_lMediaDescriptor.find(utl::MediaDescriptor::PROP_ASTEMPLATE());
         if (pAsTemplateItem == m_lMediaDescriptor.end())
             m_lMediaDescriptor[utl::MediaDescriptor::PROP_ASTEMPLATE()] <<= sal_True;
-        aWriteLock.unlock();
+        aWriteLock.clear();
         // <- SAFE
     }
 }
@@ -891,7 +877,7 @@ sal_Bool LoadEnv::impl_handleContent()
     throw(LoadEnvException, css::uno::RuntimeException)
 {
     // SAFE -> -----------------------------------
-    Guard aReadLock(m_aLock);
+    osl::ClearableMutexGuard aReadLock(m_mutex);
 
     // the type must exist inside the descriptor ... otherwise this class is implemented wrong :-)
     OUString sType = m_lMediaDescriptor.getUnpackedValueOrDefault(utl::MediaDescriptor::PROP_TYPENAME(), OUString());
@@ -906,7 +892,7 @@ sal_Bool LoadEnv::impl_handleContent()
     // get necessary container to query for a handler object
     css::uno::Reference< css::frame::XLoaderFactory > xLoaderFactory = css::frame::ContentHandlerFactory::create(m_xContext);
 
-    aReadLock.unlock();
+    aReadLock.clear();
     // <- SAFE -----------------------------------
 
     // query
@@ -938,10 +924,10 @@ sal_Bool LoadEnv::impl_handleContent()
             { continue; }
 
         // SAFE -> -----------------------------------
-        Guard aWriteLock(m_aLock);
+        osl::ClearableMutexGuard aWriteLock(m_mutex);
         m_xAsynchronousJob = xHandler;
         LoadEnvListener* pListener = new LoadEnvListener(this);
-        aWriteLock.unlock();
+        aWriteLock.clear();
         // <- SAFE -----------------------------------
 
         css::uno::Reference< css::frame::XDispatchResultListener > xListener(static_cast< css::frame::XDispatchResultListener* >(pListener), css::uno::UNO_QUERY);
@@ -957,9 +943,9 @@ sal_Bool LoadEnv::impl_handleContent()
 sal_Bool LoadEnv::impl_furtherDocsAllowed()
 {
     // SAFE ->
-    Guard aReadLock(m_aLock);
+    osl::ResettableMutexGuard aReadLock(m_mutex);
     css::uno::Reference< css::uno::XComponentContext > xContext = m_xContext;
-    aReadLock.unlock();
+    aReadLock.clear();
     // <- SAFE
 
     sal_Bool bAllowed = sal_True;
@@ -1002,11 +988,11 @@ sal_Bool LoadEnv::impl_furtherDocsAllowed()
     if ( ! bAllowed )
     {
         // SAFE ->
-        aReadLock.lock();
+        aReadLock.reset();
         css::uno::Reference< css::task::XInteractionHandler > xInteraction = m_lMediaDescriptor.getUnpackedValueOrDefault(
                                                                                 utl::MediaDescriptor::PROP_INTERACTIONHANDLER(),
                                                                                 css::uno::Reference< css::task::XInteractionHandler >());
-        aReadLock.unlock();
+        aReadLock.clear();
         // <- SAFE
 
         if (xInteraction.is())
@@ -1039,7 +1025,7 @@ sal_Bool LoadEnv::impl_loadContent()
     throw(LoadEnvException, css::uno::RuntimeException)
 {
     // SAFE -> -----------------------------------
-    Guard aWriteLock(m_aLock);
+    osl::ClearableMutexGuard aWriteLock(m_mutex);
 
     // search or create right target frame
     OUString sTarget = m_sTarget;
@@ -1144,11 +1130,9 @@ sal_Bool LoadEnv::impl_loadContent()
 
     if (xAsyncLoader.is())
     {
-        // SAFE -> -----------------------------------
-        aWriteLock.lock();
         m_xAsynchronousJob = xAsyncLoader;
         LoadEnvListener* pListener = new LoadEnvListener(this);
-        aWriteLock.unlock();
+        aWriteLock.clear();
         // <- SAFE -----------------------------------
 
         css::uno::Reference< css::frame::XLoadEventListener > xListener(static_cast< css::frame::XLoadEventListener* >(pListener), css::uno::UNO_QUERY);
@@ -1167,7 +1151,7 @@ sal_Bool LoadEnv::impl_loadContent()
         return sal_True;
     }
 
-    aWriteLock.unlock();
+    aWriteLock.clear();
     // <- SAFE
 
     return sal_False;
@@ -1177,7 +1161,7 @@ sal_Bool LoadEnv::impl_loadContent()
 css::uno::Reference< css::uno::XInterface > LoadEnv::impl_searchLoader()
 {
     // SAFE -> -----------------------------------
-    Guard aReadLock(m_aLock);
+    osl::ClearableMutexGuard aReadLock(m_mutex);
 
     // special mode to set an existing component on this frame
     // In such case the loader is fix. It must be the SFX based implementation,
@@ -1205,7 +1189,7 @@ css::uno::Reference< css::uno::XInterface > LoadEnv::impl_searchLoader()
     // try to locate any interested frame loader
     css::uno::Reference< css::frame::XLoaderFactory > xLoaderFactory = css::frame::FrameLoaderFactory::create(m_xContext);
 
-    aReadLock.unlock();
+    aReadLock.clear();
     // <- SAFE -----------------------------------
 
     css::uno::Sequence< OUString > lTypesReg(1);
@@ -1252,9 +1236,9 @@ void LoadEnv::impl_jumpToMark(const css::uno::Reference< css::frame::XFrame >& x
         return;
 
     // SAFE ->
-    Guard aReadLock(m_aLock);
+    osl::ClearableMutexGuard aReadLock(m_mutex);
     css::uno::Reference< css::uno::XComponentContext > xContext = m_xContext;
-    aReadLock.unlock();
+    aReadLock.clear();
     // <- SAFE
 
     css::util::URL aCmd;
@@ -1276,8 +1260,7 @@ void LoadEnv::impl_jumpToMark(const css::uno::Reference< css::frame::XFrame >& x
 css::uno::Reference< css::frame::XFrame > LoadEnv::impl_searchAlreadyLoaded()
     throw(LoadEnvException, css::uno::RuntimeException)
 {
-    // SAFE ->
-    Guard aReadLock(m_aLock);
+    osl::MutexGuard g(m_mutex);
 
     // such search is allowed for special requests only ...
     // or better its not allowed for some requests in general :-)
@@ -1411,9 +1394,6 @@ css::uno::Reference< css::frame::XFrame > LoadEnv::impl_searchAlreadyLoaded()
         impl_makeFrameWindowVisible(xResult->getContainerWindow(), sal_True);
     }
 
-    aReadLock.unlock();
-    // <- SAFE
-
     return xResult;
 }
 
@@ -1437,7 +1417,7 @@ css::uno::Reference< css::frame::XFrame > LoadEnv::impl_searchRecycleTarget()
     throw(LoadEnvException, css::uno::RuntimeException)
 {
     // SAFE -> ..................................
-    Guard aReadLock(m_aLock);
+    osl::ClearableMutexGuard aReadLock(m_mutex);
 
     // The special backing mode frame will be recycled by definition!
     // It doesn't matter if somewhere wants to create a new view
@@ -1520,7 +1500,7 @@ css::uno::Reference< css::frame::XFrame > LoadEnv::impl_searchRecycleTarget()
     SvtModuleOptions::EFactory eOldApp = SvtModuleOptions::ClassifyFactoryByModel(xModel);
     SvtModuleOptions::EFactory eNewApp = SvtModuleOptions::ClassifyFactoryByURL  (m_aURL.Complete, m_lMediaDescriptor.getAsConstPropertyValueList());
 
-    aReadLock.unlock();
+    aReadLock.clear();
     // <- SAFE ..................................
 
     if (eOldApp != eNewApp)
@@ -1548,14 +1528,14 @@ css::uno::Reference< css::frame::XFrame > LoadEnv::impl_searchRecycleTarget()
     }
 
     // SAFE -> ..................................
-    Guard aWriteLock(m_aLock);
+    osl::ClearableMutexGuard aWriteLock(m_mutex);
 
     css::uno::Reference< css::document::XActionLockable > xLock(xTask, css::uno::UNO_QUERY);
     if (!m_aTargetLock.setResource(xLock))
         return css::uno::Reference< css::frame::XFrame >();
 
     m_bReactivateControllerOnError = bReactivateOldControllerOnError;
-    aWriteLock.unlock();
+    aWriteLock.clear();
     // <- SAFE ..................................
 
     // bring it to front ...
@@ -1571,7 +1551,7 @@ void LoadEnv::impl_reactForLoadingState()
     /*TODO reset action locks */
 
     // SAFE -> ----------------------------------
-    Guard aReadLock(m_aLock);
+    osl::ClearableMutexGuard aReadLock(m_mutex);
 
     if (m_bLoaded)
     {
@@ -1671,7 +1651,7 @@ void LoadEnv::impl_reactForLoadingState()
         bThrow = true;
     }
 
-    aReadLock.unlock();
+    aReadLock.clear();
 
     if (bThrow)
     {
@@ -1689,9 +1669,9 @@ void LoadEnv::impl_makeFrameWindowVisible(const css::uno::Reference< css::awt::X
                                                 sal_Bool bForceToFront)
 {
     // SAFE -> ----------------------------------
-    Guard aReadLock(m_aLock);
+    osl::ClearableMutexGuard aReadLock(m_mutex);
     css::uno::Reference< css::uno::XComponentContext > xContext = m_xContext;
-    aReadLock.unlock();
+    aReadLock.clear();
     // <- SAFE ----------------------------------
 
     SolarMutexGuard aSolarGuard;
@@ -1761,7 +1741,7 @@ void LoadEnv::impl_applyPersistentWindowState(const css::uno::Reference< css::aw
     // <- SOLAR SAFE
 
     // SAFE ->
-    Guard aReadLock(m_aLock);
+    osl::ClearableMutexGuard aReadLock(m_mutex);
 
     // no filter -> no module -> no persistent window state
     OUString sFilter = m_lMediaDescriptor.getUnpackedValueOrDefault(
@@ -1772,7 +1752,7 @@ void LoadEnv::impl_applyPersistentWindowState(const css::uno::Reference< css::aw
 
     css::uno::Reference< css::uno::XComponentContext > xContext = m_xContext;
 
-    aReadLock.unlock();
+    aReadLock.clear();
     // <- SAFE
 
     try
commit 8781cdcc5b798ae2bdf3edba34b335d068339d4e
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Thu Mar 20 10:39:33 2014 +0100

    Use an osl::Mutex directly
    
    Change-Id: I5dc6e56bcbec5055da629d4dfda608f266191ef9

diff --git a/framework/source/loadenv/loadenv.cxx b/framework/source/loadenv/loadenv.cxx
index 8079c4b..1b07490 100644
--- a/framework/source/loadenv/loadenv.cxx
+++ b/framework/source/loadenv/loadenv.cxx
@@ -93,12 +93,11 @@ namespace framework {
 using namespace com::sun::star;
 
 
-class LoadEnvListener : private ThreadHelpBase
-                      , public ::cppu::WeakImplHelper2< css::frame::XLoadEventListener      ,
+class LoadEnvListener : public ::cppu::WeakImplHelper2< css::frame::XLoadEventListener      ,
                                                         css::frame::XDispatchResultListener >
 {
     private:
-
+        osl::Mutex m_mutex;
         bool m_bWaitingResult;
         LoadEnv* m_pLoadEnv;
 
@@ -469,38 +468,27 @@ css::uno::Reference< css::lang::XComponent > LoadEnv::getTargetComponent() const
 void SAL_CALL LoadEnvListener::loadFinished(const css::uno::Reference< css::frame::XFrameLoader >&)
     throw(css::uno::RuntimeException, std::exception)
 {
-    // SAFE -> ----------------------------------
-    Guard aWriteLock(m_aLock);
-
+    osl::MutexGuard g(m_mutex);
     if (m_bWaitingResult)
         m_pLoadEnv->impl_setResult(sal_True);
     m_bWaitingResult = false;
-
-    aWriteLock.unlock();
-    // <- SAFE ----------------------------------
 }
 
 
 void SAL_CALL LoadEnvListener::loadCancelled(const css::uno::Reference< css::frame::XFrameLoader >&)
     throw(css::uno::RuntimeException, std::exception)
 {
-    // SAFE -> ----------------------------------
-    Guard aWriteLock(m_aLock);
-
+    osl::MutexGuard g(m_mutex);
     if (m_bWaitingResult)
         m_pLoadEnv->impl_setResult(sal_False);
     m_bWaitingResult = false;
-
-    aWriteLock.unlock();
-    // <- SAFE ----------------------------------
 }
 
 
 void SAL_CALL LoadEnvListener::dispatchFinished(const css::frame::DispatchResultEvent& aEvent)
     throw(css::uno::RuntimeException, std::exception)
 {
-    // SAFE -> ----------------------------------
-    Guard aWriteLock(m_aLock);
+    osl::MutexGuard g(m_mutex);
 
     if (!m_bWaitingResult)
         return;
@@ -520,24 +508,16 @@ void SAL_CALL LoadEnvListener::dispatchFinished(const css::frame::DispatchResult
             break;
     }
     m_bWaitingResult = false;
-
-    aWriteLock.unlock();
-    // <- SAFE ----------------------------------
 }
 
 
 void SAL_CALL LoadEnvListener::disposing(const css::lang::EventObject&)
     throw(css::uno::RuntimeException, std::exception)
 {
-    // SAFE -> ----------------------------------
-    Guard aWriteLock(m_aLock);
-
+    osl::MutexGuard g(m_mutex);
     if (m_bWaitingResult)
         m_pLoadEnv->impl_setResult(sal_False);
     m_bWaitingResult = false;
-
-    aWriteLock.unlock();
-    // <- SAFE ----------------------------------
 }
 
 
commit 35c495fd78b0d59aef035273e49c174fdc05f407
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Thu Mar 20 10:36:12 2014 +0100

    Use an osl::Mutex directly
    
    Change-Id: I4db0fa34e00364e38ae015d079fee551be7319b3

diff --git a/framework/inc/services/dispatchhelper.hxx b/framework/inc/services/dispatchhelper.hxx
index 922848c..5281713 100644
--- a/framework/inc/services/dispatchhelper.hxx
+++ b/framework/inc/services/dispatchhelper.hxx
@@ -20,7 +20,6 @@
 #ifndef INCLUDED_FRAMEWORK_INC_SERVICES_DISPATCHHELPER_HXX
 #define INCLUDED_FRAMEWORK_INC_SERVICES_DISPATCHHELPER_HXX
 
-#include <threadhelp/threadhelpbase.hxx>
 #include <macros/generic.hxx>
 #include <macros/xinterface.hxx>
 #include <macros/xtypeprovider.hxx>
@@ -46,8 +45,7 @@ namespace framework{
                 All these steps are done inside one method call here.
 */
 
-class DispatchHelper : public ThreadHelpBase                      // must be the first base class!
-                      ,public ::cppu::WeakImplHelper3< ::com::sun::star::lang::XServiceInfo,::com::sun::star::frame::XDispatchHelper,::com::sun::star::frame::XDispatchResultListener >
+class DispatchHelper : public ::cppu::WeakImplHelper3< ::com::sun::star::lang::XServiceInfo,::com::sun::star::frame::XDispatchHelper,::com::sun::star::frame::XDispatchResultListener >
 {
 
 
@@ -55,6 +53,8 @@ class DispatchHelper : public ThreadHelpBase                      // must be the
 
     private:
 
+        osl::Mutex m_mutex;
+
         /** global uno service manager.
             Can be used to create own needed services. */
         css::uno::Reference< css::uno::XComponentContext > m_xContext;
diff --git a/framework/source/services/dispatchhelper.cxx b/framework/source/services/dispatchhelper.cxx
index f84ef5c..050885a 100644
--- a/framework/source/services/dispatchhelper.cxx
+++ b/framework/source/services/dispatchhelper.cxx
@@ -46,9 +46,7 @@ DEFINE_INIT_SERVICE( DispatchHelper, {} )
     @param xSMGR    the global uno service manager, which can be used to create own needed services.
 */
 DispatchHelper::DispatchHelper( const css::uno::Reference< css::uno::XComponentContext >& xContext )
-        :   ThreadHelpBase(     )
-        // Init member
-        ,   m_xContext    (xContext)
+        :   m_xContext    (xContext)
 {
 }
 
@@ -102,9 +100,9 @@ css::uno::Any SAL_CALL DispatchHelper::executeDispatch(
 
     // parse given URL
     /* SAFE { */
-    Guard aReadLock(m_aLock);
+    osl::ClearableMutexGuard aReadLock(m_mutex);
     css::uno::Reference< css::util::XURLTransformer > xParser = css::util::URLTransformer::create(m_xContext);
-    aReadLock.unlock();
+    aReadLock.clear();
     /* } SAFE */
 
     css::util::URL aURL;
@@ -129,11 +127,11 @@ css::uno::Any SAL_CALL DispatchHelper::executeDispatch(
         // Here we can hope for a result ... instead of the normal dispatch.
         css::uno::Reference< css::frame::XDispatchResultListener > xListener(xTHIS, css::uno::UNO_QUERY);
         /* SAFE { */
-        Guard aWriteLock(m_aLock);
+        osl::ClearableMutexGuard aWriteLock(m_mutex);
         m_xBroadcaster = css::uno::Reference< css::uno::XInterface >(xNotifyDispatch, css::uno::UNO_QUERY);
         m_aResult      = css::uno::Any();
         m_aBlock.reset();
-        aWriteLock.unlock();
+        aWriteLock.clear();
         /* } SAFE */
 
         // dispatch it and wait for a notification
@@ -164,14 +162,10 @@ css::uno::Any SAL_CALL DispatchHelper::executeDispatch(
 void SAL_CALL DispatchHelper::dispatchFinished( const css::frame::DispatchResultEvent& aResult )
     throw(css::uno::RuntimeException, std::exception)
 {
-    /* SAFE { */
-    Guard aWriteLock(m_aLock);
-
+    osl::MutexGuard g(m_mutex);
     m_aResult <<= aResult;
     m_aBlock.set();
     m_xBroadcaster.clear();
-
-    /* } SAFE */
 }
 
 
@@ -184,14 +178,10 @@ void SAL_CALL DispatchHelper::dispatchFinished( const css::frame::DispatchResult
 void SAL_CALL DispatchHelper::disposing( const css::lang::EventObject& )
     throw(css::uno::RuntimeException, std::exception)
 {
-    /* SAFE { */
-    Guard aWriteLock(m_aLock);
-
+    osl::MutexGuard g(m_mutex);
     m_aResult.clear();
     m_aBlock.set();
     m_xBroadcaster.clear();
-
-    /* } SAFE */
 }
 
 }
commit 7f0a6e262f550a9eb4a29ef28818388c79778d8e
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Thu Mar 20 10:33:49 2014 +0100

    Use an osl::Mutex directly
    
    Change-Id: I7131abdc2202f80f0e9600d04633bbd6078700bf

diff --git a/framework/inc/uiconfiguration/globalsettings.hxx b/framework/inc/uiconfiguration/globalsettings.hxx
index 7e738ec..b4809ad 100644
--- a/framework/inc/uiconfiguration/globalsettings.hxx
+++ b/framework/inc/uiconfiguration/globalsettings.hxx
@@ -27,7 +27,6 @@
 #include <list>
 #include <boost/unordered_map.hpp>
 
-#include <threadhelp/threadhelpbase.hxx>
 #include <macros/generic.hxx>
 #include <macros/xinterface.hxx>
 #include <macros/xtypeprovider.hxx>
diff --git a/framework/source/uiconfiguration/globalsettings.cxx b/framework/source/uiconfiguration/globalsettings.cxx
index 437234c..df20e46 100644
--- a/framework/source/uiconfiguration/globalsettings.cxx
+++ b/framework/source/uiconfiguration/globalsettings.cxx
@@ -18,7 +18,6 @@
  */
 
 #include "uiconfiguration/globalsettings.hxx"
-#include <threadhelp/guard.hxx>
 #include "services.h"
 
 #include <com/sun/star/beans/PropertyValue.hpp>
@@ -59,8 +58,7 @@ namespace framework
 //  Configuration access class for WindowState supplier implementation
 
 
-class GlobalSettings_Access : private ThreadHelpBase                         ,  // Struct for right initalization of mutex member! Must be first of baseclasses.
-                              public ::cppu::WeakImplHelper2<
+class GlobalSettings_Access : public ::cppu::WeakImplHelper2<
                                   ::com::sun::star::lang::XComponent,
                                   ::com::sun::star::lang::XEventListener>
 {
@@ -83,6 +81,7 @@ class GlobalSettings_Access : private ThreadHelpBase                         ,
     private:
         sal_Bool impl_initConfigAccess();
 
+        osl::Mutex m_mutex;
         sal_Bool                                                                            m_bDisposed   : 1,
                                                                                             m_bConfigRead : 1;
         OUString                                                                       m_aConfigSettingsAccess;
@@ -98,7 +97,6 @@ class GlobalSettings_Access : private ThreadHelpBase                         ,
 
 
 GlobalSettings_Access::GlobalSettings_Access( const css::uno::Reference< css::uno::XComponentContext >& rxContext ) :
-    ThreadHelpBase(),
     m_bDisposed( sal_False ),
     m_bConfigRead( sal_False ),
     m_aConfigSettingsAccess( GLOBALSETTINGS_ROOT_ACCESS ),
@@ -118,9 +116,7 @@ GlobalSettings_Access::~GlobalSettings_Access()
 void SAL_CALL GlobalSettings_Access::dispose()
 throw ( css::uno::RuntimeException, std::exception )
 {
-    // SAFE
-    Guard aLock( m_aLock );
-
+    osl::MutexGuard g(m_mutex);
     m_xConfigAccess.clear();
     m_bDisposed = sal_True;
 }
@@ -139,15 +135,14 @@ throw (css::uno::RuntimeException, std::exception)
 void SAL_CALL GlobalSettings_Access::disposing( const css::lang::EventObject& )
 throw (css::uno::RuntimeException, std::exception)
 {
-    // SAFE
-    Guard aLock( m_aLock );
+    osl::MutexGuard g(m_mutex);
     m_xConfigAccess.clear();
 }
 
 // settings access
 sal_Bool GlobalSettings_Access::HasStatesInfo( GlobalSettings::UIElementType eElementType )
 {
-    Guard aLock( m_aLock );
+    osl::MutexGuard g(m_mutex);
     if ( eElementType == GlobalSettings::UIELEMENT_TYPE_DOCKWINDOW )
         return sal_False;
     else if ( eElementType == GlobalSettings::UIELEMENT_TYPE_STATUSBAR )
@@ -185,7 +180,7 @@ sal_Bool GlobalSettings_Access::HasStatesInfo( GlobalSettings::UIElementType eEl
 
 sal_Bool GlobalSettings_Access::GetStateInfo( GlobalSettings::UIElementType eElementType, GlobalSettings::StateInfo eStateInfo, ::com::sun::star::uno::Any& aValue )
 {
-    Guard aLock( m_aLock );
+    osl::MutexGuard g(m_mutex);
     if ( eElementType == GlobalSettings::UIELEMENT_TYPE_DOCKWINDOW )
         return sal_False;
     else if ( eElementType == GlobalSettings::UIELEMENT_TYPE_STATUSBAR )
commit da9aaab596ef4cd24f43902a047332971c92ffb2
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Thu Mar 20 10:08:30 2014 +0100

    Use an osl::Mutex directly
    
    Change-Id: Ia0a0dfae4390ad8cd74520396ecfbd6ac03a5d6f

diff --git a/framework/inc/uifactory/factoryconfiguration.hxx b/framework/inc/uifactory/factoryconfiguration.hxx
index 6f3c8ed..4d7dc3d 100644
--- a/framework/inc/uifactory/factoryconfiguration.hxx
+++ b/framework/inc/uifactory/factoryconfiguration.hxx
@@ -19,7 +19,6 @@
 
 #ifndef INCLUDED_FRAMEWORK_INC_UIFACTORY_FACTORYCONFIGURATION_HXX
 #define INCLUDED_FRAMEWORK_INC_UIFACTORY_FACTORYCONFIGURATION_HXX
-#include <threadhelp/threadhelpbase.hxx>
 #include <macros/generic.hxx>
 #include <macros/xinterface.hxx>
 #include <macros/xtypeprovider.hxx>
@@ -46,7 +45,6 @@ namespace framework
 //  Configuration access class for PopupMenuControllerFactory implementation
 
 class ConfigurationAccess_ControllerFactory : // interfaces
-                                                    private ThreadHelpBase,
                                                     public  ::cppu::WeakImplHelper1< ::com::sun::star::container::XContainerListener>
 {
 public:
@@ -91,6 +89,7 @@ private:
 
     sal_Bool impl_getElementProps( const ::com::sun::star::uno::Any& aElement, OUString& aCommand, OUString& aModule, OUString& aServiceSpecifier,OUString& aValue ) const;
 
+    mutable osl::Mutex m_mutex;
     OUString                     m_aPropCommand;
     OUString                     m_aPropModule;
     OUString                     m_aPropController;
diff --git a/framework/source/uifactory/factoryconfiguration.cxx b/framework/source/uifactory/factoryconfiguration.cxx
index 5320caa..0b2c2b1 100644
--- a/framework/source/uifactory/factoryconfiguration.cxx
+++ b/framework/source/uifactory/factoryconfiguration.cxx
@@ -18,7 +18,6 @@
  */
 
 #include "uifactory/factoryconfiguration.hxx"
-#include <threadhelp/guard.hxx>
 #include "services.h"
 
 #include "helper/mischelper.hxx"
@@ -60,7 +59,6 @@ OUString getHashKeyFromStrings( const OUString& aCommandURL, const OUString& aMo
 //  XInterface, XTypeProvider
 
 ConfigurationAccess_ControllerFactory::ConfigurationAccess_ControllerFactory( const Reference< XComponentContext >& rxContext, const OUString& _sRoot,bool _bAskValue ) :
-    ThreadHelpBase(),
     m_aPropCommand( "Command" ),
     m_aPropModule( "Module" ),
     m_aPropController( "Controller" ),
@@ -74,8 +72,7 @@ ConfigurationAccess_ControllerFactory::ConfigurationAccess_ControllerFactory( co
 
 ConfigurationAccess_ControllerFactory::~ConfigurationAccess_ControllerFactory()
 {
-    // SAFE
-    Guard aLock( m_aLock );
+    osl::MutexGuard g(m_mutex);
 
     Reference< XContainer > xContainer( m_xConfigAccess, UNO_QUERY );
     if ( xContainer.is() )
@@ -84,8 +81,7 @@ ConfigurationAccess_ControllerFactory::~ConfigurationAccess_ControllerFactory()
 
 OUString ConfigurationAccess_ControllerFactory::getServiceFromCommandModule( const OUString& rCommandURL, const OUString& rModule ) const
 {
-    // SAFE
-    Guard aLock( m_aLock );
+    osl::MutexGuard g(m_mutex);
     MenuControllerMap::const_iterator pIter = m_aMenuControllerMap.find( getHashKeyFromStrings( rCommandURL, rModule ));
 
     if ( pIter != m_aMenuControllerMap.end() )
@@ -103,8 +99,7 @@ OUString ConfigurationAccess_ControllerFactory::getServiceFromCommandModule( con
 }
 OUString ConfigurationAccess_ControllerFactory::getValueFromCommandModule( const OUString& rCommandURL, const OUString& rModule ) const
 {
-    // SAFE
-    Guard aLock( m_aLock );
+    osl::MutexGuard g(m_mutex);
 
     MenuControllerMap::const_iterator pIter = m_aMenuControllerMap.find( getHashKeyFromStrings( rCommandURL, rModule ));
 
@@ -128,8 +123,7 @@ void ConfigurationAccess_ControllerFactory::addServiceToCommandModule(
     const OUString& rModule,
     const OUString& rServiceSpecifier )
 {
-    // SAFE
-    Guard aLock( m_aLock );
+    osl::MutexGuard g(m_mutex);
 
     OUString aHashKey = getHashKeyFromStrings( rCommandURL, rModule );
     m_aMenuControllerMap.insert( MenuControllerMap::value_type( aHashKey,ControllerInfo(rServiceSpecifier,OUString()) ));
@@ -139,8 +133,7 @@ void ConfigurationAccess_ControllerFactory::removeServiceFromCommandModule(
     const OUString& rCommandURL,
     const OUString& rModule )
 {
-    // SAFE
-    Guard aLock( m_aLock );
+    osl::MutexGuard g(m_mutex);
 
     OUString aHashKey = getHashKeyFromStrings( rCommandURL, rModule );
     m_aMenuControllerMap.erase( aHashKey );
@@ -154,8 +147,7 @@ void SAL_CALL ConfigurationAccess_ControllerFactory::elementInserted( const Cont
     OUString   aService;
     OUString   aValue;
 
-    // SAFE
-    Guard aLock( m_aLock );
+    osl::MutexGuard g(m_mutex);
 
     if ( impl_getElementProps( aEvent.Element, aCommand, aModule, aService, aValue ))
     {
@@ -175,8 +167,7 @@ void SAL_CALL ConfigurationAccess_ControllerFactory::elementRemoved ( const Cont
     OUString   aService;
     OUString   aValue;
 
-    // SAFE
-    Guard aLock( m_aLock );
+    osl::MutexGuard g(m_mutex);
 
     if ( impl_getElementProps( aEvent.Element, aCommand, aModule, aService, aValue ))
     {
@@ -195,16 +186,15 @@ void SAL_CALL ConfigurationAccess_ControllerFactory::elementReplaced( const Cont
 // lang.XEventListener
 void SAL_CALL ConfigurationAccess_ControllerFactory::disposing( const EventObject& ) throw(RuntimeException, std::exception)
 {
-    // SAFE
     // remove our reference to the config access
-    Guard aLock( m_aLock );
+    osl::MutexGuard g(m_mutex);
     m_xConfigAccess.clear();
 }
 
 void ConfigurationAccess_ControllerFactory::readConfigurationData()
 {
     // SAFE
-    Guard aLock( m_aLock );
+    osl::ClearableMutexGuard aLock( m_mutex );
 
     if ( !m_bConfigAccessInitialized )
     {
@@ -233,7 +223,7 @@ void ConfigurationAccess_ControllerFactory::readConfigurationData()
 
         uno::Reference< container::XContainer > xContainer( m_xConfigAccess, uno::UNO_QUERY );
         // UNSAFE
-        aLock.unlock();
+        aLock.clear();
 
         if ( xContainer.is() )
         {
@@ -245,8 +235,7 @@ void ConfigurationAccess_ControllerFactory::readConfigurationData()
 
 void ConfigurationAccess_ControllerFactory::updateConfigurationData()
 {
-    // SAFE
-    Guard aLock( m_aLock );
+    osl::MutexGuard g(m_mutex);
     if ( m_xConfigAccess.is() )
     {
         Sequence< OUString >   aPopupMenuControllers = m_xConfigAccess->getElementNames();


More information about the Libreoffice-commits mailing list