summaryrefslogtreecommitdiff
path: root/framework
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2023-02-21 15:05:37 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2023-02-22 13:24:47 +0000
commit5032262fccd0ef7f274323ae481b3230ffd42d3a (patch)
tree5f8c69e47764a907faf497c1c6932cf3962e3ddb /framework
parent47cd9b65efa662719950866ab9c45fb3f130e1b4 (diff)
BaseMutex->std::mutex in PopupMenuControllerBase
Change-Id: I26877ac7b6e5e39f511418d978199189c62cca6c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147416 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'framework')
-rw-r--r--framework/inc/uielement/langselectionmenucontroller.hxx6
-rw-r--r--framework/inc/uielement/newmenucontroller.hxx6
-rw-r--r--framework/inc/uielement/toolbarsmenucontroller.hxx6
-rw-r--r--framework/source/uielement/controlmenucontroller.cxx21
-rw-r--r--framework/source/uielement/fontmenucontroller.cxx12
-rw-r--r--framework/source/uielement/fontsizemenucontroller.cxx12
-rw-r--r--framework/source/uielement/headermenucontroller.cxx12
-rw-r--r--framework/source/uielement/langselectionmenucontroller.cxx14
-rw-r--r--framework/source/uielement/macrosmenucontroller.cxx4
-rw-r--r--framework/source/uielement/newmenucontroller.cxx10
-rw-r--r--framework/source/uielement/objectmenucontroller.cxx4
-rw-r--r--framework/source/uielement/recentfilesmenucontroller.cxx16
-rw-r--r--framework/source/uielement/resourcemenucontroller.cxx6
-rw-r--r--framework/source/uielement/toolbarmodemenucontroller.cxx10
-rw-r--r--framework/source/uielement/toolbarsmenucontroller.cxx19
15 files changed, 76 insertions, 82 deletions
diff --git a/framework/inc/uielement/langselectionmenucontroller.hxx b/framework/inc/uielement/langselectionmenucontroller.hxx
index c27f42b56431..070054a2f4ac 100644
--- a/framework/inc/uielement/langselectionmenucontroller.hxx
+++ b/framework/inc/uielement/langselectionmenucontroller.hxx
@@ -44,9 +44,6 @@ namespace framework
// XPopupMenuController
virtual void SAL_CALL updatePopupMenu() override;
- // XInitialization
- virtual void SAL_CALL initialize( const css::uno::Sequence< css::uno::Any >& aArguments ) override;
-
// XStatusListener
virtual void SAL_CALL statusChanged( const css::frame::FeatureStateEvent& Event ) override;
@@ -54,6 +51,9 @@ namespace framework
virtual void SAL_CALL disposing( const css::lang::EventObject& Source ) override;
private:
+ // XInitialization
+ virtual void initializeImpl( std::unique_lock<std::mutex>& rGuard, const css::uno::Sequence< css::uno::Any >& aArguments ) override;
+
virtual void impl_setPopupMenu() override;
enum Mode
{
diff --git a/framework/inc/uielement/newmenucontroller.hxx b/framework/inc/uielement/newmenucontroller.hxx
index 57e58239fc19..45b5e8f88696 100644
--- a/framework/inc/uielement/newmenucontroller.hxx
+++ b/framework/inc/uielement/newmenucontroller.hxx
@@ -40,9 +40,6 @@ namespace framework
virtual sal_Bool SAL_CALL supportsService( const OUString& sServiceName ) override;
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override;
- // XInitialization
- virtual void SAL_CALL initialize( const css::uno::Sequence< css::uno::Any >& aArguments ) override;
-
// XStatusListener
virtual void SAL_CALL statusChanged( const css::frame::FeatureStateEvent& Event ) override;
@@ -54,6 +51,9 @@ namespace framework
virtual void SAL_CALL disposing( const css::lang::EventObject& Source ) override;
private:
+ // XInitialization
+ virtual void initializeImpl( std::unique_lock<std::mutex>& rGuard, const css::uno::Sequence< css::uno::Any >& aArguments ) override;
+
virtual void impl_setPopupMenu() override;
void fillPopupMenu( css::uno::Reference< css::awt::XPopupMenu > const & rPopupMenu );
diff --git a/framework/inc/uielement/toolbarsmenucontroller.hxx b/framework/inc/uielement/toolbarsmenucontroller.hxx
index 99d64775d6b6..48ae2eacd360 100644
--- a/framework/inc/uielement/toolbarsmenucontroller.hxx
+++ b/framework/inc/uielement/toolbarsmenucontroller.hxx
@@ -48,9 +48,6 @@ namespace framework
// XPopupMenuController
virtual void SAL_CALL setPopupMenu( const css::uno::Reference< css::awt::XPopupMenu >& PopupMenu ) override;
- // XInitialization
- virtual void SAL_CALL initialize( const css::uno::Sequence< css::uno::Any >& aArguments ) override;
-
// XStatusListener
virtual void SAL_CALL statusChanged( const css::frame::FeatureStateEvent& Event ) override;
@@ -71,6 +68,9 @@ namespace framework
DECL_STATIC_LINK( ToolbarsMenuController, ExecuteHdl_Impl, void*, void );
private:
+ // XInitialization
+ virtual void initializeImpl( std::unique_lock<std::mutex>& rGuard, const css::uno::Sequence< css::uno::Any >& aArguments ) override;
+
void fillPopupMenu( css::uno::Reference< css::awt::XPopupMenu > const & rPopupMenu );
css::uno::Sequence< css::uno::Sequence< css::beans::PropertyValue > > getLayoutManagerToolbars( const css::uno::Reference< css::frame::XLayoutManager >& rLayoutManager );
css::uno::Reference< css::frame::XDispatch > getDispatchFromCommandURL( const OUString& rCommandURL );
diff --git a/framework/source/uielement/controlmenucontroller.cxx b/framework/source/uielement/controlmenucontroller.cxx
index dec13831646f..b990e725d507 100644
--- a/framework/source/uielement/controlmenucontroller.cxx
+++ b/framework/source/uielement/controlmenucontroller.cxx
@@ -145,9 +145,6 @@ public:
// XPopupMenuController
virtual void SAL_CALL updatePopupMenu() override;
- // XInitialization
- virtual void SAL_CALL initialize( const uno::Sequence< uno::Any >& aArguments ) override;
-
// XStatusListener
virtual void SAL_CALL statusChanged( const frame::FeatureStateEvent& Event ) override;
@@ -158,6 +155,9 @@ public:
virtual void SAL_CALL disposing( const lang::EventObject& Source ) override;
private:
+ // XInitialization
+ virtual void initializeImpl( std::unique_lock<std::mutex>& rGuard, const uno::Sequence< uno::Any >& aArguments ) override;
+
class UrlToDispatchMap : public std::unordered_map< OUString,
uno::Reference< frame::XDispatch > >
{
@@ -228,7 +228,7 @@ void SAL_CALL ControlMenuController::disposing( const EventObject& )
{
Reference< css::awt::XMenuListener > xHolder(this);
- osl::MutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
m_xFrame.clear();
m_xDispatch.clear();
@@ -240,7 +240,7 @@ void SAL_CALL ControlMenuController::disposing( const EventObject& )
// XStatusListener
void SAL_CALL ControlMenuController::statusChanged( const FeatureStateEvent& Event )
{
- osl::MutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
if (!m_xPopupMenu)
return;
@@ -264,7 +264,7 @@ void SAL_CALL ControlMenuController::statusChanged( const FeatureStateEvent& Eve
// XMenuListener
void SAL_CALL ControlMenuController::itemActivated( const css::awt::MenuEvent& )
{
- osl::MutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
SolarMutexGuard aSolarMutexGuard;
@@ -282,9 +282,9 @@ void SAL_CALL ControlMenuController::itemActivated( const css::awt::MenuEvent& )
// XPopupMenuController
void SAL_CALL ControlMenuController::updatePopupMenu()
{
- osl::MutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
- throwIfDisposed();
+ throwIfDisposed(aLock);
if ( !(m_xFrame.is() && m_xPopupMenu.is()) )
return;
@@ -310,10 +310,9 @@ void SAL_CALL ControlMenuController::updatePopupMenu()
}
// XInitialization
-void SAL_CALL ControlMenuController::initialize( const Sequence< Any >& aArguments )
+void ControlMenuController::initializeImpl( std::unique_lock<std::mutex>& rGuard, const Sequence< Any >& aArguments )
{
- osl::MutexGuard aLock( m_aMutex );
- svt::PopupMenuControllerBase::initialize(aArguments);
+ svt::PopupMenuControllerBase::initializeImpl(rGuard, aArguments);
m_aBaseURL.clear();
}
diff --git a/framework/source/uielement/fontmenucontroller.cxx b/framework/source/uielement/fontmenucontroller.cxx
index e25b5b210b83..6dec522a3869 100644
--- a/framework/source/uielement/fontmenucontroller.cxx
+++ b/framework/source/uielement/fontmenucontroller.cxx
@@ -111,7 +111,7 @@ void SAL_CALL FontMenuController::disposing( const EventObject& )
{
Reference< css::awt::XMenuListener > xHolder(this);
- osl::MutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
m_xFrame.clear();
m_xDispatch.clear();
m_xFontListDispatch.clear();
@@ -129,12 +129,12 @@ void SAL_CALL FontMenuController::statusChanged( const FeatureStateEvent& Event
if ( Event.State >>= aFontDescriptor )
{
- osl::MutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
m_aFontFamilyName = aFontDescriptor.Name;
}
else if ( Event.State >>= aFontNameSeq )
{
- osl::MutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
if ( m_xPopupMenu.is() )
fillPopupMenu( aFontNameSeq, m_xPopupMenu );
}
@@ -143,7 +143,7 @@ void SAL_CALL FontMenuController::statusChanged( const FeatureStateEvent& Event
// XMenuListener
void SAL_CALL FontMenuController::itemActivated( const css::awt::MenuEvent& )
{
- osl::MutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
if ( !m_xPopupMenu.is() )
return;
@@ -193,12 +193,12 @@ void SAL_CALL FontMenuController::updatePopupMenu()
{
svt::PopupMenuControllerBase::updatePopupMenu();
- osl::ClearableMutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
Reference< XDispatch > xDispatch( m_xFontListDispatch );
css::util::URL aTargetURL;
aTargetURL.Complete = ".uno:FontNameList";
m_xURLTransformer->parseStrict( aTargetURL );
- aLock.clear();
+ aLock.unlock();
if ( xDispatch.is() )
{
diff --git a/framework/source/uielement/fontsizemenucontroller.cxx b/framework/source/uielement/fontsizemenucontroller.cxx
index e050c1659eb6..bb81c23c284b 100644
--- a/framework/source/uielement/fontsizemenucontroller.cxx
+++ b/framework/source/uielement/fontsizemenucontroller.cxx
@@ -208,7 +208,7 @@ void SAL_CALL FontSizeMenuController::disposing( const EventObject& )
{
Reference< css::awt::XMenuListener > xHolder(this);
- osl::MutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
m_xFrame.clear();
m_xDispatch.clear();
m_xCurrentFontDispatch.clear();
@@ -225,14 +225,14 @@ void SAL_CALL FontSizeMenuController::statusChanged( const FeatureStateEvent& Ev
if ( Event.State >>= aFontDescriptor )
{
- osl::MutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
if ( m_xPopupMenu.is() )
fillPopupMenu( m_xPopupMenu );
}
else if ( Event.State >>= aFontHeight )
{
- osl::MutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
m_aFontHeight = aFontHeight;
if ( m_xPopupMenu.is() )
@@ -256,15 +256,15 @@ void FontSizeMenuController::impl_setPopupMenu()
void SAL_CALL FontSizeMenuController::updatePopupMenu()
{
- osl::ClearableMutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
- throwIfDisposed();
+ throwIfDisposed(aLock);
Reference< XDispatch > xDispatch( m_xCurrentFontDispatch );
css::util::URL aTargetURL;
aTargetURL.Complete = ".uno:CharFontName";
m_xURLTransformer->parseStrict( aTargetURL );
- aLock.clear();
+ aLock.unlock();
if ( xDispatch.is() )
{
diff --git a/framework/source/uielement/headermenucontroller.cxx b/framework/source/uielement/headermenucontroller.cxx
index 842e74559fac..f8c76fb8d8c1 100644
--- a/framework/source/uielement/headermenucontroller.cxx
+++ b/framework/source/uielement/headermenucontroller.cxx
@@ -185,7 +185,7 @@ void SAL_CALL HeaderMenuController::disposing( const EventObject& )
{
Reference< css::awt::XMenuListener > xHolder(this);
- osl::MutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
m_xFrame.clear();
m_xDispatch.clear();
@@ -201,7 +201,7 @@ void SAL_CALL HeaderMenuController::statusChanged( const FeatureStateEvent& Even
if ( Event.State >>= xModel )
{
- osl::MutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
m_xModel = xModel;
if ( m_xPopupMenu.is() )
fillPopupMenu( xModel, m_xPopupMenu );
@@ -211,17 +211,17 @@ void SAL_CALL HeaderMenuController::statusChanged( const FeatureStateEvent& Even
// XMenuListener
void SAL_CALL HeaderMenuController::updatePopupMenu()
{
- osl::ResettableMutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
- throwIfDisposed();
+ throwIfDisposed(aLock);
Reference< css::frame::XModel > xModel( m_xModel );
- aLock.clear();
+ aLock.unlock();
if ( !xModel.is() )
svt::PopupMenuControllerBase::updatePopupMenu();
- aLock.reset();
+ aLock.lock();
if ( m_xPopupMenu.is() && m_xModel.is() )
fillPopupMenu( m_xModel, m_xPopupMenu );
}
diff --git a/framework/source/uielement/langselectionmenucontroller.cxx b/framework/source/uielement/langselectionmenucontroller.cxx
index 51994c1021a0..4685afbea6a7 100644
--- a/framework/source/uielement/langselectionmenucontroller.cxx
+++ b/framework/source/uielement/langselectionmenucontroller.cxx
@@ -88,7 +88,7 @@ void SAL_CALL LanguageSelectionMenuController::disposing( const EventObject& )
{
Reference< css::awt::XMenuListener > xHolder(this);
- osl::MutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
m_xFrame.clear();
m_xDispatch.clear();
m_xLanguageDispatch.clear();
@@ -103,7 +103,7 @@ void SAL_CALL LanguageSelectionMenuController::statusChanged( const FeatureState
{
SolarMutexGuard aSolarMutexGuard;
- if (rBHelper.bDisposed || rBHelper.bInDispose)
+ if (m_bDisposed)
return;
m_bShowMenu = true;
@@ -233,12 +233,12 @@ void SAL_CALL LanguageSelectionMenuController::updatePopupMenu()
svt::PopupMenuControllerBase::updatePopupMenu();
// Force status update to get information about the current languages
- osl::ClearableMutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
Reference< XDispatch > xDispatch( m_xLanguageDispatch );
css::util::URL aTargetURL;
aTargetURL.Complete = m_aLangStatusCommandURL;
m_xURLTransformer->parseStrict( aTargetURL );
- aLock.clear();
+ aLock.unlock();
if ( xDispatch.is() )
{
@@ -263,14 +263,12 @@ void SAL_CALL LanguageSelectionMenuController::updatePopupMenu()
}
// XInitialization
-void SAL_CALL LanguageSelectionMenuController::initialize( const Sequence< Any >& aArguments )
+void LanguageSelectionMenuController::initializeImpl( std::unique_lock<std::mutex>& rGuard, const Sequence< Any >& aArguments )
{
- osl::MutexGuard aLock( m_aMutex );
-
bool bInitialized( m_bInitialized );
if ( !bInitialized )
{
- svt::PopupMenuControllerBase::initialize(aArguments);
+ svt::PopupMenuControllerBase::initializeImpl(rGuard, aArguments);
if ( m_bInitialized )
{
diff --git a/framework/source/uielement/macrosmenucontroller.cxx b/framework/source/uielement/macrosmenucontroller.cxx
index b15b3191efe7..8a80d00c1861 100644
--- a/framework/source/uielement/macrosmenucontroller.cxx
+++ b/framework/source/uielement/macrosmenucontroller.cxx
@@ -95,7 +95,7 @@ void SAL_CALL MacrosMenuController::disposing( const EventObject& )
{
Reference< css::awt::XMenuListener > xHolder(this);
- osl::MutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
m_xFrame.clear();
m_xDispatch.clear();
m_xContext.clear();
@@ -110,7 +110,7 @@ void SAL_CALL MacrosMenuController::disposing( const EventObject& )
// XStatusListener
void SAL_CALL MacrosMenuController::statusChanged( const FeatureStateEvent& )
{
- osl::MutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
if ( m_xPopupMenu.is() )
{
fillPopupMenu( m_xPopupMenu );
diff --git a/framework/source/uielement/newmenucontroller.cxx b/framework/source/uielement/newmenucontroller.cxx
index 3e2260e3fae8..55c4d324801f 100644
--- a/framework/source/uielement/newmenucontroller.cxx
+++ b/framework/source/uielement/newmenucontroller.cxx
@@ -336,7 +336,7 @@ void SAL_CALL NewMenuController::disposing( const EventObject& )
{
Reference< css::awt::XMenuListener > xHolder(this);
- osl::MutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
m_xFrame.clear();
m_xDispatch.clear();
m_xContext.clear();
@@ -359,7 +359,7 @@ void SAL_CALL NewMenuController::itemSelected( const css::awt::MenuEvent& rEvent
Reference< XComponentContext > xContext;
{
- osl::MutexGuard aLock(m_aMutex);
+ std::unique_lock aLock(m_aMutex);
xPopupMenu = m_xPopupMenu;
xContext = m_xContext;
}
@@ -435,15 +435,13 @@ void NewMenuController::impl_setPopupMenu()
}
// XInitialization
-void SAL_CALL NewMenuController::initialize( const Sequence< Any >& aArguments )
+void NewMenuController::initializeImpl( std::unique_lock<std::mutex>& rGuard, const Sequence< Any >& aArguments )
{
- osl::MutexGuard aLock( m_aMutex );
-
bool bInitialized( m_bInitialized );
if ( bInitialized )
return;
- svt::PopupMenuControllerBase::initialize( aArguments );
+ svt::PopupMenuControllerBase::initializeImpl( rGuard, aArguments );
if ( m_bInitialized )
{
diff --git a/framework/source/uielement/objectmenucontroller.cxx b/framework/source/uielement/objectmenucontroller.cxx
index 7e9e056d4293..653a02d60a17 100644
--- a/framework/source/uielement/objectmenucontroller.cxx
+++ b/framework/source/uielement/objectmenucontroller.cxx
@@ -103,7 +103,7 @@ void SAL_CALL ObjectMenuController::disposing( const EventObject& )
{
Reference< css::awt::XMenuListener > xHolder(this);
- osl::MutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
m_xFrame.clear();
m_xDispatch.clear();
@@ -118,7 +118,7 @@ void SAL_CALL ObjectMenuController::statusChanged( const FeatureStateEvent& Even
Sequence < css::embed::VerbDescriptor > aVerbCommandSeq;
if ( Event.State >>= aVerbCommandSeq )
{
- osl::MutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
if ( m_xPopupMenu.is() )
fillPopupMenu( aVerbCommandSeq, m_xPopupMenu );
}
diff --git a/framework/source/uielement/recentfilesmenucontroller.cxx b/framework/source/uielement/recentfilesmenucontroller.cxx
index ef95d300058b..644fd2215780 100644
--- a/framework/source/uielement/recentfilesmenucontroller.cxx
+++ b/framework/source/uielement/recentfilesmenucontroller.cxx
@@ -331,7 +331,7 @@ void SAL_CALL RecentFilesMenuController::disposing( const EventObject& )
{
Reference< css::awt::XMenuListener > xHolder(this);
- osl::MutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
m_xFrame.clear();
m_xDispatch.clear();
@@ -343,7 +343,7 @@ void SAL_CALL RecentFilesMenuController::disposing( const EventObject& )
// XStatusListener
void SAL_CALL RecentFilesMenuController::statusChanged( const FeatureStateEvent& Event )
{
- osl::MutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
m_bDisabled = !Event.IsEnabled;
}
@@ -352,7 +352,7 @@ void SAL_CALL RecentFilesMenuController::itemSelected( const css::awt::MenuEvent
Reference< css::awt::XPopupMenu > xPopupMenu;
{
- osl::MutexGuard aLock(m_aMutex);
+ std::unique_lock aLock(m_aMutex);
xPopupMenu = m_xPopupMenu;
}
@@ -384,7 +384,7 @@ void SAL_CALL RecentFilesMenuController::itemSelected( const css::awt::MenuEvent
void SAL_CALL RecentFilesMenuController::itemActivated( const css::awt::MenuEvent& )
{
- osl::MutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
impl_setPopupMenu();
}
@@ -401,9 +401,9 @@ Reference< XDispatch > SAL_CALL RecentFilesMenuController::queryDispatch(
const OUString& /*sTarget*/,
sal_Int32 /*nFlags*/ )
{
- osl::MutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
- throwIfDisposed();
+ throwIfDisposed(aLock);
if ( aURL.Complete.startsWith( m_aBaseURL ) )
return Reference< XDispatch >( this );
@@ -416,9 +416,9 @@ void SAL_CALL RecentFilesMenuController::dispatch(
const URL& aURL,
const Sequence< PropertyValue >& /*seqProperties*/ )
{
- osl::MutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
- throwIfDisposed();
+ throwIfDisposed(aLock);
if ( !aURL.Complete.startsWith( m_aBaseURL ) )
return;
diff --git a/framework/source/uielement/resourcemenucontroller.cxx b/framework/source/uielement/resourcemenucontroller.cxx
index c1757895ee5b..065a97c63a47 100644
--- a/framework/source/uielement/resourcemenucontroller.cxx
+++ b/framework/source/uielement/resourcemenucontroller.cxx
@@ -77,7 +77,7 @@ private:
css::uno::Reference< css::container::XIndexAccess > m_xMenuContainer;
css::uno::Reference< css::ui::XUIConfigurationManager > m_xConfigManager, m_xModuleConfigManager;
void addVerbs( const css::uno::Sequence< css::embed::VerbDescriptor >& rVerbs );
- virtual void SAL_CALL disposing() override;
+ virtual void disposing(std::unique_lock<std::mutex>& rGuard) override;
protected:
css::uno::Reference< css::uno::XComponentContext > m_xContext;
@@ -325,7 +325,7 @@ void ResourceMenuController::disposing( const css::lang::EventObject& rEvent )
}
}
-void ResourceMenuController::disposing()
+void ResourceMenuController::disposing(std::unique_lock<std::mutex>& rGuard)
{
css::uno::Reference< css::ui::XUIConfiguration > xConfig( m_xConfigManager, css::uno::UNO_QUERY );
if ( xConfig.is() )
@@ -348,7 +348,7 @@ void ResourceMenuController::disposing()
m_xMenuBarManager.clear();
}
- svt::PopupMenuControllerBase::disposing();
+ svt::PopupMenuControllerBase::disposing(rGuard);
}
OUString ResourceMenuController::getImplementationName()
diff --git a/framework/source/uielement/toolbarmodemenucontroller.cxx b/framework/source/uielement/toolbarmodemenucontroller.cxx
index cf967788a5aa..62cfdc04dd41 100644
--- a/framework/source/uielement/toolbarmodemenucontroller.cxx
+++ b/framework/source/uielement/toolbarmodemenucontroller.cxx
@@ -157,7 +157,7 @@ void SAL_CALL ToolbarModeMenuController::disposing( const EventObject& )
{
Reference< css::awt::XMenuListener > xHolder(this);
- osl::MutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
m_xFrame.clear();
m_xDispatch.clear();
@@ -172,9 +172,9 @@ void SAL_CALL ToolbarModeMenuController::statusChanged( const FeatureStateEvent&
OUString aFeatureURL( Event.FeatureURL.Complete );
// All other status events will be processed here
- osl::ClearableMutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
Reference< css::awt::XPopupMenu > xPopupMenu( m_xPopupMenu );
- aLock.clear();
+ aLock.unlock();
if ( !xPopupMenu.is() )
return;
@@ -268,9 +268,9 @@ void SAL_CALL ToolbarModeMenuController::itemActivated( const css::awt::MenuEven
// XPopupMenuController
void SAL_CALL ToolbarModeMenuController::setPopupMenu( const Reference< css::awt::XPopupMenu >& xPopupMenu )
{
- osl::MutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
- throwIfDisposed();
+ throwIfDisposed(aLock);
if ( m_xFrame.is() && !m_xPopupMenu.is() )
{
diff --git a/framework/source/uielement/toolbarsmenucontroller.cxx b/framework/source/uielement/toolbarsmenucontroller.cxx
index aa2ebd88d039..c4c8c3f73e1f 100644
--- a/framework/source/uielement/toolbarsmenucontroller.cxx
+++ b/framework/source/uielement/toolbarsmenucontroller.cxx
@@ -451,7 +451,7 @@ void SAL_CALL ToolbarsMenuController::disposing( const EventObject& )
{
Reference< css::awt::XMenuListener > xHolder(this);
- osl::MutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
m_xFrame.clear();
m_xDispatch.clear();
m_xDocCfgMgr.clear();
@@ -469,9 +469,9 @@ void SAL_CALL ToolbarsMenuController::statusChanged( const FeatureStateEvent& Ev
OUString aFeatureURL( Event.FeatureURL.Complete );
// All other status events will be processed here
- osl::ClearableMutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
Reference< css::awt::XPopupMenu > xPopupMenu( m_xPopupMenu );
- aLock.clear();
+ aLock.unlock();
if ( !xPopupMenu.is() )
return;
@@ -519,7 +519,7 @@ void SAL_CALL ToolbarsMenuController::itemSelected( const css::awt::MenuEvent& r
Reference< XNameAccess > xPersistentWindowState;
{
- osl::MutexGuard aLock(m_aMutex);
+ std::unique_lock aLock(m_aMutex);
xPopupMenu = m_xPopupMenu;
xContext = m_xContext;
xURLTransformer = m_xURLTransformer;
@@ -669,7 +669,7 @@ void SAL_CALL ToolbarsMenuController::itemActivated( const css::awt::MenuEvent&
Reference< XDispatchProvider > xDispatchProvider( m_xFrame, UNO_QUERY );
Reference< XURLTransformer > xURLTransformer( m_xURLTransformer );
{
- osl::MutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
fillPopupMenu( m_xPopupMenu );
aCmdVector = m_aCommandVector;
}
@@ -706,9 +706,9 @@ void SAL_CALL ToolbarsMenuController::itemActivated( const css::awt::MenuEvent&
// XPopupMenuController
void SAL_CALL ToolbarsMenuController::setPopupMenu( const Reference< css::awt::XPopupMenu >& xPopupMenu )
{
- osl::MutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
- throwIfDisposed();
+ throwIfDisposed(aLock);
if ( m_xFrame.is() && !m_xPopupMenu.is() )
{
@@ -723,14 +723,13 @@ void SAL_CALL ToolbarsMenuController::setPopupMenu( const Reference< css::awt::X
}
// XInitialization
-void SAL_CALL ToolbarsMenuController::initialize( const Sequence< Any >& aArguments )
+void ToolbarsMenuController::initializeImpl( std::unique_lock<std::mutex>& rGuard, const Sequence< Any >& aArguments )
{
- osl::MutexGuard aLock( m_aMutex );
bool bInitialized( m_bInitialized );
if ( bInitialized )
return;
- svt::PopupMenuControllerBase::initialize(aArguments);
+ svt::PopupMenuControllerBase::initializeImpl(rGuard, aArguments);
if ( !m_bInitialized )
return;