Kaydet (Commit) 83408619 authored tarafından Stephan Bergmann's avatar Stephan Bergmann

Use SolarMutexGuard directly

Change-Id: I5fd051b77e52d98c4c2f14b1dda3b72efc4bdf49
üst fbc72e5f
...@@ -22,7 +22,6 @@ ...@@ -22,7 +22,6 @@
#include <classes/fwkresid.hxx> #include <classes/fwkresid.hxx>
#include "classes/resource.hrc" #include "classes/resource.hrc"
#include <threadhelp/guard.hxx>
#include <services.h> #include <services.h>
#include <com/sun/star/beans/XPropertySet.hpp> #include <com/sun/star/beans/XPropertySet.hpp>
...@@ -86,8 +85,7 @@ OUString PresetHandler::RESOURCETYPE_STATUSBAR() ...@@ -86,8 +85,7 @@ OUString PresetHandler::RESOURCETYPE_STATUSBAR()
PresetHandler::PresetHandler(const css::uno::Reference< css::uno::XComponentContext >& xContext) PresetHandler::PresetHandler(const css::uno::Reference< css::uno::XComponentContext >& xContext)
: ThreadHelpBase (&Application::GetSolarMutex() ) : m_xContext (xContext )
, m_xContext (xContext )
, m_aSharedStorages ( ) , m_aSharedStorages ( )
, m_lDocumentStorages() , m_lDocumentStorages()
, m_aLanguageTag (LANGUAGE_USER_PRIV_NOTRANSLATE) , m_aLanguageTag (LANGUAGE_USER_PRIV_NOTRANSLATE)
...@@ -96,8 +94,7 @@ PresetHandler::PresetHandler(const css::uno::Reference< css::uno::XComponentCont ...@@ -96,8 +94,7 @@ PresetHandler::PresetHandler(const css::uno::Reference< css::uno::XComponentCont
PresetHandler::PresetHandler(const PresetHandler& rCopy) PresetHandler::PresetHandler(const PresetHandler& rCopy)
: ThreadHelpBase (&Application::GetSolarMutex() ) : m_aLanguageTag( rCopy.m_aLanguageTag)
, m_aLanguageTag( rCopy.m_aLanguageTag)
{ {
m_xContext = rCopy.m_xContext; m_xContext = rCopy.m_xContext;
m_eConfigType = rCopy.m_eConfigType; m_eConfigType = rCopy.m_eConfigType;
...@@ -145,8 +142,7 @@ PresetHandler::~PresetHandler() ...@@ -145,8 +142,7 @@ PresetHandler::~PresetHandler()
void PresetHandler::forgetCachedStorages() void PresetHandler::forgetCachedStorages()
{ {
// SAFE -> ---------------------------------- SolarMutexGuard g;
Guard aWriteLock(m_aLock);
if (m_eConfigType == E_DOCUMENT) if (m_eConfigType == E_DOCUMENT)
{ {
...@@ -156,9 +152,6 @@ void PresetHandler::forgetCachedStorages() ...@@ -156,9 +152,6 @@ void PresetHandler::forgetCachedStorages()
} }
m_lDocumentStorages.forgetCachedStorages(); m_lDocumentStorages.forgetCachedStorages();
aWriteLock.unlock();
// <- SAFE ----------------------------------
} }
namespace { namespace {
...@@ -208,11 +201,11 @@ css::uno::Reference< css::embed::XStorage > PresetHandler::getOrCreateRootStorag ...@@ -208,11 +201,11 @@ css::uno::Reference< css::embed::XStorage > PresetHandler::getOrCreateRootStorag
if (xRoot.is()) if (xRoot.is())
return xRoot; return xRoot;
// SAFE -> ---------------------------------- css::uno::Reference< css::uno::XComponentContext > xContext;
Guard aReadLock(m_aLock); {
css::uno::Reference< css::uno::XComponentContext > xContext = m_xContext; SolarMutexGuard g;
aReadLock.unlock(); xContext = m_xContext;
// <- SAFE ---------------------------------- }
css::uno::Reference< css::util::XPathSettings > xPathSettings = css::uno::Reference< css::util::XPathSettings > xPathSettings =
css::util::thePathSettings::get( xContext ); css::util::thePathSettings::get( xContext );
...@@ -266,11 +259,11 @@ css::uno::Reference< css::embed::XStorage > PresetHandler::getOrCreateRootStorag ...@@ -266,11 +259,11 @@ css::uno::Reference< css::embed::XStorage > PresetHandler::getOrCreateRootStorag
if (xRoot.is()) if (xRoot.is())
return xRoot; return xRoot;
// SAFE -> ---------------------------------- css::uno::Reference< css::uno::XComponentContext > xContext;
Guard aReadLock(m_aLock); {
css::uno::Reference< css::uno::XComponentContext > xContext = m_xContext; SolarMutexGuard g;
aReadLock.unlock(); xContext = m_xContext;
// <- SAFE ---------------------------------- }
css::uno::Reference< css::util::XPathSettings > xPathSettings = css::uno::Reference< css::util::XPathSettings > xPathSettings =
css::util::thePathSettings::get( xContext ); css::util::thePathSettings::get( xContext );
...@@ -310,29 +303,25 @@ css::uno::Reference< css::embed::XStorage > PresetHandler::getOrCreateRootStorag ...@@ -310,29 +303,25 @@ css::uno::Reference< css::embed::XStorage > PresetHandler::getOrCreateRootStorag
css::uno::Reference< css::embed::XStorage > PresetHandler::getWorkingStorageShare() css::uno::Reference< css::embed::XStorage > PresetHandler::getWorkingStorageShare()
{ {
// SAFE -> ---------------------------------- SolarMutexGuard g;
Guard aReadLock(m_aLock);
return m_xWorkingStorageShare; return m_xWorkingStorageShare;
// <- SAFE ----------------------------------
} }
css::uno::Reference< css::embed::XStorage > PresetHandler::getWorkingStorageUser() css::uno::Reference< css::embed::XStorage > PresetHandler::getWorkingStorageUser()
{ {
// SAFE -> ---------------------------------- SolarMutexGuard g;
Guard aReadLock(m_aLock);
return m_xWorkingStorageUser; return m_xWorkingStorageUser;
// <- SAFE ----------------------------------
} }
css::uno::Reference< css::embed::XStorage > PresetHandler::getParentStorageShare(const css::uno::Reference< css::embed::XStorage >& /*xChild*/) css::uno::Reference< css::embed::XStorage > PresetHandler::getParentStorageShare(const css::uno::Reference< css::embed::XStorage >& /*xChild*/)
{ {
// SAFE -> ---------------------------------- css::uno::Reference< css::embed::XStorage > xWorking;
Guard aReadLock(m_aLock); {
css::uno::Reference< css::embed::XStorage > xWorking = m_xWorkingStorageShare; SolarMutexGuard g;
aReadLock.unlock(); xWorking = m_xWorkingStorageShare;
// <- SAFE ---------------------------------- }
return m_aSharedStorages->m_lStoragesShare.getParentStorage(xWorking); return m_aSharedStorages->m_lStoragesShare.getParentStorage(xWorking);
} }
...@@ -340,11 +329,11 @@ css::uno::Reference< css::embed::XStorage > PresetHandler::getParentStorageShare ...@@ -340,11 +329,11 @@ css::uno::Reference< css::embed::XStorage > PresetHandler::getParentStorageShare
css::uno::Reference< css::embed::XStorage > PresetHandler::getParentStorageUser(const css::uno::Reference< css::embed::XStorage >& /*xChild*/) css::uno::Reference< css::embed::XStorage > PresetHandler::getParentStorageUser(const css::uno::Reference< css::embed::XStorage >& /*xChild*/)
{ {
// SAFE -> ---------------------------------- css::uno::Reference< css::embed::XStorage > xWorking;
Guard aReadLock(m_aLock); {
css::uno::Reference< css::embed::XStorage > xWorking = m_xWorkingStorageUser; SolarMutexGuard g;
aReadLock.unlock(); xWorking = m_xWorkingStorageUser;
// <- SAFE ---------------------------------- }
return m_aSharedStorages->m_lStoragesUser.getParentStorage(xWorking); return m_aSharedStorages->m_lStoragesUser.getParentStorage(xWorking);
} }
...@@ -358,16 +347,13 @@ void PresetHandler::connectToResource( PresetHandler::EConfigType ...@@ -358,16 +347,13 @@ void PresetHandler::connectToResource( PresetHandler::EConfigType
{ {
// TODO free all current open storages! // TODO free all current open storages!
// SAFE -> ---------------------------------- {
Guard aWriteLock(m_aLock); SolarMutexGuard g;
m_eConfigType = eConfigType ; m_eConfigType = eConfigType ;
m_sResourceType = sResource ; m_sResourceType = sResource ;
m_sModule = sModule ; m_sModule = sModule ;
m_aLanguageTag = rLanguageTag ; m_aLanguageTag = rLanguageTag ;
}
aWriteLock.unlock();
// <- SAFE ----------------------------------
css::uno::Reference< css::embed::XStorage > xShare; css::uno::Reference< css::embed::XStorage > xShare;
css::uno::Reference< css::embed::XStorage > xNoLang; css::uno::Reference< css::embed::XStorage > xNoLang;
...@@ -532,9 +518,8 @@ void PresetHandler::connectToResource( PresetHandler::EConfigType ...@@ -532,9 +518,8 @@ void PresetHandler::connectToResource( PresetHandler::EConfigType
} }
} }
// SAFE -> ---------------------------------- {
aWriteLock.lock(); SolarMutexGuard g;
m_xWorkingStorageShare = xShare ; m_xWorkingStorageShare = xShare ;
m_xWorkingStorageNoLang= xNoLang; m_xWorkingStorageNoLang= xNoLang;
m_xWorkingStorageUser = xUser ; m_xWorkingStorageUser = xUser ;
...@@ -543,9 +528,7 @@ void PresetHandler::connectToResource( PresetHandler::EConfigType ...@@ -543,9 +528,7 @@ void PresetHandler::connectToResource( PresetHandler::EConfigType
m_sRelPathShare = sRelPathShare; m_sRelPathShare = sRelPathShare;
m_sRelPathNoLang = sRelPathNoLang; m_sRelPathNoLang = sRelPathNoLang;
m_sRelPathUser = sRelPathUser; m_sRelPathUser = sRelPathUser;
}
aWriteLock.unlock();
// <- SAFE ----------------------------------
} }
catch(const css::uno::Exception&) catch(const css::uno::Exception&)
...@@ -563,13 +546,15 @@ void PresetHandler::copyPresetToTarget(const OUString& sPreset, ...@@ -563,13 +546,15 @@ void PresetHandler::copyPresetToTarget(const OUString& sPreset,
// dont check our preset list, if element exists // dont check our preset list, if element exists
// We try to open it and forward all errors to the user! // We try to open it and forward all errors to the user!
// SAFE -> ---------------------------------- css::uno::Reference< css::embed::XStorage > xWorkingShare;
Guard aReadLock(m_aLock); css::uno::Reference< css::embed::XStorage > xWorkingNoLang;
css::uno::Reference< css::embed::XStorage > xWorkingShare = m_xWorkingStorageShare; css::uno::Reference< css::embed::XStorage > xWorkingUser;
css::uno::Reference< css::embed::XStorage > xWorkingNoLang= m_xWorkingStorageNoLang; {
css::uno::Reference< css::embed::XStorage > xWorkingUser = m_xWorkingStorageUser ; SolarMutexGuard g;
aReadLock.unlock(); xWorkingShare = m_xWorkingStorageShare;
// <- SAFE ---------------------------------- xWorkingNoLang= m_xWorkingStorageNoLang;
xWorkingUser = m_xWorkingStorageUser ;
}
// e.g. module without any config data ?! // e.g. module without any config data ?!
if ( if (
...@@ -603,11 +588,11 @@ void PresetHandler::copyPresetToTarget(const OUString& sPreset, ...@@ -603,11 +588,11 @@ void PresetHandler::copyPresetToTarget(const OUString& sPreset,
css::uno::Reference< css::io::XStream > PresetHandler::openPreset(const OUString& sPreset, css::uno::Reference< css::io::XStream > PresetHandler::openPreset(const OUString& sPreset,
sal_Bool bUseNoLangGlobal) sal_Bool bUseNoLangGlobal)
{ {
// SAFE -> ---------------------------------- css::uno::Reference< css::embed::XStorage > xFolder;
Guard aReadLock(m_aLock); {
css::uno::Reference< css::embed::XStorage > xFolder = bUseNoLangGlobal? m_xWorkingStorageNoLang: m_xWorkingStorageShare; SolarMutexGuard g;
aReadLock.unlock(); xFolder = bUseNoLangGlobal? m_xWorkingStorageNoLang: m_xWorkingStorageShare;
// <- SAFE ---------------------------------- }
// e.g. module without any config data ?! // e.g. module without any config data ?!
if (!xFolder.is()) if (!xFolder.is())
...@@ -625,11 +610,11 @@ css::uno::Reference< css::io::XStream > PresetHandler::openPreset(const OUString ...@@ -625,11 +610,11 @@ css::uno::Reference< css::io::XStream > PresetHandler::openPreset(const OUString
css::uno::Reference< css::io::XStream > PresetHandler::openTarget(const OUString& sTarget , css::uno::Reference< css::io::XStream > PresetHandler::openTarget(const OUString& sTarget ,
sal_Bool bCreateIfMissing) sal_Bool bCreateIfMissing)
{ {
// SAFE -> ---------------------------------- css::uno::Reference< css::embed::XStorage > xFolder;
Guard aReadLock(m_aLock); {
css::uno::Reference< css::embed::XStorage > xFolder = m_xWorkingStorageUser; SolarMutexGuard g;
aReadLock.unlock(); xFolder = m_xWorkingStorageUser;
// <- SAFE ---------------------------------- }
// e.g. module without any config data ?! // e.g. module without any config data ?!
if (!xFolder.is()) if (!xFolder.is())
...@@ -665,12 +650,13 @@ css::uno::Reference< css::io::XStream > PresetHandler::openTarget(const OUString ...@@ -665,12 +650,13 @@ css::uno::Reference< css::io::XStream > PresetHandler::openTarget(const OUString
void PresetHandler::commitUserChanges() void PresetHandler::commitUserChanges()
{ {
// SAFE -> ---------------------------------- css::uno::Reference< css::embed::XStorage > xWorking;
Guard aReadLock(m_aLock); EConfigType eCfgType;
css::uno::Reference< css::embed::XStorage > xWorking = m_xWorkingStorageUser; {
EConfigType eCfgType = m_eConfigType; SolarMutexGuard g;
aReadLock.unlock(); xWorking = m_xWorkingStorageUser;
// <- SAFE ---------------------------------- eCfgType = m_eConfigType;
}
// e.g. module without any config data ?! // e.g. module without any config data ?!
if (!xWorking.is()) if (!xWorking.is())
...@@ -702,12 +688,13 @@ void PresetHandler::commitUserChanges() ...@@ -702,12 +688,13 @@ void PresetHandler::commitUserChanges()
void PresetHandler::addStorageListener(IStorageListener* pListener) void PresetHandler::addStorageListener(IStorageListener* pListener)
{ {
// SAFE -> ---------------------------------- OUString sRelPath;
Guard aReadLock(m_aLock); EConfigType eCfgType;
OUString sRelPath = m_sRelPathUser; // use user path ... because we dont work directly on the share layer! {
EConfigType eCfgType = m_eConfigType; SolarMutexGuard g;
aReadLock.unlock(); sRelPath = m_sRelPathUser; // use user path ... because we dont work directly on the share layer!
// <- SAFE ---------------------------------- eCfgType = m_eConfigType;
}
if (sRelPath.isEmpty()) if (sRelPath.isEmpty())
return; return;
...@@ -732,12 +719,13 @@ void PresetHandler::addStorageListener(IStorageListener* pListener) ...@@ -732,12 +719,13 @@ void PresetHandler::addStorageListener(IStorageListener* pListener)
void PresetHandler::removeStorageListener(IStorageListener* pListener) void PresetHandler::removeStorageListener(IStorageListener* pListener)
{ {
// SAFE -> ---------------------------------- OUString sRelPath;
Guard aReadLock(m_aLock); EConfigType eCfgType;
OUString sRelPath = m_sRelPathUser; // use user path ... because we dont work directly on the share layer! {
EConfigType eCfgType = m_eConfigType; SolarMutexGuard g;
aReadLock.unlock(); sRelPath = m_sRelPathUser; // use user path ... because we dont work directly on the share layer!
// <- SAFE ---------------------------------- eCfgType = m_eConfigType;
}
if (sRelPath.isEmpty()) if (sRelPath.isEmpty())
return; return;
......
...@@ -50,7 +50,7 @@ namespace framework ...@@ -50,7 +50,7 @@ namespace framework
"menubar" "default" "menubar" "menubar" "default" "menubar"
*/ */
class PresetHandler : private ThreadHelpBase // attention! Must be the first base class to guarentee right initialize lock ... class PresetHandler
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment