include/vcl/vclptr.hxx | 2 +- vcl/source/window/window.cxx | 17 +++++++---------- 2 files changed, 8 insertions(+), 11 deletions(-)
New commits: commit 5502baee8833b9681279f85909d75f6248a19187 Author: Noel Grandin <n...@peralex.com> Date: Fri Mar 13 13:42:34 2015 +0200 vclwidget: call disposeOnce from VclPtr::disposeAndClear Change-Id: Ia8c438984409a7b719f5756f9be30ba9e90c57dc diff --git a/include/vcl/vclptr.hxx b/include/vcl/vclptr.hxx index 832d608..b64824b 100644 --- a/include/vcl/vclptr.hxx +++ b/include/vcl/vclptr.hxx @@ -179,7 +179,7 @@ public: ::rtl::Reference<reference_type> aTmp(m_rInnerRef); m_rInnerRef.clear(); // we should use some 'swap' method ideally ;-) if (aTmp.get()) { - aTmp->dispose(); + aTmp->disposeOnce(); } } diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx index 2a453ab..ad74ba0 100644 --- a/vcl/source/window/window.cxx +++ b/vcl/source/window/window.cxx @@ -139,18 +139,15 @@ bool Window::IsDisposed() const void Window::disposeOnce() { - if (!IsDisposed()) - dispose(); + if (!mpWindowImpl || mpWindowImpl->mbInDispose) + return; + mpWindowImpl->mbInDispose = true; + dispose(); } void Window::dispose() { - if (IsDisposed()) - return; - - assert( !mpWindowImpl->mbInDispose && "vcl::Window - already in dispose()" ); - mpWindowImpl->mbInDispose = true; - + assert( mpWindowImpl && mpWindowImpl->mbInDispose ); // should only be called from disposeOnce() assert( !mpWindowImpl->mpParent || !mpWindowImpl->mpParent->IsDisposed() || "vcl::Window child should have its parent disposed first" ); @@ -605,8 +602,8 @@ WindowImpl::WindowImpl( WindowType nType ) mpOverlapWindow = NULL; // first overlap parent mpBorderWindow = NULL; // Border-Window mpClientWindow = NULL; // Client-Window of a FrameWindow - mpParent = NULL; // parent (inkl. BorderWindow) - mpRealParent = NULL; // real parent (exkl. BorderWindow) + mpParent = NULL; // parent (incl. BorderWindow) + mpRealParent = NULL; // real parent (excl. BorderWindow) mpFirstChild = NULL; // first child window mpLastChild = NULL; // last child window mpFirstOverlap = NULL; // first overlap window (only set in overlap windows) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits