pass unique_lock as param in WeakComponentImplHelperBase::disposing
so that subclasses can drop the lock while calling listeners Change-Id: I6105438110af08f10b0ed50057b28172c3442b95 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127434 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
This commit is contained in:
committed by
Noel Grandin
parent
f0c0c62c10
commit
c68c744b68
@@ -120,7 +120,7 @@ namespace accessibility
|
|||||||
virtual css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) override;
|
virtual css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) override;
|
||||||
|
|
||||||
// XComponent/WeakComponentImplHelper
|
// XComponent/WeakComponentImplHelper
|
||||||
virtual void disposing() override;
|
virtual void disposing(std::unique_lock<std::mutex>&) override;
|
||||||
|
|
||||||
EditBrowseBoxTableCellAccess( const EditBrowseBoxTableCellAccess& ) = delete;
|
EditBrowseBoxTableCellAccess( const EditBrowseBoxTableCellAccess& ) = delete;
|
||||||
EditBrowseBoxTableCellAccess& operator=( const EditBrowseBoxTableCellAccess& ) = delete;
|
EditBrowseBoxTableCellAccess& operator=( const EditBrowseBoxTableCellAccess& ) = delete;
|
||||||
|
@@ -212,7 +212,7 @@ namespace accessibility
|
|||||||
return xMyContext;
|
return xMyContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
void EditBrowseBoxTableCellAccess::disposing()
|
void EditBrowseBoxTableCellAccess::disposing(std::unique_lock<std::mutex>&)
|
||||||
{
|
{
|
||||||
// dispose our context, if it still alive
|
// dispose our context, if it still alive
|
||||||
css::uno::Reference< XComponent > xMyContext( m_aContext.get(), UNO_QUERY );
|
css::uno::Reference< XComponent > xMyContext( m_aContext.get(), UNO_QUERY );
|
||||||
|
@@ -90,7 +90,7 @@ namespace canvas
|
|||||||
const css::uno::Sequence< css::uno::Any >& rArgs );
|
const css::uno::Sequence< css::uno::Any >& rArgs );
|
||||||
|
|
||||||
/// Dispose all internal references
|
/// Dispose all internal references
|
||||||
virtual void disposing() override;
|
virtual void disposing(std::unique_lock<std::mutex>&) override;
|
||||||
|
|
||||||
// XParametricPolyPolygon2D
|
// XParametricPolyPolygon2D
|
||||||
virtual css::uno::Reference< css::rendering::XPolyPolygon2D > SAL_CALL getOutline( double t ) override;
|
virtual css::uno::Reference< css::rendering::XPolyPolygon2D > SAL_CALL getOutline( double t ) override;
|
||||||
|
@@ -147,7 +147,7 @@ namespace canvas
|
|||||||
colors, stops, fAspectRatio );
|
colors, stops, fAspectRatio );
|
||||||
}
|
}
|
||||||
|
|
||||||
void ParametricPolyPolygon::disposing()
|
void ParametricPolyPolygon::disposing(std::unique_lock<std::mutex>&)
|
||||||
{
|
{
|
||||||
mxDevice.clear();
|
mxDevice.clear();
|
||||||
}
|
}
|
||||||
|
@@ -25,12 +25,14 @@ void SAL_CALL WeakComponentImplHelperBase::dispose()
|
|||||||
if (m_bDisposed)
|
if (m_bDisposed)
|
||||||
return;
|
return;
|
||||||
m_bDisposed = true;
|
m_bDisposed = true;
|
||||||
disposing();
|
disposing(aGuard);
|
||||||
|
if (!aGuard.owns_lock())
|
||||||
|
aGuard.lock();
|
||||||
css::lang::EventObject aEvt(static_cast<OWeakObject*>(this));
|
css::lang::EventObject aEvt(static_cast<OWeakObject*>(this));
|
||||||
maEventListeners.disposeAndClear(aGuard, aEvt);
|
maEventListeners.disposeAndClear(aGuard, aEvt);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WeakComponentImplHelperBase::disposing() {}
|
void WeakComponentImplHelperBase::disposing(std::unique_lock<std::mutex>&) {}
|
||||||
|
|
||||||
void SAL_CALL WeakComponentImplHelperBase::addEventListener(
|
void SAL_CALL WeakComponentImplHelperBase::addEventListener(
|
||||||
css::uno::Reference<css::lang::XEventListener> const& rxListener)
|
css::uno::Reference<css::lang::XEventListener> const& rxListener)
|
||||||
|
@@ -41,8 +41,11 @@ public:
|
|||||||
virtual void SAL_CALL
|
virtual void SAL_CALL
|
||||||
removeEventListener(css::uno::Reference<css::lang::XEventListener> const& rxListener) override;
|
removeEventListener(css::uno::Reference<css::lang::XEventListener> const& rxListener) override;
|
||||||
|
|
||||||
/** called by dispose for subclasses to do dispose() work */
|
/**
|
||||||
virtual void disposing();
|
Called by dispose for subclasses to do dispose() work.
|
||||||
|
The mutex is held when called, and subclasses can unlock() the guard if necessary.
|
||||||
|
*/
|
||||||
|
virtual void disposing(std::unique_lock<std::mutex>&);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
comphelper::OInterfaceContainerHelper4<css::lang::XEventListener> maEventListeners;
|
comphelper::OInterfaceContainerHelper4<css::lang::XEventListener> maEventListeners;
|
||||||
|
@@ -690,7 +690,7 @@ void ChildrenManagerImpl::impl_dispose()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ChildrenManagerImpl::disposing()
|
void ChildrenManagerImpl::disposing(std::unique_lock<std::mutex>&)
|
||||||
{
|
{
|
||||||
impl_dispose();
|
impl_dispose();
|
||||||
}
|
}
|
||||||
|
@@ -315,7 +315,7 @@ private:
|
|||||||
/** This method is called from the component helper base class while
|
/** This method is called from the component helper base class while
|
||||||
disposing.
|
disposing.
|
||||||
*/
|
*/
|
||||||
virtual void disposing() override;
|
virtual void disposing(std::unique_lock<std::mutex>&) override;
|
||||||
|
|
||||||
void impl_dispose();
|
void impl_dispose();
|
||||||
|
|
||||||
|
@@ -391,7 +391,7 @@ void SAL_CALL TableDesignStyle::replaceByName( const OUString& rName, const Any&
|
|||||||
// XComponent
|
// XComponent
|
||||||
|
|
||||||
|
|
||||||
void SAL_CALL TableDesignStyle::disposing()
|
void TableDesignStyle::disposing()
|
||||||
{
|
{
|
||||||
for(Reference<XStyle> & rCellStyle : maCellStyles)
|
for(Reference<XStyle> & rCellStyle : maCellStyles)
|
||||||
rCellStyle.clear();
|
rCellStyle.clear();
|
||||||
|
@@ -947,7 +947,7 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
// is called from WeakComponentImplHelper when XComponent::dispose() was
|
// is called from WeakComponentImplHelper when XComponent::dispose() was
|
||||||
// called from outside
|
// called from outside
|
||||||
virtual void disposing() override;
|
virtual void disposing(std::unique_lock<std::mutex>&) override;
|
||||||
|
|
||||||
// ____ XInitialization ____
|
// ____ XInitialization ____
|
||||||
// one argument is allowed, which is the XStorage
|
// one argument is allowed, which is the XStorage
|
||||||
@@ -993,7 +993,7 @@ SvXMLGraphicImportExportHelper::SvXMLGraphicImportExportHelper( SvXMLGraphicHelp
|
|||||||
m_eGraphicHelperMode( eMode )
|
m_eGraphicHelperMode( eMode )
|
||||||
{}
|
{}
|
||||||
|
|
||||||
void SvXMLGraphicImportExportHelper::disposing()
|
void SvXMLGraphicImportExportHelper::disposing(std::unique_lock<std::mutex>&)
|
||||||
{
|
{
|
||||||
Reference< XComponent > xComp( m_xGraphicObjectResolver, UNO_QUERY );
|
Reference< XComponent > xComp( m_xGraphicObjectResolver, UNO_QUERY );
|
||||||
OSL_ASSERT( xComp.is());
|
OSL_ASSERT( xComp.is());
|
||||||
|
Reference in New Issue
Block a user