summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulien Nabet <serval2412@yahoo.fr>2017-09-01 21:05:26 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2017-09-02 14:24:13 +0200
commit8c7b42c942d6693915dc825ede80279f720a5775 (patch)
treebd54902c503cb3e26aae70931680eb58d1a0f00b
parent31ee13b5a40715e217711e48753eeb7170e3349c (diff)
Replace list by vector session.cxx (vcl)
+ simplify loops Change-Id: Ic25576db83fe47f7da45667912d24d8ec44494e1 Reviewed-on: https://gerrit.libreoffice.org/41803 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
-rw-r--r--vcl/source/app/session.cxx94
1 files changed, 42 insertions, 52 deletions
diff --git a/vcl/source/app/session.cxx b/vcl/source/app/session.cxx
index 93b019372566..57a4303e2aea 100644
--- a/vcl/source/app/session.cxx
+++ b/vcl/source/app/session.cxx
@@ -35,7 +35,7 @@
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/frame/XSessionManagerListener2.hpp>
-#include <list>
+#include <vector>
using namespace com::sun::star::uno;
using namespace com::sun::star::lang;
@@ -64,7 +64,7 @@ class VCLSession:
{}
};
- std::list< Listener > m_aListeners;
+ std::vector< Listener > m_aListeners;
std::unique_ptr< SalSession > m_xSession;
bool m_bInteractionRequested;
bool m_bInteractionGranted;
@@ -111,17 +111,15 @@ void VCLSession::callSaveRequested( bool bShutdown )
{
SAL_INFO("vcl.se", "VCLSession::callSaveRequested" );
- std::list< Listener > aListeners;
+ std::vector< Listener > aListeners;
{
osl::MutexGuard aGuard( m_aMutex );
// reset listener states
- for( std::list< Listener >::iterator it = m_aListeners.begin();
- it != m_aListeners.end(); ++it )
- {
- it->m_bSaveDone = it->m_bInteractionRequested = it->m_bInteractionDone = false;
+ for (auto & it: m_aListeners) {
+ it.m_bSaveDone = it.m_bInteractionRequested = it.m_bInteractionDone = false;
}
- // copy listener list since calling a listener may remove it.
+ // copy listener vector since calling a listener may remove it.
aListeners = m_aListeners;
// set back interaction state
m_bSaveDone = false;
@@ -144,21 +142,21 @@ void VCLSession::callSaveRequested( bool bShutdown )
}
SolarMutexReleaser aReleaser;
- for( std::list< Listener >::const_iterator it = aListeners.begin(); it != aListeners.end(); ++it )
- it->m_xListener->doSave( bShutdown, false/*bCancelable*/ );
+ for (auto const & it: aListeners)
+ it.m_xListener->doSave( bShutdown, false/*bCancelable*/ );
}
void VCLSession::callInteractionGranted( bool bInteractionGranted )
{
SAL_INFO("vcl.se", "VCLSession::callInteractionGranted" );
- std::list< Listener > aListeners;
+ std::vector< Listener > aListeners;
{
osl::MutexGuard aGuard( m_aMutex );
- // copy listener list since calling a listener may remove it.
- for( std::list< Listener >::const_iterator it = m_aListeners.begin(); it != m_aListeners.end(); ++it )
- if( it->m_bInteractionRequested )
- aListeners.push_back( *it );
+ // copy listener vector since calling a listener may remove it.
+ for (auto const & it: m_aListeners)
+ if( it.m_bInteractionRequested )
+ aListeners.push_back( it );
m_bInteractionGranted = bInteractionGranted;
@@ -176,45 +174,45 @@ void VCLSession::callInteractionGranted( bool bInteractionGranted )
}
SolarMutexReleaser aReleaser;
- for( std::list< Listener >::const_iterator it = aListeners.begin(); it != aListeners.end(); ++it )
- it->m_xListener->approveInteraction( bInteractionGranted );
+ for (auto const & it: aListeners)
+ it.m_xListener->approveInteraction( bInteractionGranted );
}
void VCLSession::callShutdownCancelled()
{
SAL_INFO("vcl.se", "VCLSession::callShutdownCancelled");
- std::list< Listener > aListeners;
+ std::vector< Listener > aListeners;
{
osl::MutexGuard aGuard( m_aMutex );
- // copy listener list since calling a listener may remove it.
+ // copy listener vector since calling a listener may remove it.
aListeners = m_aListeners;
// set back interaction state
m_bInteractionRequested = m_bInteractionDone = m_bInteractionGranted = false;
}
SolarMutexReleaser aReleaser;
- for( std::list< Listener >::const_iterator it = aListeners.begin(); it != aListeners.end(); ++it )
- it->m_xListener->shutdownCanceled();
+ for (auto const & it: aListeners)
+ it.m_xListener->shutdownCanceled();
}
void VCLSession::callQuit()
{
SAL_INFO("vcl.se", "VCLSession::callQuit");
- std::list< Listener > aListeners;
+ std::vector< Listener > aListeners;
{
osl::MutexGuard aGuard( m_aMutex );
- // copy listener list since calling a listener may remove it.
+ // copy listener vector since calling a listener may remove it.
aListeners = m_aListeners;
// set back interaction state
m_bInteractionRequested = m_bInteractionDone = m_bInteractionGranted = false;
}
SolarMutexReleaser aReleaser;
- for( std::list< Listener >::const_iterator it = aListeners.begin(); it != aListeners.end(); ++it )
+ for (auto const & it: aListeners)
{
- css::uno::Reference< XSessionManagerListener2 > xListener2( it->m_xListener, UNO_QUERY );
+ css::uno::Reference< XSessionManagerListener2 > xListener2( it.m_xListener, UNO_QUERY );
if( xListener2.is() )
xListener2->doQuit();
}
@@ -268,18 +266,11 @@ void SAL_CALL VCLSession::removeSessionManagerListener( const css::uno::Referenc
osl::MutexGuard aGuard( m_aMutex );
- std::list< Listener >::iterator it = m_aListeners.begin();
+ std::vector< Listener >::iterator it = m_aListeners.begin();
SAL_INFO("vcl.se.debug", " m_aListeners.size() = " << m_aListeners.size() );
- while( it != m_aListeners.end() )
- {
- if( it->m_xListener == xListener )
- {
- it = m_aListeners.erase(it);
- }
- else
- ++it;
- }
+
+ m_aListeners.erase(std::remove_if(m_aListeners.begin(), m_aListeners.end(), [&](Listener& listener) {return xListener == listener.m_xListener;}), m_aListeners.end());
}
void SAL_CALL VCLSession::queryInteraction( const css::uno::Reference<XSessionManagerListener>& xListener )
@@ -303,13 +294,13 @@ void SAL_CALL VCLSession::queryInteraction( const css::uno::Reference<XSessionMa
m_xSession->queryInteraction();
m_bInteractionRequested = true;
}
- for( std::list< Listener >::iterator it = m_aListeners.begin(); it != m_aListeners.end(); ++it )
+ for (auto & it: m_aListeners)
{
- if( it->m_xListener == xListener )
+ if( it.m_xListener == xListener )
{
SAL_INFO("vcl.se.debug", " it->m_xListener == xListener");
- it->m_bInteractionRequested = true;
- it->m_bInteractionDone = false;
+ it.m_bInteractionRequested = true;
+ it.m_bInteractionDone = false;
}
}
}
@@ -320,15 +311,15 @@ void SAL_CALL VCLSession::interactionDone( const css::uno::Reference< XSessionMa
osl::MutexGuard aGuard( m_aMutex );
int nRequested = 0, nDone = 0;
- for( std::list< Listener >::iterator it = m_aListeners.begin(); it != m_aListeners.end(); ++it )
+ for (auto & it: m_aListeners)
{
- if( it->m_bInteractionRequested )
+ if( it.m_bInteractionRequested )
{
nRequested++;
- if( xListener == it->m_xListener )
- it->m_bInteractionDone = true;
+ if( xListener == it.m_xListener )
+ it.m_bInteractionDone = true;
}
- if( it->m_bInteractionDone )
+ if( it.m_bInteractionDone )
nDone++;
}
@@ -349,12 +340,11 @@ void SAL_CALL VCLSession::saveDone( const css::uno::Reference< XSessionManagerLi
osl::MutexGuard aGuard( m_aMutex );
bool bSaveDone = true;
- for( std::list< Listener >::iterator it = m_aListeners.begin();
- it != m_aListeners.end(); ++it )
+ for (auto & it: m_aListeners)
{
- if( it->m_xListener == xListener )
- it->m_bSaveDone = true;
- if( ! it->m_bSaveDone )
+ if( it.m_xListener == xListener )
+ it.m_bSaveDone = true;
+ if( ! it.m_bSaveDone )
bSaveDone = false;
}
@@ -378,13 +368,13 @@ sal_Bool SAL_CALL VCLSession::cancelShutdown()
void VCLSession::disposing() {
SAL_INFO("vcl.se", "VCLSession::disposing");
- std::list<Listener> list;
+ std::vector<Listener> vector;
{
osl::MutexGuard g(m_aMutex);
- list.swap(m_aListeners);
+ vector.swap(m_aListeners);
}
css::lang::EventObject src(static_cast<OWeakObject *>(this));
- for (auto const & i: list) {
+ for (auto const & i: vector) {
try {
i.m_xListener->disposing(src);
SAL_INFO("vcl.se.debug", " call Listener disposing");