diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2023-02-21 15:05:37 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2023-02-22 13:24:47 +0000 |
commit | 5032262fccd0ef7f274323ae481b3230ffd42d3a (patch) | |
tree | 5f8c69e47764a907faf497c1c6932cf3962e3ddb /framework | |
parent | 47cd9b65efa662719950866ab9c45fb3f130e1b4 (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')
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; |