remove some manual ref-counting in forms
Change-Id: I6334dca6e98bfd4531033bec203518ca27f64bc0 Reviewed-on: https://gerrit.libreoffice.org/26049 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
This commit is contained in:
parent
a4e33ce06e
commit
6cd3882bec
@ -261,11 +261,9 @@ ODatabaseForm::ODatabaseForm(const Reference<XComponentContext>& _rxContext)
|
|||||||
,m_aResetListeners( *this, m_aMutex )
|
,m_aResetListeners( *this, m_aMutex )
|
||||||
,m_aPropertyBagHelper( *this )
|
,m_aPropertyBagHelper( *this )
|
||||||
,m_pAggregatePropertyMultiplexer(nullptr)
|
,m_pAggregatePropertyMultiplexer(nullptr)
|
||||||
,m_pGroupManager( nullptr )
|
|
||||||
,m_aParameterManager( m_aMutex, _rxContext )
|
,m_aParameterManager( m_aMutex, _rxContext )
|
||||||
,m_aFilterManager()
|
,m_aFilterManager()
|
||||||
,m_pLoadTimer(nullptr)
|
,m_pLoadTimer(nullptr)
|
||||||
,m_pThread(nullptr)
|
|
||||||
,m_nResetsPending(0)
|
,m_nResetsPending(0)
|
||||||
,m_nPrivileges(0)
|
,m_nPrivileges(0)
|
||||||
,m_bInsertOnly( false )
|
,m_bInsertOnly( false )
|
||||||
@ -299,11 +297,9 @@ ODatabaseForm::ODatabaseForm( const ODatabaseForm& _cloneSource )
|
|||||||
,m_aResetListeners( *this, m_aMutex )
|
,m_aResetListeners( *this, m_aMutex )
|
||||||
,m_aPropertyBagHelper( *this )
|
,m_aPropertyBagHelper( *this )
|
||||||
,m_pAggregatePropertyMultiplexer( nullptr )
|
,m_pAggregatePropertyMultiplexer( nullptr )
|
||||||
,m_pGroupManager( nullptr )
|
|
||||||
,m_aParameterManager( m_aMutex, _cloneSource.m_xContext )
|
,m_aParameterManager( m_aMutex, _cloneSource.m_xContext )
|
||||||
,m_aFilterManager()
|
,m_aFilterManager()
|
||||||
,m_pLoadTimer( nullptr )
|
,m_pLoadTimer( nullptr )
|
||||||
,m_pThread( nullptr )
|
|
||||||
,m_nResetsPending( 0 )
|
,m_nResetsPending( 0 )
|
||||||
,m_nPrivileges( 0 )
|
,m_nPrivileges( 0 )
|
||||||
,m_bInsertOnly( _cloneSource.m_bInsertOnly )
|
,m_bInsertOnly( _cloneSource.m_bInsertOnly )
|
||||||
@ -423,15 +419,12 @@ void ODatabaseForm::impl_construct()
|
|||||||
osl_atomic_decrement( &m_refCount );
|
osl_atomic_decrement( &m_refCount );
|
||||||
|
|
||||||
m_pGroupManager = new OGroupManager( this );
|
m_pGroupManager = new OGroupManager( this );
|
||||||
m_pGroupManager->acquire();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ODatabaseForm::~ODatabaseForm()
|
ODatabaseForm::~ODatabaseForm()
|
||||||
{
|
{
|
||||||
|
m_pGroupManager.clear();
|
||||||
m_pGroupManager->release();
|
|
||||||
m_pGroupManager = nullptr;
|
|
||||||
|
|
||||||
if (m_xAggregate.is())
|
if (m_xAggregate.is())
|
||||||
m_xAggregate->setDelegator( nullptr );
|
m_xAggregate->setDelegator( nullptr );
|
||||||
@ -1281,11 +1274,7 @@ void ODatabaseForm::disposing()
|
|||||||
// cancel the submit/reset-thread
|
// cancel the submit/reset-thread
|
||||||
{
|
{
|
||||||
::osl::MutexGuard aGuard( m_aMutex );
|
::osl::MutexGuard aGuard( m_aMutex );
|
||||||
if (m_pThread)
|
m_pThread.clear();
|
||||||
{
|
|
||||||
m_pThread->release();
|
|
||||||
m_pThread = nullptr;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
EventObject aEvt(static_cast<XWeak*>(this));
|
EventObject aEvt(static_cast<XWeak*>(this));
|
||||||
@ -1937,10 +1926,9 @@ void SAL_CALL ODatabaseForm::reset() throw( RuntimeException, std::exception )
|
|||||||
++m_nResetsPending;
|
++m_nResetsPending;
|
||||||
// create an own thread if we have (approve-)reset-listeners (so the listeners can't do that much damage
|
// create an own thread if we have (approve-)reset-listeners (so the listeners can't do that much damage
|
||||||
// to this thread which is probably the main one)
|
// to this thread which is probably the main one)
|
||||||
if (!m_pThread)
|
if (!m_pThread.is())
|
||||||
{
|
{
|
||||||
m_pThread = new OFormSubmitResetThread(this);
|
m_pThread = new OFormSubmitResetThread(this);
|
||||||
m_pThread->acquire();
|
|
||||||
m_pThread->create();
|
m_pThread->create();
|
||||||
}
|
}
|
||||||
EventObject aEvt;
|
EventObject aEvt;
|
||||||
@ -2108,10 +2096,9 @@ void SAL_CALL ODatabaseForm::submit( const Reference<XControl>& Control,
|
|||||||
{
|
{
|
||||||
// create an own thread if we have (approve-)submit-listeners (so the listeners can't do that much damage
|
// create an own thread if we have (approve-)submit-listeners (so the listeners can't do that much damage
|
||||||
// to this thread which is probably the main one)
|
// to this thread which is probably the main one)
|
||||||
if (!m_pThread)
|
if (!m_pThread.is())
|
||||||
{
|
{
|
||||||
m_pThread = new OFormSubmitResetThread(this);
|
m_pThread = new OFormSubmitResetThread(this);
|
||||||
m_pThread->acquire();
|
|
||||||
m_pThread->create();
|
m_pThread->create();
|
||||||
}
|
}
|
||||||
m_pThread->addEvent(&MouseEvt, Control, true);
|
m_pThread->addEvent(&MouseEvt, Control, true);
|
||||||
|
@ -175,12 +175,12 @@ class ODatabaseForm :public OFormComponents
|
|||||||
::dbtools::WarningsContainer m_aWarnings;
|
::dbtools::WarningsContainer m_aWarnings;
|
||||||
OPropertyChangeMultiplexer* m_pAggregatePropertyMultiplexer;
|
OPropertyChangeMultiplexer* m_pAggregatePropertyMultiplexer;
|
||||||
// Management of the Control Groups
|
// Management of the Control Groups
|
||||||
OGroupManager* m_pGroupManager;
|
rtl::Reference<OGroupManager> m_pGroupManager;
|
||||||
::dbtools::ParameterManager m_aParameterManager;
|
::dbtools::ParameterManager m_aParameterManager;
|
||||||
::dbtools::FilterManager m_aFilterManager;
|
::dbtools::FilterManager m_aFilterManager;
|
||||||
Timer* m_pLoadTimer;
|
Timer* m_pLoadTimer;
|
||||||
|
|
||||||
OFormSubmitResetThread* m_pThread;
|
rtl::Reference<OFormSubmitResetThread> m_pThread;
|
||||||
OUString m_sCurrentErrorContext;
|
OUString m_sCurrentErrorContext;
|
||||||
// will be used as additional context information
|
// will be used as additional context information
|
||||||
// when an exception is catched and forwarded to the listeners
|
// when an exception is catched and forwarded to the listeners
|
||||||
|
@ -83,7 +83,6 @@ namespace frm
|
|||||||
|
|
||||||
OClickableImageBaseControl::OClickableImageBaseControl(const Reference<XComponentContext>& _rxFactory, const OUString& _aService)
|
OClickableImageBaseControl::OClickableImageBaseControl(const Reference<XComponentContext>& _rxFactory, const OUString& _aService)
|
||||||
:OControl(_rxFactory, _aService)
|
:OControl(_rxFactory, _aService)
|
||||||
,m_pThread(nullptr)
|
|
||||||
,m_aSubmissionVetoListeners( m_aMutex )
|
,m_aSubmissionVetoListeners( m_aMutex )
|
||||||
,m_aApproveActionListeners( m_aMutex )
|
,m_aApproveActionListeners( m_aMutex )
|
||||||
,m_aActionListeners( m_aMutex )
|
,m_aActionListeners( m_aMutex )
|
||||||
@ -150,11 +149,7 @@ namespace frm
|
|||||||
|
|
||||||
{
|
{
|
||||||
::osl::MutexGuard aGuard( m_aMutex );
|
::osl::MutexGuard aGuard( m_aMutex );
|
||||||
if( m_pThread )
|
m_pThread.clear();
|
||||||
{
|
|
||||||
m_pThread->release();
|
|
||||||
m_pThread = nullptr;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
OControl::disposing();
|
OControl::disposing();
|
||||||
@ -163,13 +158,12 @@ namespace frm
|
|||||||
|
|
||||||
OImageProducerThread_Impl* OClickableImageBaseControl::getImageProducerThread()
|
OImageProducerThread_Impl* OClickableImageBaseControl::getImageProducerThread()
|
||||||
{
|
{
|
||||||
if ( !m_pThread )
|
if ( !m_pThread.is() )
|
||||||
{
|
{
|
||||||
m_pThread = new OImageProducerThread_Impl( this );
|
m_pThread = new OImageProducerThread_Impl( this );
|
||||||
m_pThread->acquire();
|
|
||||||
m_pThread->create();
|
m_pThread->create();
|
||||||
}
|
}
|
||||||
return m_pThread;
|
return m_pThread.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -187,10 +187,10 @@ namespace frm
|
|||||||
friend class OImageProducerThread_Impl;
|
friend class OImageProducerThread_Impl;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
OImageProducerThread_Impl* m_pThread;
|
rtl::Reference<OImageProducerThread_Impl> m_pThread;
|
||||||
::comphelper::OInterfaceContainerHelper2 m_aSubmissionVetoListeners;
|
::comphelper::OInterfaceContainerHelper2 m_aSubmissionVetoListeners;
|
||||||
::std::unique_ptr< ControlFeatureInterception >
|
::std::unique_ptr< ControlFeatureInterception >
|
||||||
m_pFeatureInterception;
|
m_pFeatureInterception;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
::comphelper::OInterfaceContainerHelper2 m_aApproveActionListeners;
|
::comphelper::OInterfaceContainerHelper2 m_aApproveActionListeners;
|
||||||
|
@ -130,11 +130,9 @@ namespace frm
|
|||||||
|
|
||||||
OPasteClipboardDispatcher::OPasteClipboardDispatcher( EditView& _rView )
|
OPasteClipboardDispatcher::OPasteClipboardDispatcher( EditView& _rView )
|
||||||
:OClipboardDispatcher( _rView, ePaste )
|
:OClipboardDispatcher( _rView, ePaste )
|
||||||
,m_pClipListener( nullptr )
|
|
||||||
,m_bPastePossible( false )
|
,m_bPastePossible( false )
|
||||||
{
|
{
|
||||||
m_pClipListener = new TransferableClipboardListener( LINK( this, OPasteClipboardDispatcher, OnClipboardChanged ) );
|
m_pClipListener = new TransferableClipboardListener( LINK( this, OPasteClipboardDispatcher, OnClipboardChanged ) );
|
||||||
m_pClipListener->acquire();
|
|
||||||
m_pClipListener->AddListener( _rView.GetWindow() );
|
m_pClipListener->AddListener( _rView.GetWindow() );
|
||||||
|
|
||||||
// initial state
|
// initial state
|
||||||
@ -166,13 +164,12 @@ namespace frm
|
|||||||
void OPasteClipboardDispatcher::disposing( ::osl::ClearableMutexGuard& _rClearBeforeNotify )
|
void OPasteClipboardDispatcher::disposing( ::osl::ClearableMutexGuard& _rClearBeforeNotify )
|
||||||
{
|
{
|
||||||
OSL_ENSURE( getEditView() && getEditView()->GetWindow(), "OPasteClipboardDispatcher::disposing: EditView should not (yet) be disfunctional here!" );
|
OSL_ENSURE( getEditView() && getEditView()->GetWindow(), "OPasteClipboardDispatcher::disposing: EditView should not (yet) be disfunctional here!" );
|
||||||
if (m_pClipListener)
|
if (m_pClipListener.is())
|
||||||
{
|
{
|
||||||
if (getEditView() && getEditView()->GetWindow())
|
if (getEditView() && getEditView()->GetWindow())
|
||||||
m_pClipListener->RemoveListener( getEditView()->GetWindow() );
|
m_pClipListener->RemoveListener( getEditView()->GetWindow() );
|
||||||
|
|
||||||
m_pClipListener->release();
|
m_pClipListener.clear();
|
||||||
m_pClipListener = nullptr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
OClipboardDispatcher::disposing( _rClearBeforeNotify );
|
OClipboardDispatcher::disposing( _rClearBeforeNotify );
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
#include "featuredispatcher.hxx"
|
#include "featuredispatcher.hxx"
|
||||||
#include <tools/link.hxx>
|
#include <tools/link.hxx>
|
||||||
|
#include <rtl/ref.hxx>
|
||||||
|
|
||||||
class TransferableClipboardListener;
|
class TransferableClipboardListener;
|
||||||
class TransferableDataHelper;
|
class TransferableDataHelper;
|
||||||
@ -65,7 +66,7 @@ namespace frm
|
|||||||
class OPasteClipboardDispatcher : public OClipboardDispatcher
|
class OPasteClipboardDispatcher : public OClipboardDispatcher
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
TransferableClipboardListener* m_pClipListener;
|
rtl::Reference<TransferableClipboardListener> m_pClipListener;
|
||||||
bool m_bPastePossible;
|
bool m_bPastePossible;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user