Kaydet (Commit) e3c1c65b authored tarafından Noel Grandin's avatar Noel Grandin

use rtl::Reference in SfxInstanceCloseGuard_Impl

instead of storing both a raw pointer and an uno::Reference

Change-Id: Ib0197985523b10039a5abea7cab1de3fab4c72c1
üst 0bab51d8
...@@ -172,14 +172,11 @@ void SAL_CALL SfxClosePreventer_Impl::disposing( const lang::EventObject& ) thro ...@@ -172,14 +172,11 @@ void SAL_CALL SfxClosePreventer_Impl::disposing( const lang::EventObject& ) thro
class SfxInstanceCloseGuard_Impl class SfxInstanceCloseGuard_Impl
{ {
SfxClosePreventer_Impl* m_pPreventer; rtl::Reference<SfxClosePreventer_Impl> m_xPreventer;
uno::Reference< util::XCloseListener > m_xPreventer;
uno::Reference< util::XCloseable > m_xCloseable; uno::Reference< util::XCloseable > m_xCloseable;
public: public:
SfxInstanceCloseGuard_Impl() SfxInstanceCloseGuard_Impl() {}
: m_pPreventer( nullptr )
{}
~SfxInstanceCloseGuard_Impl(); ~SfxInstanceCloseGuard_Impl();
...@@ -195,9 +192,8 @@ bool SfxInstanceCloseGuard_Impl::Init_Impl( const uno::Reference< util::XCloseab ...@@ -195,9 +192,8 @@ bool SfxInstanceCloseGuard_Impl::Init_Impl( const uno::Reference< util::XCloseab
{ {
try try
{ {
m_pPreventer = new SfxClosePreventer_Impl(); m_xPreventer = new SfxClosePreventer_Impl();
m_xPreventer.set( m_pPreventer ); xCloseable->addCloseListener( m_xPreventer.get() );
xCloseable->addCloseListener( m_xPreventer );
m_xCloseable = xCloseable; m_xCloseable = xCloseable;
bResult = true; bResult = true;
} }
...@@ -216,7 +212,7 @@ SfxInstanceCloseGuard_Impl::~SfxInstanceCloseGuard_Impl() ...@@ -216,7 +212,7 @@ SfxInstanceCloseGuard_Impl::~SfxInstanceCloseGuard_Impl()
{ {
try try
{ {
m_xCloseable->removeCloseListener( m_xPreventer ); m_xCloseable->removeCloseListener( m_xPreventer.get() );
} }
catch( uno::Exception& ) catch( uno::Exception& )
{ {
...@@ -224,11 +220,11 @@ SfxInstanceCloseGuard_Impl::~SfxInstanceCloseGuard_Impl() ...@@ -224,11 +220,11 @@ SfxInstanceCloseGuard_Impl::~SfxInstanceCloseGuard_Impl()
try try
{ {
if ( m_pPreventer ) if ( m_xPreventer.is() )
{ {
m_pPreventer->SetPreventClose( false ); m_xPreventer->SetPreventClose( false );
if ( m_pPreventer->HasOwnership() ) if ( m_xPreventer->HasOwnership() )
m_xCloseable->close( true ); // TODO: do it asynchronously m_xCloseable->close( true ); // TODO: do it asynchronously
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment