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: */

Reply via email to