Kaydet (Commit) 6cb33f4d authored tarafından Noel Grandin's avatar Noel Grandin Kaydeden (comit) Michael Meeks

vclwidget: call disposeOnce from VclPtr::disposeAndClear

Change-Id: Ia8c438984409a7b719f5756f9be30ba9e90c57dc
üst d7a84ce8
...@@ -179,7 +179,7 @@ public: ...@@ -179,7 +179,7 @@ public:
::rtl::Reference<reference_type> aTmp(m_rInnerRef); ::rtl::Reference<reference_type> aTmp(m_rInnerRef);
m_rInnerRef.clear(); // we should use some 'swap' method ideally ;-) m_rInnerRef.clear(); // we should use some 'swap' method ideally ;-)
if (aTmp.get()) { if (aTmp.get()) {
aTmp->dispose(); aTmp->disposeOnce();
} }
} }
......
...@@ -139,18 +139,15 @@ bool Window::IsDisposed() const ...@@ -139,18 +139,15 @@ bool Window::IsDisposed() const
void Window::disposeOnce() void Window::disposeOnce()
{ {
if (!IsDisposed()) if (!mpWindowImpl || mpWindowImpl->mbInDispose)
dispose(); return;
mpWindowImpl->mbInDispose = true;
dispose();
} }
void Window::dispose() void Window::dispose()
{ {
if (IsDisposed()) assert( mpWindowImpl && mpWindowImpl->mbInDispose ); // should only be called from disposeOnce()
return;
assert( !mpWindowImpl->mbInDispose && "vcl::Window - already in dispose()" );
mpWindowImpl->mbInDispose = true;
assert( !mpWindowImpl->mpParent || assert( !mpWindowImpl->mpParent ||
!mpWindowImpl->mpParent->IsDisposed() || !mpWindowImpl->mpParent->IsDisposed() ||
"vcl::Window child should have its parent disposed first" ); "vcl::Window child should have its parent disposed first" );
...@@ -605,8 +602,8 @@ WindowImpl::WindowImpl( WindowType nType ) ...@@ -605,8 +602,8 @@ WindowImpl::WindowImpl( WindowType nType )
mpOverlapWindow = NULL; // first overlap parent mpOverlapWindow = NULL; // first overlap parent
mpBorderWindow = NULL; // Border-Window mpBorderWindow = NULL; // Border-Window
mpClientWindow = NULL; // Client-Window of a FrameWindow mpClientWindow = NULL; // Client-Window of a FrameWindow
mpParent = NULL; // parent (inkl. BorderWindow) mpParent = NULL; // parent (incl. BorderWindow)
mpRealParent = NULL; // real parent (exkl. BorderWindow) mpRealParent = NULL; // real parent (excl. BorderWindow)
mpFirstChild = NULL; // first child window mpFirstChild = NULL; // first child window
mpLastChild = NULL; // last child window mpLastChild = NULL; // last child window
mpFirstOverlap = NULL; // first overlap window (only set in overlap windows) mpFirstOverlap = NULL; // first overlap window (only set in overlap windows)
......
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