User: obo Date: 06/03/29 04:32:42 Modified: /dba/dbaccess/source/core/dataaccess/ ModelImpl.cxx
Log: INTEGRATION: CWS dba203a (1.11.16); FILE MERGED 2006/03/16 09:52:32 fs 1.11.16.1: #i63162# hold the document weak File Changes: Directory: /dba/dbaccess/source/core/dataaccess/ ================================================ File [changed]: ModelImpl.cxx Url: http://dba.openoffice.org/source/browse/dba/dbaccess/source/core/dataaccess/ModelImpl.cxx?r1=1.11&r2=1.12 Delta lines: +21 -17 --------------------- --- ModelImpl.cxx 31 Jan 2006 18:40:09 -0000 1.11 +++ ModelImpl.cxx 29 Mar 2006 12:32:40 -0000 1.12 @@ -330,11 +330,7 @@ ::osl::MutexGuard aGuard( m_aMutex ); if ( m_pModelImplementation ) - { - Reference< XModifiable > xModiable( m_pModelImplementation->getModel_noCreate(), UNO_QUERY ); - if ( xModiable.is() ) - xModiable->setModified( sal_True ); - } + m_pModelImplementation->setModified( sal_True ); if ( m_pModelImplementation && m_bPropagateCommitToRoot ) { @@ -397,7 +393,7 @@ ,m_pDBContext(NULL) ,m_nControllerLockCount(0) ,m_bOwnStorage(sal_False) - ,m_xTempModel(_xModel) + ,m_xModel(_xModel) ,m_nLoginTimeout(0) ,m_refCount(0) ,m_pStorageAccess( NULL ) @@ -529,15 +525,17 @@ { Reference< XDataSource > xDS( m_xDataSource ); ::comphelper::disposeComponent( xDS ); - m_xDataSource = WeakReference<XDataSource>(); + m_xDataSource = WeakReference< XDataSource >(); - ::comphelper::disposeComponent(m_xTempModel); + Reference< XModel > xModel( m_xModel ); + ::comphelper::disposeComponent( xModel ); + m_xModel = WeakReference< XModel >(); } catch( const Exception& ) { } m_xDataSource = WeakReference<XDataSource>(); - m_xTempModel.clear(); + m_xModel = WeakReference< XModel >(); ::std::vector<TContentPtr>::iterator aIter = m_aContainer.begin(); ::std::vector<TContentPtr>::iterator aEnd = m_aContainer.end(); @@ -815,9 +813,11 @@ { try { - Reference<XModifiable> xModi(m_xTempModel.get(),UNO_QUERY); + Reference<XModifiable> xModi(m_xModel.get(),UNO_QUERY); if ( xModi.is() ) - xModi->setModified(_bModified); + xModi->setModified( _bModified ); + else + m_bModified = _bModified; } catch(Exception) { @@ -853,15 +853,19 @@ // ----------------------------------------------------------------------------- Reference< XModel> ODatabaseModelImpl::getModel_noCreate() { - return m_xTempModel; + return m_xModel; } // ----------------------------------------------------------------------------- -Reference< XModel> ODatabaseModelImpl::createNewModel_deliverOwnership() +Reference< XModel > ODatabaseModelImpl::createNewModel_deliverOwnership() { - OSL_PRECOND( !m_xTempModel.is(), "ODatabaseModelImpl::getModel_noCreate: not to be called if there already is a model!" ); - if ( !m_xTempModel.is() ) - m_xTempModel = ODatabaseDocument::createDatabaseDocument( this, ODatabaseDocument::FactoryAccess() ); - return m_xTempModel; + Reference< XModel > xModel( m_xModel ); + OSL_PRECOND( !xModel.is(), "ODatabaseModelImpl::createNewModel_deliverOwnership: not to be called if there already is a model!" ); + if ( !xModel.is() ) + { + xModel = ODatabaseDocument::createDatabaseDocument( this, ODatabaseDocument::FactoryAccess() ); + m_xModel = xModel; + } + return xModel; } // ----------------------------------------------------------------------------- oslInterlockedCount SAL_CALL ODatabaseModelImpl::acquire() --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
