diff --git a/sd/source/ui/toolpanel/TaskPaneFocusManager.cxx b/sd/source/ui/toolpanel/TaskPaneFocusManager.cxx old mode 100644 new mode 100755 index 48882d0f2f9e..d1c5d2c0ff53 --- a/sd/source/ui/toolpanel/TaskPaneFocusManager.cxx +++ b/sd/source/ui/toolpanel/TaskPaneFocusManager.cxx @@ -31,9 +31,9 @@ #include "TaskPaneFocusManager.hxx" #include -#include #include #include +#include #include namespace { @@ -70,16 +70,23 @@ class FocusManager::LinkMap -FocusManager* FocusManager::spInstance = NULL; - - FocusManager& FocusManager::Instance (void) { + static FocusManager* spInstance = NULL; + if (spInstance == NULL) { - ::vos::OGuard aGuard (::Application::GetSolarMutex()); + ::osl::MutexGuard aGuard (::osl::Mutex::getGlobalMutex()); if (spInstance == NULL) - spInstance = new FocusManager (); + { + static FocusManager aInstance; + OSL_DOUBLE_CHECKED_LOCKING_MEMORY_BARRIER(); + spInstance = &aInstance; + } + } + else + { + OSL_DOUBLE_CHECKED_LOCKING_MEMORY_BARRIER(); } return *spInstance; } diff --git a/sd/source/ui/toolpanel/TaskPaneFocusManager.hxx b/sd/source/ui/toolpanel/TaskPaneFocusManager.hxx old mode 100644 new mode 100755 index b9b28154dc5b..0b5199a9a7cc --- a/sd/source/ui/toolpanel/TaskPaneFocusManager.hxx +++ b/sd/source/ui/toolpanel/TaskPaneFocusManager.hxx @@ -103,7 +103,6 @@ public: bool TransferFocus (::Window* pSource, const KeyCode& rCode); private: - static FocusManager* spInstance; class LinkMap; ::std::auto_ptr mpLinks;