summaryrefslogtreecommitdiff
path: root/toolkit
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2023-02-22 12:24:31 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2023-02-22 11:47:11 +0000
commit1f49d8ad7a520975f611023f77f3fc9c0e32ed77 (patch)
tree76286d1a5a9a1f5b36ec86b281234485300bd147 /toolkit
parentfce44263b6b59a720dfebb1643430339dc3959f6 (diff)
BaseMutex->std::mutex in ListenerMultiplexerBase
Change-Id: Icd565c83ca3b4afb1a846a637b7943b0498487e4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147457 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'toolkit')
-rw-r--r--toolkit/source/awt/vclxcontainer.cxx2
-rw-r--r--toolkit/source/awt/vclxwindow.cxx4
-rw-r--r--toolkit/source/controls/tree/treecontrol.cxx18
-rw-r--r--toolkit/source/helper/listenermultiplexer.cxx9
4 files changed, 24 insertions, 9 deletions
diff --git a/toolkit/source/awt/vclxcontainer.cxx b/toolkit/source/awt/vclxcontainer.cxx
index 5927c1f8e0b0..954655397853 100644
--- a/toolkit/source/awt/vclxcontainer.cxx
+++ b/toolkit/source/awt/vclxcontainer.cxx
@@ -19,7 +19,7 @@
#include <awt/vclxcontainer.hxx>
#include <toolkit/helper/vclunohelper.hxx>
-#include <comphelper/interfacecontainer3.hxx>
+#include <toolkit/helper/listenermultiplexer.hxx>
#include <vcl/svapp.hxx>
#include <vcl/window.hxx>
diff --git a/toolkit/source/awt/vclxwindow.cxx b/toolkit/source/awt/vclxwindow.cxx
index f5ebe82f02db..f3985bc12df5 100644
--- a/toolkit/source/awt/vclxwindow.cxx
+++ b/toolkit/source/awt/vclxwindow.cxx
@@ -1345,12 +1345,12 @@ void VCLXWindow::GetPropertyIds( std::vector< sal_uInt16 >& _out_rIds )
return ImplGetPropertyIds( _out_rIds, mpImpl->mbWithDefaultProps );
}
-::comphelper::OInterfaceContainerHelper3<css::awt::XVclContainerListener>& VCLXWindow::GetContainerListeners()
+ListenerMultiplexerBase<css::awt::XVclContainerListener>& VCLXWindow::GetContainerListeners()
{
return mpImpl->getContainerListeners();
}
-::comphelper::OInterfaceContainerHelper3<css::awt::XTopWindowListener>& VCLXWindow::GetTopWindowListeners()
+ListenerMultiplexerBase<css::awt::XTopWindowListener>& VCLXWindow::GetTopWindowListeners()
{
return mpImpl->getTopWindowListeners();
}
diff --git a/toolkit/source/controls/tree/treecontrol.cxx b/toolkit/source/controls/tree/treecontrol.cxx
index 43d353079f43..3fd06588d3d8 100644
--- a/toolkit/source/controls/tree/treecontrol.cxx
+++ b/toolkit/source/controls/tree/treecontrol.cxx
@@ -451,7 +451,9 @@ void UnoTreeControl::createPeer( const uno::Reference< awt::XToolkit > & rxToolk
void SAL_CALL TreeEditListenerMultiplexer::nodeEditing( const Reference< XTreeNode >& Node )
{
- ::comphelper::OInterfaceIteratorHelper3 aIt(*this);
+ std::unique_lock g(m_aMutex);
+ ::comphelper::OInterfaceIteratorHelper4 aIt(g, maListeners);
+ g.unlock();
while( aIt.hasMoreElements() )
{
Reference<XTreeEditListener> xListener(aIt.next());
@@ -463,7 +465,10 @@ void SAL_CALL TreeEditListenerMultiplexer::nodeEditing( const Reference< XTreeNo
{
OSL_ENSURE( e.Context.is(), "caught DisposedException with empty Context field" );
if ( e.Context == xListener || !e.Context.is() )
- aIt.remove();
+ {
+ std::unique_lock g2(m_aMutex);
+ aIt.remove(g2);
+ }
}
catch( const RuntimeException& )
{
@@ -474,7 +479,9 @@ void SAL_CALL TreeEditListenerMultiplexer::nodeEditing( const Reference< XTreeNo
void SAL_CALL TreeEditListenerMultiplexer::nodeEdited( const Reference< XTreeNode >& Node, const OUString& NewText )
{
- ::comphelper::OInterfaceIteratorHelper3 aIt(*this);
+ std::unique_lock g(m_aMutex);
+ ::comphelper::OInterfaceIteratorHelper4 aIt(g, maListeners);
+ g.unlock();
while( aIt.hasMoreElements() )
{
Reference<XTreeEditListener> xListener(aIt.next());
@@ -486,7 +493,10 @@ void SAL_CALL TreeEditListenerMultiplexer::nodeEdited( const Reference< XTreeNod
{
OSL_ENSURE( e.Context.is(), "caught DisposedException with empty Context field" );
if ( e.Context == xListener || !e.Context.is() )
- aIt.remove();
+ {
+ std::unique_lock g2(m_aMutex);
+ aIt.remove(g2);
+ }
}
catch( const RuntimeException& )
{
diff --git a/toolkit/source/helper/listenermultiplexer.cxx b/toolkit/source/helper/listenermultiplexer.cxx
index eeed767ffa48..1c3ac1de52ca 100644
--- a/toolkit/source/helper/listenermultiplexer.cxx
+++ b/toolkit/source/helper/listenermultiplexer.cxx
@@ -147,7 +147,9 @@ IMPL_TABLISTENERMULTIPLEXER_LISTENERMETHOD_BODY_1PARAM( TabListenerMultiplexer,
void TabListenerMultiplexer::changed( sal_Int32 evt, const css::uno::Sequence< css::beans::NamedValue >& evt2 )
{
sal_Int32 aMulti( evt );
- ::comphelper::OInterfaceIteratorHelper3 aIt(*this);
+ std::unique_lock g(m_aMutex);
+ ::comphelper::OInterfaceIteratorHelper4 aIt(g, maListeners);
+ g.unlock();
while( aIt.hasMoreElements() )
{
css::uno::Reference<css::awt::XTabListener> xListener(aIt.next());
@@ -159,7 +161,10 @@ void TabListenerMultiplexer::changed( sal_Int32 evt, const css::uno::Sequence< c
{
OSL_ENSURE( e.Context.is(), "caught DisposedException with empty Context field" );
if ( e.Context == xListener || !e.Context.is() )
- aIt.remove();
+ {
+ std::unique_lock g2(m_aMutex);
+ aIt.remove(g2);
+ }
}
catch(const css::uno::RuntimeException&)
{