summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/comphelper/interfacecontainer4.hxx13
-rw-r--r--sc/inc/fielduno.hxx4
-rw-r--r--sc/source/ui/unoobj/fielduno.cxx32
-rw-r--r--ucb/source/cacher/contentresultsetwrapper.cxx14
-rw-r--r--ucb/source/cacher/contentresultsetwrapper.hxx4
-rw-r--r--ucb/source/cacher/dynamicresultsetwrapper.cxx13
-rw-r--r--ucb/source/cacher/dynamicresultsetwrapper.hxx4
-rw-r--r--ucb/source/core/ucbstore.cxx42
-rw-r--r--ucb/source/core/ucbstore.hxx4
9 files changed, 47 insertions, 83 deletions
diff --git a/include/comphelper/interfacecontainer4.hxx b/include/comphelper/interfacecontainer4.hxx
index 7f6e72bf91f1..3a6696fda8c5 100644
--- a/include/comphelper/interfacecontainer4.hxx
+++ b/include/comphelper/interfacecontainer4.hxx
@@ -200,7 +200,7 @@ public:
this parameter only here to make that this container is accessed while locked
*/
template <typename FuncT>
- inline void forEach(std::unique_lock<std::mutex>& rGuard, FuncT const& func);
+ inline void forEach(std::unique_lock<std::mutex>& rGuard, FuncT const& func) const;
/** Calls a UNO listener method for each contained listener.
@@ -227,7 +227,7 @@ public:
template <typename EventT>
inline void notifyEach(std::unique_lock<std::mutex>& rGuard,
void (SAL_CALL ListenerT::*NotificationMethod)(const EventT&),
- const EventT& Event);
+ const EventT& Event) const;
private:
friend class OInterfaceIteratorHelper4<ListenerT>;
@@ -279,14 +279,15 @@ inline OInterfaceContainerHelper4<T>::OInterfaceContainerHelper4()
template <class T>
template <typename FuncT>
inline void OInterfaceContainerHelper4<T>::forEach(std::unique_lock<std::mutex>& rGuard,
- FuncT const& func)
+ FuncT const& func) const
{
if (std::as_const(maData)->size() == 0)
{
return;
}
- maData.make_unique(); // so we can iterate over the data without holding the lock
- OInterfaceIteratorHelper4<T> iter(rGuard, *this);
+ const_cast<OInterfaceContainerHelper4&>(*this)
+ .maData.make_unique(); // so we can iterate over the data without holding the lock
+ OInterfaceIteratorHelper4<T> iter(rGuard, const_cast<OInterfaceContainerHelper4&>(*this));
rGuard.unlock();
while (iter.hasMoreElements())
{
@@ -312,7 +313,7 @@ template <class ListenerT>
template <typename EventT>
inline void OInterfaceContainerHelper4<ListenerT>::notifyEach(
std::unique_lock<std::mutex>& rGuard,
- void (SAL_CALL ListenerT::*NotificationMethod)(const EventT&), const EventT& Event)
+ void (SAL_CALL ListenerT::*NotificationMethod)(const EventT&), const EventT& Event) const
{
forEach<NotifySingleListener<EventT>>(rGuard,
NotifySingleListener<EventT>(NotificationMethod, Event));
diff --git a/sc/inc/fielduno.hxx b/sc/inc/fielduno.hxx
index 7cf455c7bcc3..82c9a04ebb87 100644
--- a/sc/inc/fielduno.hxx
+++ b/sc/inc/fielduno.hxx
@@ -60,7 +60,7 @@ private:
ScAddress aCellPos;
std::unique_ptr<ScEditSource> mpEditSource;
/// List of refresh listeners.
- std::unique_ptr<comphelper::OInterfaceContainerHelper4<css::util::XRefreshListener>> mpRefreshListeners;
+ comphelper::OInterfaceContainerHelper4<css::util::XRefreshListener> maRefreshListeners;
/// mutex to lock the InterfaceContainerHelper
std::mutex aMutex;
@@ -114,7 +114,7 @@ private:
std::unique_ptr<ScEditSource> mpEditSource;
/// List of refresh listeners.
- std::unique_ptr<comphelper::OInterfaceContainerHelper4<css::util::XRefreshListener>> mpRefreshListeners;
+ comphelper::OInterfaceContainerHelper4<css::util::XRefreshListener> maRefreshListeners;
/// mutex to lock the InterfaceContainerHelper
std::mutex aMutex;
diff --git a/sc/source/ui/unoobj/fielduno.cxx b/sc/source/ui/unoobj/fielduno.cxx
index 2a05a24fab75..aacb4e2e3815 100644
--- a/sc/source/ui/unoobj/fielduno.cxx
+++ b/sc/source/ui/unoobj/fielduno.cxx
@@ -289,12 +289,11 @@ ScCellFieldsObj::~ScCellFieldsObj()
osl_atomic_increment( &m_refCount );
std::unique_lock g(aMutex);
- if (mpRefreshListeners)
+ if (maRefreshListeners.getLength(g))
{
lang::EventObject aEvent;
aEvent.Source.set(static_cast<cppu::OWeakObject*>(this));
- mpRefreshListeners->disposeAndClear(g, aEvent);
- mpRefreshListeners.reset();
+ maRefreshListeners.disposeAndClear(g, aEvent);
}
}
@@ -387,12 +386,12 @@ void SAL_CALL ScCellFieldsObj::removeContainerListener(
void SAL_CALL ScCellFieldsObj::refresh( )
{
std::unique_lock g(aMutex);
- if (mpRefreshListeners)
+ if (maRefreshListeners.getLength(g))
{
// Call all listeners.
lang::EventObject aEvent;
aEvent.Source.set(uno::Reference< util::XRefreshable >(this));
- mpRefreshListeners->notifyEach( g, &util::XRefreshListener::refreshed, aEvent );
+ maRefreshListeners.notifyEach( g, &util::XRefreshListener::refreshed, aEvent );
}
}
@@ -401,9 +400,7 @@ void SAL_CALL ScCellFieldsObj::addRefreshListener( const uno::Reference< util::X
if (xListener.is())
{
std::unique_lock g(aMutex);
- if (!mpRefreshListeners)
- mpRefreshListeners.reset( new comphelper::OInterfaceContainerHelper4<util::XRefreshListener>() );
- mpRefreshListeners->addInterface(g, xListener);
+ maRefreshListeners.addInterface(g, xListener);
}
}
@@ -412,8 +409,7 @@ void SAL_CALL ScCellFieldsObj::removeRefreshListener( const uno::Reference<util:
if (xListener.is())
{
std::unique_lock g(aMutex);
- if (mpRefreshListeners)
- mpRefreshListeners->removeInterface(g, xListener);
+ maRefreshListeners.removeInterface(g, xListener);
}
}
@@ -431,12 +427,11 @@ ScHeaderFieldsObj::~ScHeaderFieldsObj()
osl_atomic_increment( &m_refCount );
std::unique_lock g(aMutex);
- if (mpRefreshListeners)
+ if (maRefreshListeners.getLength(g))
{
lang::EventObject aEvent;
aEvent.Source = static_cast<cppu::OWeakObject*>(this);
- mpRefreshListeners->disposeAndClear(g, aEvent);
- mpRefreshListeners.reset();
+ maRefreshListeners.disposeAndClear(g, aEvent);
}
}
@@ -539,12 +534,12 @@ void SAL_CALL ScHeaderFieldsObj::removeContainerListener(
void SAL_CALL ScHeaderFieldsObj::refresh( )
{
std::unique_lock g(aMutex);
- if (mpRefreshListeners)
+ if (maRefreshListeners.getLength(g))
{
// Call all listeners.
lang::EventObject aEvent;
aEvent.Source.set(uno::Reference< util::XRefreshable >(this));
- mpRefreshListeners->notifyEach( g, &util::XRefreshListener::refreshed, aEvent);
+ maRefreshListeners.notifyEach( g, &util::XRefreshListener::refreshed, aEvent);
}
}
@@ -553,9 +548,7 @@ void SAL_CALL ScHeaderFieldsObj::addRefreshListener( const uno::Reference< util:
if (xListener.is())
{
std::unique_lock g(aMutex);
- if (!mpRefreshListeners)
- mpRefreshListeners.reset(new comphelper::OInterfaceContainerHelper4<util::XRefreshListener>());
- mpRefreshListeners->addInterface(g, xListener);
+ maRefreshListeners.addInterface(g, xListener);
}
}
@@ -564,8 +557,7 @@ void SAL_CALL ScHeaderFieldsObj::removeRefreshListener( const uno::Reference<uti
if (xListener.is())
{
std::unique_lock g(aMutex);
- if (mpRefreshListeners)
- mpRefreshListeners->removeInterface(g, xListener);
+ maRefreshListeners.removeInterface(g, xListener);
}
}
diff --git a/ucb/source/cacher/contentresultsetwrapper.cxx b/ucb/source/cacher/contentresultsetwrapper.cxx
index e5917f3fdbc5..14393ff497f4 100644
--- a/ucb/source/cacher/contentresultsetwrapper.cxx
+++ b/ucb/source/cacher/contentresultsetwrapper.cxx
@@ -299,11 +299,11 @@ void SAL_CALL ContentResultSetWrapper::dispose()
aGuard.lock();
isCleared = false;
}
- if( m_pDisposeEventListeners && m_pDisposeEventListeners->getLength(aGuard) )
+ if( m_aDisposeEventListeners.getLength(aGuard) )
{
EventObject aEvt;
aEvt.Source = static_cast< XComponent * >( this );
- m_pDisposeEventListeners->disposeAndClear( aGuard, aEvt );
+ m_aDisposeEventListeners.disposeAndClear( aGuard, aEvt );
}
if( m_pPropertyChangeListeners )
@@ -331,11 +331,7 @@ void SAL_CALL ContentResultSetWrapper::addEventListener( const Reference< XEvent
std::unique_lock aGuard( m_aMutex );
impl_EnsureNotDisposed(aGuard);
- if ( !m_pDisposeEventListeners )
- m_pDisposeEventListeners.reset(
- new OInterfaceContainerHelper4<XEventListener>() );
-
- m_pDisposeEventListeners->addInterface( aGuard, Listener );
+ m_aDisposeEventListeners.addInterface( aGuard, Listener );
}
@@ -344,9 +340,7 @@ void SAL_CALL ContentResultSetWrapper::removeEventListener( const Reference< XEv
{
std::unique_lock aGuard( m_aMutex );
impl_EnsureNotDisposed(aGuard);
-
- if ( m_pDisposeEventListeners )
- m_pDisposeEventListeners->removeInterface( aGuard, Listener );
+ m_aDisposeEventListeners.removeInterface( aGuard, Listener );
}
diff --git a/ucb/source/cacher/contentresultsetwrapper.hxx b/ucb/source/cacher/contentresultsetwrapper.hxx
index 4c67ca89ef29..4c1ae370ff20 100644
--- a/ucb/source/cacher/contentresultsetwrapper.hxx
+++ b/ucb/source/cacher/contentresultsetwrapper.hxx
@@ -85,8 +85,8 @@ private:
//management of listeners
bool m_bDisposed; ///Dispose call ready.
bool m_bInDispose;///In dispose call
- std::unique_ptr<comphelper::OInterfaceContainerHelper4<css::lang::XEventListener>>
- m_pDisposeEventListeners;
+ comphelper::OInterfaceContainerHelper4<css::lang::XEventListener>
+ m_aDisposeEventListeners;
std::unique_ptr<PropertyChangeListenerContainer_Impl>
m_pPropertyChangeListeners;
std::unique_ptr<VetoableChangeListenerContainer_Impl>
diff --git a/ucb/source/cacher/dynamicresultsetwrapper.cxx b/ucb/source/cacher/dynamicresultsetwrapper.cxx
index 8ad5b53f3055..db881dad492f 100644
--- a/ucb/source/cacher/dynamicresultsetwrapper.cxx
+++ b/ucb/source/cacher/dynamicresultsetwrapper.cxx
@@ -133,11 +133,11 @@ void SAL_CALL DynamicResultSetWrapper::dispose()
xSourceComponent = m_xSource;
- if( m_pDisposeEventListeners && m_pDisposeEventListeners->getLength(aGuard) )
+ if( m_aDisposeEventListeners.getLength(aGuard) )
{
EventObject aEvt;
aEvt.Source = static_cast< XComponent * >( this );
- m_pDisposeEventListeners->disposeAndClear( aGuard, aEvt );
+ m_aDisposeEventListeners.disposeAndClear( aGuard, aEvt );
}
/* //@todo ?? ( only if java collection needs to long )
@@ -156,11 +156,7 @@ void SAL_CALL DynamicResultSetWrapper::addEventListener( const Reference< XEvent
impl_EnsureNotDisposed();
std::unique_lock aGuard( m_aMutex );
- if ( !m_pDisposeEventListeners )
- m_pDisposeEventListeners.reset(
- new OInterfaceContainerHelper4<XEventListener>() );
-
- m_pDisposeEventListeners->addInterface( aGuard, Listener );
+ m_aDisposeEventListeners.addInterface( aGuard, Listener );
}
@@ -170,8 +166,7 @@ void SAL_CALL DynamicResultSetWrapper::removeEventListener( const Reference< XEv
impl_EnsureNotDisposed();
std::unique_lock aGuard( m_aMutex );
- if ( m_pDisposeEventListeners )
- m_pDisposeEventListeners->removeInterface( aGuard, Listener );
+ m_aDisposeEventListeners.removeInterface( aGuard, Listener );
}
diff --git a/ucb/source/cacher/dynamicresultsetwrapper.hxx b/ucb/source/cacher/dynamicresultsetwrapper.hxx
index 66548a64b420..a7917506d874 100644
--- a/ucb/source/cacher/dynamicresultsetwrapper.hxx
+++ b/ucb/source/cacher/dynamicresultsetwrapper.hxx
@@ -41,8 +41,8 @@ private:
//management of listeners
bool m_bDisposed; ///Dispose call ready.
bool m_bInDispose;///In dispose call
- std::unique_ptr<comphelper::OInterfaceContainerHelper4<css::lang::XEventListener>>
- m_pDisposeEventListeners;
+ comphelper::OInterfaceContainerHelper4<css::lang::XEventListener>
+ m_aDisposeEventListeners;
protected:
rtl::Reference<DynamicResultSetWrapperListener>
m_xMyListenerImpl;
diff --git a/ucb/source/core/ucbstore.cxx b/ucb/source/core/ucbstore.cxx
index 65c0e531e2e2..75ec9aa0a270 100644
--- a/ucb/source/core/ucbstore.cxx
+++ b/ucb/source/core/ucbstore.cxx
@@ -1053,20 +1053,18 @@ css::uno::Sequence< OUString > SAL_CALL PersistentPropertySet::getSupportedServi
void SAL_CALL PersistentPropertySet::dispose()
{
std::unique_lock l(m_aMutex);
- if ( m_pDisposeEventListeners &&
- m_pDisposeEventListeners->getLength(l) )
+ if ( m_aDisposeEventListeners.getLength(l) )
{
EventObject aEvt;
aEvt.Source = static_cast< XComponent * >( this );
- m_pDisposeEventListeners->disposeAndClear( l, aEvt );
+ m_aDisposeEventListeners.disposeAndClear( l, aEvt );
}
- if ( m_pPropSetChangeListeners &&
- m_pPropSetChangeListeners->getLength(l) )
+ if ( m_aPropSetChangeListeners.getLength(l) )
{
EventObject aEvt;
aEvt.Source = static_cast< XPropertySetInfoChangeNotifier * >( this );
- m_pPropSetChangeListeners->disposeAndClear( l, aEvt );
+ m_aPropSetChangeListeners.disposeAndClear( l, aEvt );
}
if ( m_pPropertyChangeListeners )
@@ -1084,11 +1082,7 @@ void SAL_CALL PersistentPropertySet::addEventListener(
{
std::unique_lock l(m_aMutex);
- if ( !m_pDisposeEventListeners )
- m_pDisposeEventListeners.reset(
- new OInterfaceContainerHelper4<css::lang::XEventListener>() );
-
- m_pDisposeEventListeners->addInterface( l, Listener );
+ m_aDisposeEventListeners.addInterface( l, Listener );
}
@@ -1097,8 +1091,7 @@ void SAL_CALL PersistentPropertySet::removeEventListener(
const Reference< XEventListener >& Listener )
{
std::unique_lock l(m_aMutex);
- if ( m_pDisposeEventListeners )
- m_pDisposeEventListeners->removeInterface( l, Listener );
+ m_aDisposeEventListeners.removeInterface( l, Listener );
// Note: Don't want to delete empty container here -> performance.
}
@@ -1431,8 +1424,7 @@ void SAL_CALL PersistentPropertySet::addProperty(
m_pInfo->reset();
// Notify propertyset info change listeners.
- if ( m_pPropSetChangeListeners &&
- m_pPropSetChangeListeners->getLength(aGuard) )
+ if ( m_aPropSetChangeListeners.getLength(aGuard) )
{
PropertySetInfoChangeEvent evt(
static_cast< OWeakObject * >( this ),
@@ -1556,8 +1548,7 @@ void SAL_CALL PersistentPropertySet::removeProperty( const OUString& Name )
{
sal_Int32 nHandle = -1;
- if ( m_pPropSetChangeListeners &&
- m_pPropSetChangeListeners->getLength(aGuard) )
+ if ( m_aPropSetChangeListeners.getLength(aGuard) )
{
// Obtain property handle ( needed for propertysetinfo
// change event )...
@@ -1589,8 +1580,7 @@ void SAL_CALL PersistentPropertySet::removeProperty( const OUString& Name )
m_pInfo->reset();
// Notify propertyset info change listeners.
- if ( m_pPropSetChangeListeners &&
- m_pPropSetChangeListeners->getLength(aGuard) )
+ if ( m_aPropSetChangeListeners.getLength(aGuard) )
{
PropertySetInfoChangeEvent evt(
static_cast< OWeakObject * >( this ),
@@ -1635,11 +1625,7 @@ void SAL_CALL PersistentPropertySet::addPropertySetInfoChangeListener(
{
std::unique_lock aGuard(m_aMutex);
- if ( !m_pPropSetChangeListeners )
- m_pPropSetChangeListeners.reset(
- new OInterfaceContainerHelper4<XPropertySetInfoChangeListener>() );
-
- m_pPropSetChangeListeners->addInterface( aGuard, Listener );
+ m_aPropSetChangeListeners.addInterface( aGuard, Listener );
}
@@ -1648,8 +1634,7 @@ void SAL_CALL PersistentPropertySet::removePropertySetInfoChangeListener(
const Reference< XPropertySetInfoChangeListener >& Listener )
{
std::unique_lock aGuard(m_aMutex);
- if ( m_pPropSetChangeListeners )
- m_pPropSetChangeListeners->removeInterface( aGuard, Listener );
+ m_aPropSetChangeListeners.removeInterface( aGuard, Listener );
}
@@ -1923,11 +1908,8 @@ void PersistentPropertySet::notifyPropertySetInfoChange(
std::unique_lock<std::mutex>& rGuard,
const PropertySetInfoChangeEvent& evt ) const
{
- if ( !m_pPropSetChangeListeners )
- return;
-
// Notify event listeners.
- m_pPropSetChangeListeners->notifyEach( rGuard, &XPropertySetInfoChangeListener::propertySetInfoChange, evt );
+ m_aPropSetChangeListeners.notifyEach( rGuard, &XPropertySetInfoChangeListener::propertySetInfoChange, evt );
}
diff --git a/ucb/source/core/ucbstore.hxx b/ucb/source/core/ucbstore.hxx
index 5f431fa8ac0d..31de991246ef 100644
--- a/ucb/source/core/ucbstore.hxx
+++ b/ucb/source/core/ucbstore.hxx
@@ -163,8 +163,8 @@ class PersistentPropertySet : public cppu::WeakImplHelper <
OUString m_aKey;
OUString m_aFullKey;
mutable std::mutex m_aMutex;
- std::unique_ptr<comphelper::OInterfaceContainerHelper4<css::lang::XEventListener>> m_pDisposeEventListeners;
- std::unique_ptr<comphelper::OInterfaceContainerHelper4<css::beans::XPropertySetInfoChangeListener>> m_pPropSetChangeListeners;
+ comphelper::OInterfaceContainerHelper4<css::lang::XEventListener> m_aDisposeEventListeners;
+ comphelper::OInterfaceContainerHelper4<css::beans::XPropertySetInfoChangeListener> m_aPropSetChangeListeners;
std::unique_ptr<PropertyListeners_Impl> m_pPropertyChangeListeners;
private: