User: rt Date: 05/10/24 01:29:29 Modified: /dba/dbaccess/source/core/dataaccess/ intercept.cxx
Log: INTEGRATION: CWS dba201d (1.5.2); FILE MERGED 2005/10/07 06:24:04 fs 1.5.2.2: remove the unused implementation of XComponent / supersede DisconnectContentHolder by calling dispose -> no leaking instances anymore 2005/10/06 14:09:26 fs 1.5.2.1: #i52649# when dispatching a close request, keep our m_pContentHolder alive. Else, the EmbeddedObject implementations strangely crash File Changes: Directory: /dba/dbaccess/source/core/dataaccess/ ================================================ File [changed]: intercept.cxx Url: http://dba.openoffice.org/source/browse/dba/dbaccess/source/core/dataaccess/intercept.cxx?r1=1.5&r2=1.6 Delta lines: +9 -40 -------------------- --- intercept.cxx 23 Sep 2005 12:06:53 -0000 1.5 +++ intercept.cxx 24 Oct 2005 08:29:26 -0000 1.6 @@ -80,55 +80,23 @@ #define DISPATCH_RELOAD 5 // the OSL_ENSURE in CTOR has to be changed too, when adding new defines -void OInterceptor::DisconnectContentHolder() -{ - osl::MutexGuard aGuard( m_aMutex ); - m_pContentHolder = NULL; -} - -void SAL_CALL -OInterceptor::addEventListener( - const Reference< com::sun::star::lang::XEventListener >& Listener ) - throw( RuntimeException ) -{ - osl::MutexGuard aGuard( m_aMutex ); - - if ( ! m_pDisposeEventListeners ) - m_pDisposeEventListeners = - new cppu::OInterfaceContainerHelper( m_aMutex ); - - m_pDisposeEventListeners->addInterface( Listener ); -} - - -void SAL_CALL -OInterceptor::removeEventListener( - const Reference< com::sun::star::lang::XEventListener >& Listener ) - throw( RuntimeException ) -{ - osl::MutexGuard aGuard( m_aMutex ); - - if ( m_pDisposeEventListeners ) - m_pDisposeEventListeners->removeInterface( Listener ); -} - - void SAL_CALL OInterceptor::dispose() throw( RuntimeException ) { - EventObject aEvt; - aEvt.Source = static_cast< XDispatch* >( this ); + EventObject aEvt( *this ); osl::MutexGuard aGuard(m_aMutex); if ( m_pDisposeEventListeners && m_pDisposeEventListeners->getLength() ) m_pDisposeEventListeners->disposeAndClear( aEvt ); - if(m_pStatCL) + if ( m_pStatCL ) m_pStatCL->disposeAndClear( aEvt ); - m_xSlaveDispatchProvider = 0; - m_xMasterDispatchProvider = 0; + m_xSlaveDispatchProvider.clear(); + m_xMasterDispatchProvider.clear(); + + m_pContentHolder = NULL; } @@ -227,6 +195,7 @@ if ( xEvtB.is() ) xEvtB->removeEventListener(this); + Reference< XInterface > xKeepContentHolderAlive( *m_pContentHolder ); xDispatch->dispatch( _URL, Arguments ); } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
