framework/inc/uielement/fontmenucontroller.hxx | 2 +- framework/inc/uielement/fontsizemenucontroller.hxx | 2 +- framework/inc/uielement/langselectionmenucontroller.hxx | 2 +- framework/inc/uielement/newmenucontroller.hxx | 2 +- framework/source/uielement/fontmenucontroller.cxx | 2 +- framework/source/uielement/fontsizemenucontroller.cxx | 2 +- framework/source/uielement/langselectionmenucontroller.cxx | 2 +- framework/source/uielement/newmenucontroller.cxx | 2 +- framework/source/uielement/recentfilesmenucontroller.cxx | 12 ++++++------ framework/source/uielement/resourcemenucontroller.cxx | 8 ++++---- include/svtools/popupmenucontrollerbase.hxx | 2 +- svtools/source/uno/popupmenucontrollerbase.cxx | 6 ++++-- 12 files changed, 23 insertions(+), 21 deletions(-)
New commits: commit 8c200de99582c0b961748202a3e40985b3f8aa4f Author: Caolán McNamara <caolan.mcnam...@collabora.com> AuthorDate: Thu Oct 31 09:13:32 2024 +0000 Commit: Caolán McNamara <caolan.mcnam...@collabora.com> CommitDate: Thu Oct 31 14:23:00 2024 +0100 cid#1606874 silence Data race condition Change-Id: I6703ee228ac0717b04f58e14eedd02ab0722edf4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175861 Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com> Tested-by: Jenkins diff --git a/framework/inc/uielement/fontmenucontroller.hxx b/framework/inc/uielement/fontmenucontroller.hxx index b98e8c7b1dab..045704283f50 100644 --- a/framework/inc/uielement/fontmenucontroller.hxx +++ b/framework/inc/uielement/fontmenucontroller.hxx @@ -52,7 +52,7 @@ namespace framework virtual void SAL_CALL disposing( const css::lang::EventObject& Source ) override; private: - virtual void impl_setPopupMenu() override; + virtual void impl_setPopupMenu(std::unique_lock<std::mutex>& rGuard) override; void fillPopupMenu( const css::uno::Sequence< OUString >& rFontNameSeq, css::uno::Reference< css::awt::XPopupMenu > const & rPopupMenu ); OUString m_aFontFamilyName; diff --git a/framework/inc/uielement/fontsizemenucontroller.hxx b/framework/inc/uielement/fontsizemenucontroller.hxx index d04bc637a388..6e4e23f84959 100644 --- a/framework/inc/uielement/fontsizemenucontroller.hxx +++ b/framework/inc/uielement/fontsizemenucontroller.hxx @@ -52,7 +52,7 @@ namespace framework virtual void SAL_CALL disposing( const css::lang::EventObject& Source ) override; private: - virtual void impl_setPopupMenu() override; + virtual void impl_setPopupMenu(std::unique_lock<std::mutex>& rGuard) override; void setCurHeight( tools::Long nHeight, css::uno::Reference< css::awt::XPopupMenu > const & rPopupMenu ); void fillPopupMenu( css::uno::Reference< css::awt::XPopupMenu > const & rPopupMenu ); OUString retrievePrinterName( css::uno::Reference< css::frame::XFrame > const & rFrame ); diff --git a/framework/inc/uielement/langselectionmenucontroller.hxx b/framework/inc/uielement/langselectionmenucontroller.hxx index 070054a2f4ac..10d5e0a5fc14 100644 --- a/framework/inc/uielement/langselectionmenucontroller.hxx +++ b/framework/inc/uielement/langselectionmenucontroller.hxx @@ -54,7 +54,7 @@ namespace framework // XInitialization virtual void initializeImpl( std::unique_lock<std::mutex>& rGuard, const css::uno::Sequence< css::uno::Any >& aArguments ) override; - virtual void impl_setPopupMenu() override; + virtual void impl_setPopupMenu(std::unique_lock<std::mutex>& rGuard) override; enum Mode { MODE_SetLanguageSelectionMenu, diff --git a/framework/inc/uielement/newmenucontroller.hxx b/framework/inc/uielement/newmenucontroller.hxx index abc10e03e678..30e57fa71cfa 100644 --- a/framework/inc/uielement/newmenucontroller.hxx +++ b/framework/inc/uielement/newmenucontroller.hxx @@ -54,7 +54,7 @@ namespace framework // XInitialization virtual void initializeImpl( std::unique_lock<std::mutex>& rGuard, const css::uno::Sequence< css::uno::Any >& aArguments ) override; - virtual void impl_setPopupMenu() override; + virtual void impl_setPopupMenu(std::unique_lock<std::mutex>& rGuard) override; void fillPopupMenu( css::uno::Reference< css::awt::XPopupMenu > const & rPopupMenu ); static void retrieveShortcutsFromConfiguration( const css::uno::Reference< css::ui::XAcceleratorConfiguration >& rAccelCfg, diff --git a/framework/source/uielement/fontmenucontroller.cxx b/framework/source/uielement/fontmenucontroller.cxx index 9d4b836f53be..59dd9a0df9b9 100644 --- a/framework/source/uielement/fontmenucontroller.cxx +++ b/framework/source/uielement/fontmenucontroller.cxx @@ -177,7 +177,7 @@ void SAL_CALL FontMenuController::itemActivated( const css::awt::MenuEvent& ) } // XPopupMenuController -void FontMenuController::impl_setPopupMenu() +void FontMenuController::impl_setPopupMenu(std::unique_lock<std::mutex>& /*rGuard*/) { Reference< XDispatchProvider > xDispatchProvider( m_xFrame, UNO_QUERY ); diff --git a/framework/source/uielement/fontsizemenucontroller.cxx b/framework/source/uielement/fontsizemenucontroller.cxx index 297dfb9fd2ca..953814efb475 100644 --- a/framework/source/uielement/fontsizemenucontroller.cxx +++ b/framework/source/uielement/fontsizemenucontroller.cxx @@ -244,7 +244,7 @@ void SAL_CALL FontSizeMenuController::statusChanged( const FeatureStateEvent& Ev } // XPopupMenuController -void FontSizeMenuController::impl_setPopupMenu() +void FontSizeMenuController::impl_setPopupMenu(std::unique_lock<std::mutex>& /*rGuard*/) { Reference< XDispatchProvider > xDispatchProvider( m_xFrame, UNO_QUERY ); css::util::URL aTargetURL; diff --git a/framework/source/uielement/langselectionmenucontroller.cxx b/framework/source/uielement/langselectionmenucontroller.cxx index 16b61ed27d88..503db222843f 100644 --- a/framework/source/uielement/langselectionmenucontroller.cxx +++ b/framework/source/uielement/langselectionmenucontroller.cxx @@ -129,7 +129,7 @@ void SAL_CALL LanguageSelectionMenuController::statusChanged( const FeatureState } // XPopupMenuController -void LanguageSelectionMenuController::impl_setPopupMenu() +void LanguageSelectionMenuController::impl_setPopupMenu(std::unique_lock<std::mutex>& /*rGuard*/) { Reference< XDispatchProvider > xDispatchProvider( m_xFrame, UNO_QUERY ); diff --git a/framework/source/uielement/newmenucontroller.cxx b/framework/source/uielement/newmenucontroller.cxx index 0e08afd22ba3..0aa152028a38 100644 --- a/framework/source/uielement/newmenucontroller.cxx +++ b/framework/source/uielement/newmenucontroller.cxx @@ -412,7 +412,7 @@ void SAL_CALL NewMenuController::itemActivated( const css::awt::MenuEvent& ) } // XPopupMenuController -void NewMenuController::impl_setPopupMenu() +void NewMenuController::impl_setPopupMenu(std::unique_lock<std::mutex>& /*rGuard*/) { if ( m_xPopupMenu.is() ) diff --git a/framework/source/uielement/recentfilesmenucontroller.cxx b/framework/source/uielement/recentfilesmenucontroller.cxx index a7cb312ffa50..9205036d81a7 100644 --- a/framework/source/uielement/recentfilesmenucontroller.cxx +++ b/framework/source/uielement/recentfilesmenucontroller.cxx @@ -96,8 +96,8 @@ public: virtual void SAL_CALL disposing( const css::lang::EventObject& Source ) override; private: - virtual void impl_setPopupMenu() override; - void fillPopupMenu( css::uno::Reference< css::awt::XPopupMenu > const & rPopupMenu ); + virtual void impl_setPopupMenu(std::unique_lock<std::mutex>& rGuard) override; + void fillPopupMenu(std::unique_lock<std::mutex>& rGuard, css::uno::Reference<css::awt::XPopupMenu > const & rPopupMenu ); void executeEntry( sal_Int32 nIndex ); void executeEntryImpl(std::unique_lock<std::mutex>& rGuard, sal_Int32 nIndex); @@ -150,7 +150,7 @@ void InsertItem(const css::uno::Reference<css::awt::XPopupMenu>& rPopupMenu, // private function -void RecentFilesMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu > const & rPopupMenu ) +void RecentFilesMenuController::fillPopupMenu(std::unique_lock<std::mutex>& /*rGuard*/, Reference<css::awt::XPopupMenu> const & rPopupMenu) { SolarMutexGuard aSolarMutexGuard; @@ -426,14 +426,14 @@ void SAL_CALL RecentFilesMenuController::itemSelected( const css::awt::MenuEvent void SAL_CALL RecentFilesMenuController::itemActivated( const css::awt::MenuEvent& ) { std::unique_lock aLock( m_aMutex ); - impl_setPopupMenu(); + impl_setPopupMenu(aLock); } // XPopupMenuController -void RecentFilesMenuController::impl_setPopupMenu() +void RecentFilesMenuController::impl_setPopupMenu(std::unique_lock<std::mutex>& rGuard) { if ( m_xPopupMenu.is() ) - fillPopupMenu( m_xPopupMenu ); + fillPopupMenu(rGuard, m_xPopupMenu); } // XDispatchProvider diff --git a/framework/source/uielement/resourcemenucontroller.cxx b/framework/source/uielement/resourcemenucontroller.cxx index 393803790fa6..63b884becddf 100644 --- a/framework/source/uielement/resourcemenucontroller.cxx +++ b/framework/source/uielement/resourcemenucontroller.cxx @@ -374,7 +374,7 @@ public: virtual OUString SAL_CALL getImplementationName() override; private: - virtual void impl_setPopupMenu() override; + virtual void impl_setPopupMenu(std::unique_lock<std::mutex>& rGuard) override; }; SaveAsMenuController::SaveAsMenuController( const css::uno::Reference< css::uno::XComponentContext >& rContext, @@ -391,7 +391,7 @@ void InsertItem(const css::uno::Reference<css::awt::XPopupMenu>& rPopupMenu, rPopupMenu->setCommand(nItemId, rCommand); } -void SaveAsMenuController::impl_setPopupMenu() +void SaveAsMenuController::impl_setPopupMenu(std::unique_lock<std::mutex>& /*rGuard*/) { SolarMutexGuard aGuard; @@ -423,7 +423,7 @@ public: OUString SAL_CALL getImplementationName() override; private: - void impl_setPopupMenu() override; + void impl_setPopupMenu(std::unique_lock<std::mutex>& /*rGuard*/) override; }; constexpr sal_uInt16 START_ITEMID_WINDOWLIST = 4600; @@ -531,7 +531,7 @@ void WindowListMenuController::itemSelected( const css::awt::MenuEvent& rEvent ) } } -void WindowListMenuController::impl_setPopupMenu() +void WindowListMenuController::impl_setPopupMenu(std::unique_lock<std::mutex>& /*rGuard*/) { // Make this controller work also with initially empty // menu, which PopupMenu::ImplExecute doesn't allow. diff --git a/include/svtools/popupmenucontrollerbase.hxx b/include/svtools/popupmenucontrollerbase.hxx index b484aafd7a06..228fd5bd4c8f 100644 --- a/include/svtools/popupmenucontrollerbase.hxx +++ b/include/svtools/popupmenucontrollerbase.hxx @@ -105,7 +105,7 @@ namespace svt virtual void disposing(std::unique_lock<std::mutex>& rGuard) override; static void resetPopupMenu( css::uno::Reference< css::awt::XPopupMenu > const & rPopupMenu ); - virtual void impl_setPopupMenu(); + virtual void impl_setPopupMenu(std::unique_lock<std::mutex>& rGuard); static OUString determineBaseURL( std::u16string_view aURL ); DECL_DLLPRIVATE_STATIC_LINK( PopupMenuControllerBase, ExecuteHdl_Impl, void*, void ); diff --git a/svtools/source/uno/popupmenucontrollerbase.cxx b/svtools/source/uno/popupmenucontrollerbase.cxx index de46b999e4d7..ab6bee1a0555 100644 --- a/svtools/source/uno/popupmenucontrollerbase.cxx +++ b/svtools/source/uno/popupmenucontrollerbase.cxx @@ -354,13 +354,15 @@ void SAL_CALL PopupMenuControllerBase::setPopupMenu( const Reference< awt::XPopu m_xURLTransformer->parseStrict( aTargetURL ); m_xDispatch = xDispatchProvider->queryDispatch( aTargetURL, OUString(), 0 ); - impl_setPopupMenu(); + impl_setPopupMenu(aLock); } updatePopupMenu(); } -void PopupMenuControllerBase::impl_setPopupMenu() + +void PopupMenuControllerBase::impl_setPopupMenu(std::unique_lock<std::mutex>& /*rGuard*/) { } + } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */