diff options
author | sb <sb@openoffice.org> | 2010-01-05 13:49:30 +0100 |
---|---|---|
committer | sb <sb@openoffice.org> | 2010-01-05 13:49:30 +0100 |
commit | c1b3c31eddab295ae8ab40f6d7ac2c40d9f32b60 (patch) | |
tree | 71e992d4d199df2563cffd8cd32293644490b970 /desktop | |
parent | 0de34b05f3c1a0409d23b63b9e69d4d7abbe1090 (diff) | |
parent | 8d1a56460f0cfc55d6cd72c1c4e936e7871c1cde (diff) |
sb118: merged in DEV300_m68
Diffstat (limited to 'desktop')
-rw-r--r-- | desktop/source/app/app.cxx | 4 | ||||
-rw-r--r-- | desktop/source/app/appinit.cxx | 5 |
2 files changed, 4 insertions, 5 deletions
diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx index 14422298b2aa..60419c60baca 100644 --- a/desktop/source/app/app.cxx +++ b/desktop/source/app/app.cxx @@ -1668,7 +1668,11 @@ void Desktop::Main() // remove temp directory RemoveTemporaryDirectory(); + // The acceptors in the AcceptorMap must be released (in DeregisterServices) + // with the solar mutex unlocked, to avoid deadlock: + nAcquireCount = Application::ReleaseSolarMutex(); DeregisterServices(); + Application::AcquireSolarMutex(nAcquireCount); tools::DeInitTestToolLib(); diff --git a/desktop/source/app/appinit.cxx b/desktop/source/app/appinit.cxx index b81923a48d9c..95ce7a728a55 100644 --- a/desktop/source/app/appinit.cxx +++ b/desktop/source/app/appinit.cxx @@ -314,7 +314,6 @@ void Desktop::RegisterServices( Reference< XMultiServiceFactory >& xSMgr ) namespace { struct acceptorMap : public rtl::Static< AcceptorMap, acceptorMap > {}; - struct mtxAccMap : public rtl::Static< osl::Mutex, mtxAccMap > {}; struct CurrentTempURL : public rtl::Static< String, CurrentTempURL > {}; } @@ -322,8 +321,6 @@ static sal_Bool bAccept = sal_False; void Desktop::createAcceptor(const OUString& aAcceptString) { - // make sure nobody adds an acceptor whle we create one... - osl::MutexGuard aGuard(mtxAccMap::get()); // check whether the requested acceptor already exists AcceptorMap &rMap = acceptorMap::get(); AcceptorMap::const_iterator pIter = rMap.find(aAcceptString); @@ -370,7 +367,6 @@ class enable void Desktop::enableAcceptors() { RTL_LOGFILE_CONTEXT(aLog, "desktop (lo119109) Desktop::enableAcceptors"); - osl::MutexGuard aGuard(mtxAccMap::get()); if (!bAccept) { // from now on, all new acceptors are enabled @@ -384,7 +380,6 @@ void Desktop::enableAcceptors() void Desktop::destroyAcceptor(const OUString& aAcceptString) { - osl::MutexGuard aGuard(mtxAccMap::get()); // special case stop all acceptors AcceptorMap &rMap = acceptorMap::get(); if (aAcceptString.compareToAscii("all") == 0) { |