[Libreoffice-commits] .: canvas/inc canvas/source

Thorsten Behrens thorsten at kemper.freedesktop.org
Fri Apr 8 07:47:53 PDT 2011


 canvas/inc/canvas/base/basemutexhelper.hxx           |   72 ---------------
 canvas/inc/canvas/base/bufferedgraphicdevicebase.hxx |   11 +-
 canvas/inc/canvas/base/canvasbase.hxx                |    7 -
 canvas/inc/canvas/base/canvascustomspritebase.hxx    |    4 
 canvas/inc/canvas/base/disambiguationhelper.hxx      |   90 +++++++++++++++++++
 canvas/inc/canvas/base/graphicdevicebase.hxx         |    9 -
 canvas/inc/canvas/base/spritecanvasbase.hxx          |    7 -
 canvas/source/cairo/cairo_canvas.cxx                 |    4 
 canvas/source/cairo/cairo_canvas.hxx                 |   10 --
 canvas/source/cairo/cairo_canvasbitmap.cxx           |    4 
 canvas/source/cairo/cairo_canvasbitmap.hxx           |    4 
 canvas/source/cairo/cairo_canvascustomsprite.cxx     |    4 
 canvas/source/cairo/cairo_canvascustomsprite.hxx     |    6 -
 canvas/source/cairo/cairo_spritecanvas.cxx           |    4 
 canvas/source/cairo/cairo_spritecanvas.hxx           |   10 --
 canvas/source/directx/dx_canvas.cxx                  |    8 -
 canvas/source/directx/dx_canvas.hxx                  |   10 +-
 canvas/source/directx/dx_canvasbitmap.cxx            |    4 
 canvas/source/directx/dx_canvasbitmap.hxx            |    6 -
 canvas/source/directx/dx_canvascustomsprite.cxx      |    4 
 canvas/source/directx/dx_canvascustomsprite.hxx      |    6 -
 canvas/source/directx/dx_spritecanvas.cxx            |    4 
 canvas/source/directx/dx_spritecanvas.hxx            |    7 -
 canvas/source/null/null_canvasbitmap.cxx             |    4 
 canvas/source/null/null_canvasbitmap.hxx             |    5 -
 canvas/source/null/null_canvascustomsprite.cxx       |    4 
 canvas/source/null/null_canvascustomsprite.hxx       |    8 -
 canvas/source/null/null_spritecanvas.cxx             |    4 
 canvas/source/null/null_spritecanvas.hxx             |   10 --
 canvas/source/vcl/canvas.cxx                         |    4 
 canvas/source/vcl/canvas.hxx                         |   10 --
 canvas/source/vcl/canvasbitmap.cxx                   |    6 -
 canvas/source/vcl/canvasbitmap.hxx                   |    5 -
 canvas/source/vcl/canvascustomsprite.cxx             |    8 -
 canvas/source/vcl/canvascustomsprite.hxx             |    6 -
 canvas/source/vcl/spritecanvas.cxx                   |    4 
 canvas/source/vcl/spritecanvas.hxx                   |   10 --
 37 files changed, 177 insertions(+), 206 deletions(-)

New commits:
commit 3cd302f4e5dd443670debfb9bbae7e3be1676ca6
Author: Thorsten Behrens <tbehrens at novell.com>
Date:   Fri Apr 8 16:44:28 2011 +0200

    Fix overloaded-virtual warning in canvas
    
    With enabled -Woverloaded-virtual gcc warning (see
    http://lists.freedesktop.org/archives/libreoffice/2011-March/009567.html),
    canvas exposed a nasty clash between WeakComponentImplHelper::disposing
    and XEventListener::disposing. Fixed by overriding *once* in baseclass,
    and then calling disambiguated, renamed methods.

diff --git a/canvas/inc/canvas/base/basemutexhelper.hxx b/canvas/inc/canvas/base/basemutexhelper.hxx
deleted file mode 100644
index d53cd92..0000000
--- a/canvas/inc/canvas/base/basemutexhelper.hxx
+++ /dev/null
@@ -1,72 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org.  If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_CANVAS_BASEMUTEXHELPER_HXX
-#define INCLUDED_CANVAS_BASEMUTEXHELPER_HXX
-
-#include <osl/mutex.hxx>
-
-
-/* Definition of the BaseMutexHelper class */
-
-namespace canvas
-{
-    /** Base class, deriving from ::comphelper::OBaseMutex and
-        initializing its own baseclass with m_aMutex.
-
-        This is necessary to make the CanvasBase, GraphicDeviceBase,
-        etc. classes freely combinable - letting them perform this
-        initialization would prohibit deriving e.g. CanvasBase from
-        GraphicDeviceBase.
-     */
-    template< class Base > class BaseMutexHelper : public Base
-    {
-    public:
-        typedef Base BaseType;
-
-        /** Construct BaseMutexHelper
-
-            This method is the whole purpose of this template:
-            initializing a base class with the provided m_aMutex
-            member (the WeakComponentImplHelper templates need that,
-            as they require the lifetime of the mutex to extend
-            theirs).
-         */
-        BaseMutexHelper() :
-            BaseType( m_aMutex )
-        {
-        }
-
-protected:
-        mutable ::osl::Mutex m_aMutex; 
-    };
-}
-
-#endif /* INCLUDED_CANVAS_BASEMUTEXHELPER_HXX */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/canvas/inc/canvas/base/bufferedgraphicdevicebase.hxx b/canvas/inc/canvas/base/bufferedgraphicdevicebase.hxx
index daaf985..d9db2ee 100644
--- a/canvas/inc/canvas/base/bufferedgraphicdevicebase.hxx
+++ b/canvas/inc/canvas/base/bufferedgraphicdevicebase.hxx
@@ -183,10 +183,7 @@ namespace canvas
             return ::com::sun::star::uno::makeAny(mxWindow);
         }
 
-#if defined __SUNPRO_CC
-        using Base::disposing;
-#endif
-        virtual void SAL_CALL disposing()
+        virtual void disposeThis()
         {
             typename BaseType::MutexType aGuard( BaseType::m_aMutex );
 
@@ -197,7 +194,7 @@ namespace canvas
             }
 
             // pass on to base class
-            BaseType::disposing();
+            BaseType::disposeThis();
         }
 
         ::com::sun::star::awt::Rectangle transformBounds( const ::com::sun::star::awt::Rectangle& rBounds )
@@ -234,12 +231,14 @@ namespace canvas
         }
 
         // XWindowListener
-        virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw (::com::sun::star::uno::RuntimeException)
+        virtual void SAL_CALL disposeEventSource( const ::com::sun::star::lang::EventObject& Source ) throw (::com::sun::star::uno::RuntimeException)
         {
             typename BaseType::MutexType aGuard( BaseType::m_aMutex );
 
             if( Source.Source == mxWindow )
                 mxWindow.clear();
+
+            BaseType::disposeEventSource(Source);
         }
 
         virtual void SAL_CALL windowResized( const ::com::sun::star::awt::WindowEvent& e ) throw (::com::sun::star::uno::RuntimeException)
diff --git a/canvas/inc/canvas/base/canvasbase.hxx b/canvas/inc/canvas/base/canvasbase.hxx
index 5af2201..949e6da 100644
--- a/canvas/inc/canvas/base/canvasbase.hxx
+++ b/canvas/inc/canvas/base/canvasbase.hxx
@@ -120,17 +120,14 @@ namespace canvas
         {
         }
 
-#if defined __SUNPRO_CC
-        using Base::disposing;
-#endif
-        virtual void SAL_CALL disposing()
+        virtual void disposeThis()
         {
             MutexType aGuard( BaseType::m_aMutex );
 
             maCanvasHelper.disposing();
 
             // pass on to base class
-            BaseType::disposing();
+            BaseType::disposeThis();
         }
 
         // XCanvas
diff --git a/canvas/inc/canvas/base/canvascustomspritebase.hxx b/canvas/inc/canvas/base/canvascustomspritebase.hxx
index 4d00e7b..ecae3e7 100644
--- a/canvas/inc/canvas/base/canvascustomspritebase.hxx
+++ b/canvas/inc/canvas/base/canvascustomspritebase.hxx
@@ -103,14 +103,14 @@ namespace canvas
             @derive when overriding this method in derived classes,
             <em>always</em> call the base class' method!
          */
-        virtual void SAL_CALL disposing()
+        virtual void disposeThis()
         {
             typename BaseType::MutexType aGuard( BaseType::m_aMutex );
 
             maSpriteHelper.disposing();
 
             // pass on to base class
-            BaseType::disposing();
+            BaseType::disposeThis();
         }
 
         // XCanvas: selectively override base's methods here, for opacity tracking
diff --git a/canvas/inc/canvas/base/disambiguationhelper.hxx b/canvas/inc/canvas/base/disambiguationhelper.hxx
new file mode 100644
index 0000000..15be49a
--- /dev/null
+++ b/canvas/inc/canvas/base/disambiguationhelper.hxx
@@ -0,0 +1,90 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ * 
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org.  If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_CANVAS_DISAMBIGUATIONHELPER_HXX
+#define INCLUDED_CANVAS_DISAMBIGUATIONHELPER_HXX
+
+#include <osl/mutex.hxx>
+
+
+/* Definition of the DisambiguationHelper class */
+
+namespace canvas
+{
+    /** Base class, initializing its own baseclass with m_aMutex.
+
+        This is necessary to make the CanvasBase, GraphicDeviceBase,
+        etc. classes freely combinable - letting them perform this
+        initialization would prohibit deriving e.g. CanvasBase from
+        GraphicDeviceBase.
+
+        On top of that, disambiguates XEventListener::disposing and
+        WeakComponentImplHelper::disposing.
+
+        Having two virtual methods with the same name, and not
+        overriding them in every derived class, will hide one of
+        them. Later trying to override the same method, will generate
+        a new vtable slot, and lead to very hard to spot errors.
+     */
+    template< class Base > class DisambiguationHelper : public Base
+    {
+    public:
+        typedef Base BaseType;
+
+        /** Construct DisambiguationHelper
+
+            This method is the whole purpose of this template:
+            initializing a base class with the provided m_aMutex
+            member (the WeakComponentImplHelper templates need that,
+            as they require the lifetime of the mutex to extend
+            theirs).
+         */
+        DisambiguationHelper() :
+            BaseType( m_aMutex )
+        {
+        }
+
+        virtual void SAL_CALL disposing() 
+        { disposeThis(); }
+
+        virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw (::com::sun::star::uno::RuntimeException)
+        { disposeEventSource(Source); }
+        
+        virtual void disposeThis()
+        {}
+        virtual void disposeEventSource( const ::com::sun::star::lang::EventObject& ) throw (::com::sun::star::uno::RuntimeException)
+        {}
+
+protected:
+        mutable ::osl::Mutex m_aMutex; 
+    };
+}
+
+#endif /* INCLUDED_CANVAS_DISAMBIGUATIONHELPER_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/canvas/inc/canvas/base/graphicdevicebase.hxx b/canvas/inc/canvas/base/graphicdevicebase.hxx
index 54c8fcd..5cef1cd 100644
--- a/canvas/inc/canvas/base/graphicdevicebase.hxx
+++ b/canvas/inc/canvas/base/graphicdevicebase.hxx
@@ -95,7 +95,7 @@ namespace canvas
 
         @tpl Mutex
         Lock strategy to use. Defaults to using the
-        BaseMutexHelper-provided lock.  Everytime one of the methods is
+        DisambiguationHelper-provided lock.  Everytime one of the methods is
         entered, an object of type Mutex is created with m_aMutex as
         the sole parameter, and destroyed again when the method scope
         is left.
@@ -144,17 +144,14 @@ namespace canvas
                                                       _1))); 
         }
 
-#if defined __SUNPRO_CC
-        using Base::disposing;
-#endif
-        virtual void SAL_CALL disposing()
+        virtual void disposeThis()
         {
             MutexType aGuard( BaseType::m_aMutex );
 
             maDeviceHelper.disposing();
 
             // pass on to base class
-            cppu::WeakComponentImplHelperBase::disposing();
+            BaseType::disposeThis();
         }
 
         // XGraphicDevice
diff --git a/canvas/inc/canvas/base/spritecanvasbase.hxx b/canvas/inc/canvas/base/spritecanvasbase.hxx
index d44bf42..7204e82 100644
--- a/canvas/inc/canvas/base/spritecanvasbase.hxx
+++ b/canvas/inc/canvas/base/spritecanvasbase.hxx
@@ -86,17 +86,14 @@ namespace canvas
         {
         }
 
-#if defined __SUNPRO_CC
-        using Base::disposing;
-#endif
-        virtual void SAL_CALL disposing()
+        virtual void disposeThis()
         {
             typename BaseType::MutexType aGuard( BaseType::m_aMutex );
 
             maRedrawManager.disposing();
 
             // pass on to base class
-            BaseType::disposing();
+            BaseType::disposeThis();
         }
 
         // XSpriteCanvas
diff --git a/canvas/source/cairo/cairo_canvas.cxx b/canvas/source/cairo/cairo_canvas.cxx
index fb72180..1cc51ec 100644
--- a/canvas/source/cairo/cairo_canvas.cxx
+++ b/canvas/source/cairo/cairo_canvas.cxx
@@ -131,14 +131,14 @@ namespace cairocanvas
         OSL_TRACE( "CairoCanvas destroyed" );
     }
 
-    void SAL_CALL Canvas::disposing()
+    void Canvas::disposeThis()
     {
         ::osl::MutexGuard aGuard( m_aMutex );
 
         mxComponentContext.clear();
 
         // forward to parent
-        CanvasBaseT::disposing();
+        CanvasBaseT::disposeThis();
     }
 
     ::rtl::OUString SAL_CALL Canvas::getServiceName(  ) throw (uno::RuntimeException)
diff --git a/canvas/source/cairo/cairo_canvas.hxx b/canvas/source/cairo/cairo_canvas.hxx
index 163d2fc..476b591 100644
--- a/canvas/source/cairo/cairo_canvas.hxx
+++ b/canvas/source/cairo/cairo_canvas.hxx
@@ -47,7 +47,7 @@
 #include <comphelper/uno3.hxx>
 
 #include <canvas/base/spritecanvasbase.hxx>
-#include <canvas/base/basemutexhelper.hxx>
+#include <canvas/base/disambiguationhelper.hxx>
 #include <canvas/base/bufferedgraphicdevicebase.hxx>
 
 #include <basegfx/vector/b2isize.hxx>
@@ -69,7 +69,7 @@ namespace cairocanvas
                                                 ::com::sun::star::util::XUpdatable,
                                                 ::com::sun::star::beans::XPropertySet,
                                                 ::com::sun::star::lang::XServiceName >	GraphicDeviceBase_Base;
-    typedef ::canvas::GraphicDeviceBase< ::canvas::BaseMutexHelper< GraphicDeviceBase_Base >,
+    typedef ::canvas::GraphicDeviceBase< ::canvas::DisambiguationHelper< GraphicDeviceBase_Base >,
                                                  DeviceHelper, 
                                                  ::osl::MutexGuard,
                                                  ::cppu::OWeakObject > CanvasBase_Base;
@@ -122,12 +122,8 @@ namespace cairocanvas
         /// For resource tracking
         ~Canvas();
 
-#if defined __SUNPRO_CC
-        using CanvasBaseT::disposing;
-#endif
-
         /// Dispose all internal references
-        virtual void SAL_CALL disposing();
+        virtual void disposeThis();
 
         // Forwarding the XComponent implementation to the
         // cppu::ImplHelper templated base
diff --git a/canvas/source/cairo/cairo_canvasbitmap.cxx b/canvas/source/cairo/cairo_canvasbitmap.cxx
index daad97c..c72397c 100644
--- a/canvas/source/cairo/cairo_canvasbitmap.cxx
+++ b/canvas/source/cairo/cairo_canvasbitmap.cxx
@@ -102,7 +102,7 @@ namespace cairocanvas
         maCanvasHelper.clear();
     }
 
-    void SAL_CALL CanvasBitmap::disposing()
+    void CanvasBitmap::disposeThis()
     {
         mpSurfaceProvider.clear();
 
@@ -110,7 +110,7 @@ namespace cairocanvas
         mpBufferSurface.reset();
 
         // forward to parent
-        CanvasBitmap_Base::disposing();
+        CanvasBitmap_Base::disposeThis();
     }
 
     SurfaceSharedPtr CanvasBitmap::getSurface()
diff --git a/canvas/source/cairo/cairo_canvasbitmap.hxx b/canvas/source/cairo/cairo_canvasbitmap.hxx
index c61b658..78d8e05 100644
--- a/canvas/source/cairo/cairo_canvasbitmap.hxx
+++ b/canvas/source/cairo/cairo_canvasbitmap.hxx
@@ -58,7 +58,7 @@ namespace cairocanvas
                                               ::com::sun::star::lang::XServiceInfo,
                                               ::com::sun::star::beans::XFastPropertySet >  	CanvasBitmapBase_Base;
     class CanvasBitmapSpriteSurface_Base : 
-        public ::canvas::BaseMutexHelper<CanvasBitmapBase_Base>,
+        public ::canvas::DisambiguationHelper<CanvasBitmapBase_Base>,
         public SurfaceProvider
     {
     };
@@ -87,7 +87,7 @@ namespace cairocanvas
                       bool                      bHasAlpha );
 
         /// Dispose all internal references
-        virtual void SAL_CALL disposing();
+        virtual void disposeThis();
 
         // Forwarding the XComponent implementation to the
         // cppu::ImplHelper templated base
diff --git a/canvas/source/cairo/cairo_canvascustomsprite.cxx b/canvas/source/cairo/cairo_canvascustomsprite.cxx
index 187c4d1..cedea8a 100644
--- a/canvas/source/cairo/cairo_canvascustomsprite.cxx
+++ b/canvas/source/cairo/cairo_canvascustomsprite.cxx
@@ -78,7 +78,7 @@ namespace cairocanvas
         maCanvasHelper.clear();
     }
     
-    void SAL_CALL CanvasCustomSprite::disposing()
+    void CanvasCustomSprite::disposeThis()
     {
         ::osl::MutexGuard aGuard( m_aMutex );
 
@@ -86,7 +86,7 @@ namespace cairocanvas
         mpBufferSurface.reset();
 
         // forward to parent
-        CanvasCustomSpriteBaseT::disposing();
+        CanvasCustomSpriteBaseT::disposeThis();
     }
 
     void CanvasCustomSprite::redraw( const CairoSharedPtr& pCairo,
diff --git a/canvas/source/cairo/cairo_canvascustomsprite.hxx b/canvas/source/cairo/cairo_canvascustomsprite.hxx
index cad0eaf..411bc67 100644
--- a/canvas/source/cairo/cairo_canvascustomsprite.hxx
+++ b/canvas/source/cairo/cairo_canvascustomsprite.hxx
@@ -42,7 +42,7 @@
 #include <basegfx/vector/b2isize.hxx>
 #include <basegfx/matrix/b2dhommatrix.hxx>
 
-#include <canvas/base/basemutexhelper.hxx>
+#include <canvas/base/disambiguationhelper.hxx>
 #include <canvas/base/canvascustomspritebase.hxx>
 
 #include "cairo_sprite.hxx"
@@ -76,7 +76,7 @@ namespace cairocanvas
         remain a base class that provides implementation, not to
         enforce any specific interface on its derivees.
      */
-    class CanvasCustomSpriteSpriteBase_Base : public ::canvas::BaseMutexHelper< CanvasCustomSpriteBase_Base >,
+    class CanvasCustomSpriteSpriteBase_Base : public ::canvas::DisambiguationHelper< CanvasCustomSpriteBase_Base >,
                                                  public Sprite,
                                               public SurfaceProvider
     {
@@ -111,7 +111,7 @@ namespace cairocanvas
         CanvasCustomSprite( const ::com::sun::star::geometry::RealSize2D& 	rSpriteSize,
                             const SpriteCanvasRef&                          rRefDevice );
 
-        virtual void SAL_CALL disposing();
+        virtual void disposeThis();
 
         // Forwarding the XComponent implementation to the
         // cppu::ImplHelper templated base
diff --git a/canvas/source/cairo/cairo_spritecanvas.cxx b/canvas/source/cairo/cairo_spritecanvas.cxx
index 8267336..23df5ba 100644
--- a/canvas/source/cairo/cairo_spritecanvas.cxx
+++ b/canvas/source/cairo/cairo_spritecanvas.cxx
@@ -125,14 +125,14 @@ namespace cairocanvas
         maArguments.realloc(0);
     }
 
-    void SAL_CALL SpriteCanvas::disposing()
+    void SpriteCanvas::disposeThis()
     {
         ::osl::MutexGuard aGuard( m_aMutex );
 
         mxComponentContext.clear();
 
         // forward to parent
-        SpriteCanvasBaseT::disposing();
+        SpriteCanvasBaseT::disposeThis();
     }
 
     ::sal_Bool SAL_CALL SpriteCanvas::showBuffer( ::sal_Bool bUpdateAll ) throw (uno::RuntimeException)
diff --git a/canvas/source/cairo/cairo_spritecanvas.hxx b/canvas/source/cairo/cairo_spritecanvas.hxx
index ed27bd3..3bd4f6c 100644
--- a/canvas/source/cairo/cairo_spritecanvas.hxx
+++ b/canvas/source/cairo/cairo_spritecanvas.hxx
@@ -45,7 +45,7 @@
 #include <comphelper/uno3.hxx>
 
 #include <canvas/base/spritecanvasbase.hxx>
-#include <canvas/base/basemutexhelper.hxx>
+#include <canvas/base/disambiguationhelper.hxx>
 #include <canvas/base/bufferedgraphicdevicebase.hxx>
 
 #include <basegfx/vector/b2isize.hxx>
@@ -69,7 +69,7 @@ namespace cairocanvas
                                                 ::com::sun::star::util::XUpdatable,
                                                 ::com::sun::star::beans::XPropertySet,
                                                 ::com::sun::star::lang::XServiceName >	WindowGraphicDeviceBase_Base;
-    typedef ::canvas::BufferedGraphicDeviceBase< ::canvas::BaseMutexHelper< WindowGraphicDeviceBase_Base >,
+    typedef ::canvas::BufferedGraphicDeviceBase< ::canvas::DisambiguationHelper< WindowGraphicDeviceBase_Base >,
                                                  SpriteDeviceHelper, 
                                                  ::osl::MutexGuard,
                                                  ::cppu::OWeakObject > SpriteCanvasBase_Base;
@@ -121,12 +121,8 @@ namespace cairocanvas
 
         void initialize();
 
-#if defined __SUNPRO_CC
-        using SpriteCanvasBaseT::disposing;
-#endif
-
         /// Dispose all internal references
-        virtual void SAL_CALL disposing();
+        virtual void disposeThis();
 
         // Forwarding the XComponent implementation to the
         // cppu::ImplHelper templated base
diff --git a/canvas/source/directx/dx_canvas.cxx b/canvas/source/directx/dx_canvas.cxx
index f950564..89b752b 100644
--- a/canvas/source/directx/dx_canvas.cxx
+++ b/canvas/source/directx/dx_canvas.cxx
@@ -124,14 +124,14 @@ namespace dxcanvas
         maArguments.realloc(0);
     }
 
-    void SAL_CALL Canvas::disposing()
+    void Canvas::disposeThis()
     {
         ::osl::MutexGuard aGuard( m_aMutex );
 
         mxComponentContext.clear();
 
         // forward to parent
-        CanvasBaseT::disposing();
+        CanvasBaseT::disposeThis();
     }
 
     ::rtl::OUString SAL_CALL Canvas::getServiceName(  ) throw (uno::RuntimeException)
@@ -201,7 +201,7 @@ namespace dxcanvas
         maArguments.realloc(0);
     }
 
-    void SAL_CALL BitmapCanvas::disposing()
+    void BitmapCanvas::disposeThis()
     {
         ::osl::MutexGuard aGuard( m_aMutex );
 
@@ -209,7 +209,7 @@ namespace dxcanvas
         mxComponentContext.clear();
 
         // forward to parent
-        BitmapCanvasBaseT::disposing();
+        BitmapCanvasBaseT::disposeThis();
     }
 
     ::rtl::OUString SAL_CALL BitmapCanvas::getServiceName(  ) throw (uno::RuntimeException)
diff --git a/canvas/source/directx/dx_canvas.hxx b/canvas/source/directx/dx_canvas.hxx
index 4f71939..54a37e0 100644
--- a/canvas/source/directx/dx_canvas.hxx
+++ b/canvas/source/directx/dx_canvas.hxx
@@ -45,7 +45,7 @@
 #include <comphelper/uno3.hxx>
 
 #include <canvas/base/integerbitmapbase.hxx>
-#include <canvas/base/basemutexhelper.hxx>
+#include <canvas/base/disambiguationhelper.hxx>
 #include <canvas/base/graphicdevicebase.hxx>
 
 #include "dx_bitmapprovider.hxx"
@@ -63,7 +63,7 @@ namespace dxcanvas
                                               ::com::sun::star::util::XUpdatable,
                                               ::com::sun::star::beans::XPropertySet,
                                               ::com::sun::star::lang::XServiceName >	GraphicDeviceBase1_Base;
-    typedef ::canvas::GraphicDeviceBase< ::canvas::BaseMutexHelper< GraphicDeviceBase1_Base >,
+    typedef ::canvas::GraphicDeviceBase< ::canvas::DisambiguationHelper< GraphicDeviceBase1_Base >,
                                            DeviceHelper,
                                            ::osl::MutexGuard,
                                            ::cppu::OWeakObject > 	CanvasBase1_Base;
@@ -92,7 +92,7 @@ namespace dxcanvas
         void initialize();
 
         /// Dispose all internal references
-        virtual void SAL_CALL disposing();
+        virtual void disposeThis();
 
         // Forwarding the XComponent implementation to the
         // cppu::ImplHelper templated base
@@ -120,7 +120,7 @@ namespace dxcanvas
                                               ::com::sun::star::util::XUpdatable,
                                               ::com::sun::star::beans::XPropertySet,
                                               ::com::sun::star::lang::XServiceName >	GraphicDeviceBase2_Base;
-    typedef ::canvas::GraphicDeviceBase< ::canvas::BaseMutexHelper< GraphicDeviceBase2_Base >,
+    typedef ::canvas::GraphicDeviceBase< ::canvas::DisambiguationHelper< GraphicDeviceBase2_Base >,
                                            DeviceHelper,
                                            ::osl::MutexGuard,
                                            ::cppu::OWeakObject > 	CanvasBase2_Base;
@@ -149,7 +149,7 @@ namespace dxcanvas
         void initialize();
 
         /// Dispose all internal references
-        virtual void SAL_CALL disposing();
+        virtual void disposeThis();
 
         // Forwarding the XComponent implementation to the
         // cppu::ImplHelper templated base
diff --git a/canvas/source/directx/dx_canvasbitmap.cxx b/canvas/source/directx/dx_canvasbitmap.cxx
index 263fe9d..c67571c 100644
--- a/canvas/source/directx/dx_canvasbitmap.cxx
+++ b/canvas/source/directx/dx_canvasbitmap.cxx
@@ -60,13 +60,13 @@ namespace dxcanvas
         maCanvasHelper.setTarget( mpBitmap );
     }
 
-    void SAL_CALL CanvasBitmap::disposing()
+    void CanvasBitmap::disposeThis()
     {
         mpBitmap.reset();
         mpDevice.clear();
 
         // forward to parent
-        CanvasBitmap_Base::disposing();
+        CanvasBitmap_Base::disposeThis();
     }
 
     struct AlphaDIB
diff --git a/canvas/source/directx/dx_canvasbitmap.hxx b/canvas/source/directx/dx_canvasbitmap.hxx
index 68cc4da..e4fa634 100644
--- a/canvas/source/directx/dx_canvasbitmap.hxx
+++ b/canvas/source/directx/dx_canvasbitmap.hxx
@@ -42,7 +42,7 @@
 
 #include <cppuhelper/compbase3.hxx>
 #include <comphelper/uno3.hxx>
-#include <canvas/base/basemutexhelper.hxx>
+#include <canvas/base/disambiguationhelper.hxx>
 #include <canvas/base/integerbitmapbase.hxx>
 
 #include "dx_bitmapprovider.hxx"
@@ -60,7 +60,7 @@ namespace dxcanvas
                                               ::com::sun::star::rendering::XIntegerBitmap,
                                                ::com::sun::star::lang::XServiceInfo,
                                                ::com::sun::star::beans::XFastPropertySet >  	CanvasBitmapBase_Base;
-    typedef ::canvas::IntegerBitmapBase< ::canvas::BaseMutexHelper< CanvasBitmapBase_Base >,
+    typedef ::canvas::IntegerBitmapBase< ::canvas::DisambiguationHelper< CanvasBitmapBase_Base >,
                                          BitmapCanvasHelper,
                                          ::osl::MutexGuard,
                                          ::cppu::OWeakObject >							CanvasBitmap_Base;
@@ -80,7 +80,7 @@ namespace dxcanvas
                       const DeviceRef&        rDevice );
 
         /// Dispose all internal references
-        virtual void SAL_CALL disposing();
+        virtual void disposeThis();
 
         // XServiceInfo
         virtual ::rtl::OUString SAL_CALL getImplementationName(  ) throw (::com::sun::star::uno::RuntimeException);
diff --git a/canvas/source/directx/dx_canvascustomsprite.cxx b/canvas/source/directx/dx_canvascustomsprite.cxx
index df36fb3..811bf7f 100644
--- a/canvas/source/directx/dx_canvascustomsprite.cxx
+++ b/canvas/source/directx/dx_canvascustomsprite.cxx
@@ -83,7 +83,7 @@ namespace dxcanvas
         maCanvasHelper.clear();
     }
 
-    void SAL_CALL CanvasCustomSprite::disposing()
+    void CanvasCustomSprite::disposeThis()
     {
         ::osl::MutexGuard aGuard( m_aMutex );
 
@@ -91,7 +91,7 @@ namespace dxcanvas
         mpSpriteCanvas.clear();
 
         // forward to parent
-        CanvasCustomSpriteBaseT::disposing();
+        CanvasCustomSpriteBaseT::disposeThis();
     }
 
 #define IMPLEMENTATION_NAME "DXCanvas.CanvasCustomSprite"
diff --git a/canvas/source/directx/dx_canvascustomsprite.hxx b/canvas/source/directx/dx_canvascustomsprite.hxx
index 016882a..6c41e5e 100644
--- a/canvas/source/directx/dx_canvascustomsprite.hxx
+++ b/canvas/source/directx/dx_canvascustomsprite.hxx
@@ -42,7 +42,7 @@
 #include <basegfx/vector/b2isize.hxx>
 #include <basegfx/matrix/b2dhommatrix.hxx>
 
-#include <canvas/base/basemutexhelper.hxx>
+#include <canvas/base/disambiguationhelper.hxx>
 #include <canvas/base/canvascustomspritebase.hxx>
 
 #include "dx_sprite.hxx"
@@ -75,7 +75,7 @@ namespace dxcanvas
         remain a base class that provides implementation, not to
         enforce any specific interface on its derivees.
      */
-    class CanvasCustomSpriteSpriteBase_Base : public ::canvas::BaseMutexHelper< CanvasCustomSpriteBase_Base >,
+    class CanvasCustomSpriteSpriteBase_Base : public ::canvas::DisambiguationHelper< CanvasCustomSpriteBase_Base >,
                                                  public Sprite
     {
     };
@@ -111,7 +111,7 @@ namespace dxcanvas
                             const ::canvas::ISurfaceProxyManagerSharedPtr&	rSurfaceProxy,
                             bool											bShowSpriteBounds );
 
-        virtual void SAL_CALL disposing();
+        virtual void disposeThis();
 
         // Forwarding the XComponent implementation to the
         // cppu::ImplHelper templated base
diff --git a/canvas/source/directx/dx_spritecanvas.cxx b/canvas/source/directx/dx_spritecanvas.cxx
index 3dd2e69..aa2ae57 100644
--- a/canvas/source/directx/dx_spritecanvas.cxx
+++ b/canvas/source/directx/dx_spritecanvas.cxx
@@ -126,14 +126,14 @@ namespace dxcanvas
         maArguments.realloc(0);
     }
 
-    void SAL_CALL SpriteCanvas::disposing()
+    void SpriteCanvas::disposeThis()
     {
         ::osl::MutexGuard aGuard( m_aMutex );
 
         mxComponentContext.clear();
 
         // forward to parent
-        SpriteCanvasBaseT::disposing();
+        SpriteCanvasBaseT::disposeThis();
     }
 
     ::sal_Bool SAL_CALL SpriteCanvas::showBuffer( ::sal_Bool bUpdateAll ) throw (uno::RuntimeException)
diff --git a/canvas/source/directx/dx_spritecanvas.hxx b/canvas/source/directx/dx_spritecanvas.hxx
index d64892e..bea068c 100644
--- a/canvas/source/directx/dx_spritecanvas.hxx
+++ b/canvas/source/directx/dx_spritecanvas.hxx
@@ -45,7 +45,7 @@
 #include <comphelper/uno3.hxx>
 
 #include <canvas/base/spritecanvasbase.hxx>
-#include <canvas/base/basemutexhelper.hxx>
+#include <canvas/base/disambiguationhelper.hxx>
 #include <canvas/base/bufferedgraphicdevicebase.hxx>
 
 #include "dx_bitmapprovider.hxx"
@@ -66,7 +66,8 @@ namespace dxcanvas
                                               ::com::sun::star::util::XUpdatable,
                                               ::com::sun::star::beans::XPropertySet,
                                               ::com::sun::star::lang::XServiceName >	WindowGraphicDeviceBase_Base;
-    typedef ::canvas::BufferedGraphicDeviceBase< ::canvas::BaseMutexHelper< WindowGraphicDeviceBase_Base >,
+    typedef ::canvas::BufferedGraphicDeviceBase< ::canvas::DisambiguationHelper< 
+                                                 ::canvas::DisposingDisambiguate< WindowGraphicDeviceBase_Base > >,
                                                    SpriteDeviceHelper,
                                                    ::osl::MutexGuard,
                                                    ::cppu::OWeakObject > 	SpriteCanvasBase_Base;
@@ -117,7 +118,7 @@ namespace dxcanvas
         void initialize();
 
         /// Dispose all internal references
-        virtual void SAL_CALL disposing();
+        virtual void disposeThis();
 
         // Forwarding the XComponent implementation to the
         // cppu::ImplHelper templated base
diff --git a/canvas/source/null/null_canvasbitmap.cxx b/canvas/source/null/null_canvasbitmap.cxx
index f157890..5d47563 100644
--- a/canvas/source/null/null_canvasbitmap.cxx
+++ b/canvas/source/null/null_canvasbitmap.cxx
@@ -53,12 +53,12 @@ namespace nullcanvas
                              bHasAlpha );
     }
 
-    void SAL_CALL CanvasBitmap::disposing()
+    void CanvasBitmap::disposeThis()
     {
         mpDevice.clear();
 
         // forward to parent
-        CanvasBitmap_Base::disposing();
+        CanvasBitmap_Base::disposeThis();
     }
 
 #define IMPLEMENTATION_NAME "NullCanvas.CanvasBitmap"
diff --git a/canvas/source/null/null_canvasbitmap.hxx b/canvas/source/null/null_canvasbitmap.hxx
index cd8f4aa..6a273ae 100644
--- a/canvas/source/null/null_canvasbitmap.hxx
+++ b/canvas/source/null/null_canvasbitmap.hxx
@@ -40,6 +40,7 @@
 #include <boost/shared_ptr.hpp>
 
 #include <canvas/base/integerbitmapbase.hxx>
+#include <canvas/base/disambiguationhelper.hxx>
 
 #include "null_canvashelper.hxx"
 #include "null_spritecanvas.hxx"
@@ -53,7 +54,7 @@ namespace nullcanvas
     typedef ::cppu::WeakComponentImplHelper3< ::com::sun::star::rendering::XBitmapCanvas,
                                               ::com::sun::star::rendering::XIntegerBitmap,
                                                ::com::sun::star::lang::XServiceInfo >  	CanvasBitmapBase_Base;
-    typedef ::canvas::IntegerBitmapBase< ::canvas::BaseMutexHelper< CanvasBitmapBase_Base >, 
+    typedef ::canvas::IntegerBitmapBase< ::canvas::DisambiguationHelper< CanvasBitmapBase_Base >,
                                          CanvasHelper, 
                                          ::osl::MutexGuard,
                                          ::cppu::OWeakObject >							CanvasBitmap_Base;
@@ -75,7 +76,7 @@ namespace nullcanvas
                       bool                      bHasAlpha );
 
         /// Dispose all internal references
-        virtual void SAL_CALL disposing();
+        virtual void disposeThis();
 
         // XServiceInfo
         virtual ::rtl::OUString SAL_CALL getImplementationName(  ) throw (::com::sun::star::uno::RuntimeException);
diff --git a/canvas/source/null/null_canvascustomsprite.cxx b/canvas/source/null/null_canvascustomsprite.cxx
index b9e194a..42845f5 100644
--- a/canvas/source/null/null_canvascustomsprite.cxx
+++ b/canvas/source/null/null_canvascustomsprite.cxx
@@ -66,14 +66,14 @@ namespace nullcanvas
                              rRefDevice );
     }
     
-    void SAL_CALL CanvasCustomSprite::disposing()
+    void CanvasCustomSprite::disposeThis()
     {
         ::osl::MutexGuard aGuard( m_aMutex );
 
         mpSpriteCanvas.clear();
 
         // forward to parent
-        CanvasCustomSpriteBaseT::disposing();
+        CanvasCustomSpriteBaseT::disposeThis();
     }
 
     void CanvasCustomSprite::redraw() const
diff --git a/canvas/source/null/null_canvascustomsprite.hxx b/canvas/source/null/null_canvascustomsprite.hxx
index 5435ed0..ab11db6 100644
--- a/canvas/source/null/null_canvascustomsprite.hxx
+++ b/canvas/source/null/null_canvascustomsprite.hxx
@@ -42,7 +42,7 @@
 #include <basegfx/vector/b2isize.hxx>
 #include <basegfx/matrix/b2dhommatrix.hxx>
 
-#include <canvas/base/basemutexhelper.hxx>
+#include <canvas/base/disambiguationhelper.hxx>
 #include <canvas/base/canvascustomspritebase.hxx>
 
 #include "sprite.hxx"
@@ -75,8 +75,8 @@ namespace nullcanvas
         remain a base class that provides implementation, not to
         enforce any specific interface on its derivees.
      */
-    class CanvasCustomSpriteSpriteBase_Base : public ::canvas::BaseMutexHelper< CanvasCustomSpriteBase_Base >,
-                                                 public Sprite
+    class CanvasCustomSpriteSpriteBase_Base : public ::canvas::DisambiguationHelper< CanvasCustomSpriteBase_Base >,
+                                              public Sprite
     {
     };
 
@@ -109,7 +109,7 @@ namespace nullcanvas
         CanvasCustomSprite( const ::com::sun::star::geometry::RealSize2D& 	rSpriteSize,
                             const SpriteCanvasRef&                          rRefDevice );
 
-        virtual void SAL_CALL disposing();
+        virtual void disposeThis();
 
         // Forwarding the XComponent implementation to the
         // cppu::ImplHelper templated base
diff --git a/canvas/source/null/null_spritecanvas.cxx b/canvas/source/null/null_spritecanvas.cxx
index 3e98e51..2a3787b 100644
--- a/canvas/source/null/null_spritecanvas.cxx
+++ b/canvas/source/null/null_spritecanvas.cxx
@@ -100,14 +100,14 @@ namespace nullcanvas
         maArguments.realloc(0);
     }
 
-    void SAL_CALL SpriteCanvas::disposing()
+    void SpriteCanvas::disposeThis()
     {
         ::osl::MutexGuard aGuard( m_aMutex );
 
         mxComponentContext.clear();
 
         // forward to parent
-        SpriteCanvasBaseT::disposing();
+        SpriteCanvasBaseT::disposeThis();
     }
 
     ::sal_Bool SAL_CALL SpriteCanvas::showBuffer( ::sal_Bool bUpdateAll ) throw (uno::RuntimeException)
diff --git a/canvas/source/null/null_spritecanvas.hxx b/canvas/source/null/null_spritecanvas.hxx
index c10b5d0..044f8b6 100644
--- a/canvas/source/null/null_spritecanvas.hxx
+++ b/canvas/source/null/null_spritecanvas.hxx
@@ -45,7 +45,7 @@
 #include <comphelper/uno3.hxx>
 
 #include <canvas/base/spritecanvasbase.hxx>
-#include <canvas/base/basemutexhelper.hxx>
+#include <canvas/base/disambiguationhelper.hxx>
 #include <canvas/base/bufferedgraphicdevicebase.hxx>
 
 #include "null_spritecanvashelper.hxx"
@@ -63,7 +63,7 @@ namespace nullcanvas
                                                ::com::sun::star::awt::XWindowListener,
                                                ::com::sun::star::beans::XPropertySet,
                                                ::com::sun::star::lang::XServiceName >	WindowGraphicDeviceBase_Base;
-    typedef ::canvas::BufferedGraphicDeviceBase< ::canvas::BaseMutexHelper< WindowGraphicDeviceBase_Base >,
+    typedef ::canvas::BufferedGraphicDeviceBase< ::canvas::DisambiguationHelper< WindowGraphicDeviceBase_Base >,
                                                    DeviceHelper, 
                                                    ::osl::MutexGuard,
                                                    ::cppu::OWeakObject > 	SpriteCanvasBase_Base;
@@ -114,12 +114,8 @@ namespace nullcanvas
 
         void initialize();
 
-#if defined __SUNPRO_CC
-        using SpriteCanvasBaseT::disposing;
-#endif
-
         /// Dispose all internal references
-        virtual void SAL_CALL disposing();
+        virtual void disposeThis();
 
         // Forwarding the XComponent implementation to the
         // cppu::ImplHelper templated base
diff --git a/canvas/source/vcl/canvas.cxx b/canvas/source/vcl/canvas.cxx
index 87c4d6d..341c4a8 100644
--- a/canvas/source/vcl/canvas.cxx
+++ b/canvas/source/vcl/canvas.cxx
@@ -133,14 +133,14 @@ namespace vclcanvas
         OSL_TRACE( "Canvas destroyed" );
     }
 
-    void SAL_CALL Canvas::disposing()
+    void Canvas::disposeThis()
     {
         SolarMutexGuard aGuard;
 
         mxComponentContext.clear();
 
         // forward to parent
-        CanvasBaseT::disposing();
+        CanvasBaseT::disposeThis();
     }
 
     ::rtl::OUString SAL_CALL Canvas::getServiceName(  ) throw (::com::sun::star::uno::RuntimeException)
diff --git a/canvas/source/vcl/canvas.hxx b/canvas/source/vcl/canvas.hxx
index ea6b79a..25fd8ac 100644
--- a/canvas/source/vcl/canvas.hxx
+++ b/canvas/source/vcl/canvas.hxx
@@ -43,7 +43,7 @@
 #include <cppuhelper/compbase7.hxx>
 #include <comphelper/uno3.hxx>
 
-#include <canvas/base/basemutexhelper.hxx>
+#include <canvas/base/disambiguationhelper.hxx>
 #include <canvas/base/integerbitmapbase.hxx>
 #include <canvas/base/graphicdevicebase.hxx>
 
@@ -64,7 +64,7 @@ namespace vclcanvas
                                               ::com::sun::star::util::XUpdatable,
                                               ::com::sun::star::beans::XPropertySet,
                                               ::com::sun::star::lang::XServiceName >	GraphicDeviceBase_Base;
-    typedef ::canvas::GraphicDeviceBase< ::canvas::BaseMutexHelper< GraphicDeviceBase_Base >,
+    typedef ::canvas::GraphicDeviceBase< ::canvas::DisambiguationHelper< GraphicDeviceBase_Base >,
                                            DeviceHelper, 
                                            tools::LocalGuard,
                                            ::cppu::OWeakObject > 	CanvasBase_Base;
@@ -96,12 +96,8 @@ namespace vclcanvas
         /// For resource tracking
         ~Canvas();
 
-#if defined __SUNPRO_CC
-        using CanvasBaseT::disposing;
-#endif
-
         /// Dispose all internal references
-        virtual void SAL_CALL disposing();
+        virtual void disposeThis();
 
         // Forwarding the XComponent implementation to the
         // cppu::ImplHelper templated base
diff --git a/canvas/source/vcl/canvasbitmap.cxx b/canvas/source/vcl/canvasbitmap.cxx
index c44f50b..1c3822a 100644
--- a/canvas/source/vcl/canvasbitmap.cxx
+++ b/canvas/source/vcl/canvasbitmap.cxx
@@ -82,12 +82,6 @@ namespace vclcanvas
         maCanvasHelper.init( rBitmap, rDevice, rOutDevProvider );
     }
 
-    void SAL_CALL CanvasBitmap::disposing()
-    {
-        // forward to base
-        CanvasBitmap_Base::disposing();
-    }
-
 #define IMPLEMENTATION_NAME "VCLCanvas.CanvasBitmap"
 #define SERVICE_NAME "com.sun.star.rendering.CanvasBitmap"
 
diff --git a/canvas/source/vcl/canvasbitmap.hxx b/canvas/source/vcl/canvasbitmap.hxx
index a116200..a7e9b5a 100644
--- a/canvas/source/vcl/canvasbitmap.hxx
+++ b/canvas/source/vcl/canvasbitmap.hxx
@@ -57,7 +57,7 @@ namespace vclcanvas
                                                ::com::sun::star::rendering::XIntegerBitmap,
                                                 ::com::sun::star::lang::XServiceInfo,
                                              ::com::sun::star::beans::XFastPropertySet >  	CanvasBitmapBase_Base;
-    typedef ::canvas::IntegerBitmapBase< ::canvas::BaseMutexHelper< CanvasBitmapBase_Base >, 
+    typedef ::canvas::IntegerBitmapBase< ::canvas::DisambiguationHelper< CanvasBitmapBase_Base >, 
                                          CanvasBitmapHelper, 
                                          tools::LocalGuard,
                                          ::cppu::OWeakObject >							CanvasBitmap_Base;
@@ -87,9 +87,6 @@ namespace vclcanvas
                       ::com::sun::star::rendering::XGraphicDevice& rDevice,
                       const OutDevProviderSharedPtr&               rOutDevProvider ); 
 
-        // overridden because of mpDevice
-        virtual void SAL_CALL disposing();
-
         // XServiceInfo
         virtual ::rtl::OUString SAL_CALL getImplementationName(  ) throw (::com::sun::star::uno::RuntimeException);
         virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw (::com::sun::star::uno::RuntimeException);
diff --git a/canvas/source/vcl/canvascustomsprite.cxx b/canvas/source/vcl/canvascustomsprite.cxx
index b9e11d4..550e111 100644
--- a/canvas/source/vcl/canvascustomsprite.cxx
+++ b/canvas/source/vcl/canvascustomsprite.cxx
@@ -129,14 +129,6 @@ namespace vclcanvas
         maCanvasHelper.clear();
     }
 
-    void SAL_CALL CanvasCustomSprite::disposing()
-    {
-        SolarMutexGuard aGuard;
-
-        // forward to parent
-        CanvasCustomSpriteBaseT::disposing();
-    }
-
 #define IMPLEMENTATION_NAME "VCLCanvas.CanvasCustomSprite"
 #define SERVICE_NAME "com.sun.star.rendering.CanvasCustomSprite"
 
diff --git a/canvas/source/vcl/canvascustomsprite.hxx b/canvas/source/vcl/canvascustomsprite.hxx
index 0990e95..f6822b9 100644
--- a/canvas/source/vcl/canvascustomsprite.hxx
+++ b/canvas/source/vcl/canvascustomsprite.hxx
@@ -41,7 +41,7 @@
 #include <vcl/virdev.hxx>
 
 #include <canvas/vclwrapper.hxx>
-#include <canvas/base/basemutexhelper.hxx>
+#include <canvas/base/disambiguationhelper.hxx>
 #include <canvas/base/spritesurface.hxx>
 #include <canvas/base/canvascustomspritebase.hxx>
 
@@ -77,7 +77,7 @@ namespace vclcanvas
         remain a base class that provides implementation, not to
         enforce any specific interface on its derivees.
      */
-    class CanvasCustomSpriteSpriteBase_Base : public ::canvas::BaseMutexHelper< CanvasCustomSpriteBase_Base >,
+    class CanvasCustomSpriteSpriteBase_Base : public ::canvas::DisambiguationHelper< CanvasCustomSpriteBase_Base >,
                                                  public Sprite
     {
     };
@@ -100,8 +100,6 @@ namespace vclcanvas
                             const OutDevProviderSharedPtr&                rOutDevProvider,
                             bool                                          bShowSpriteBounds );
 
-        virtual void SAL_CALL disposing();
-
         // Forwarding the XComponent implementation to the
         // cppu::ImplHelper templated base
         //                                    Classname           Base doing refcount          Base implementing the XComponent interface
diff --git a/canvas/source/vcl/spritecanvas.cxx b/canvas/source/vcl/spritecanvas.cxx
index 2e2e735..0847151 100644
--- a/canvas/source/vcl/spritecanvas.cxx
+++ b/canvas/source/vcl/spritecanvas.cxx
@@ -129,14 +129,14 @@ namespace vclcanvas
     }
 
 
-    void SAL_CALL SpriteCanvas::disposing()
+    void SpriteCanvas::disposeThis()
     {
         SolarMutexGuard aGuard;
 
         mxComponentContext.clear();
 
         // forward to parent
-        SpriteCanvasBaseT::disposing();
+        SpriteCanvasBaseT::disposeThis();
     }
 
     ::sal_Bool SAL_CALL SpriteCanvas::showBuffer( ::sal_Bool bUpdateAll ) throw (uno::RuntimeException)
diff --git a/canvas/source/vcl/spritecanvas.hxx b/canvas/source/vcl/spritecanvas.hxx
index fcad1a1..f67c245 100644
--- a/canvas/source/vcl/spritecanvas.hxx
+++ b/canvas/source/vcl/spritecanvas.hxx
@@ -45,7 +45,7 @@
 #include <comphelper/uno3.hxx>
 
 #include <canvas/base/spritecanvasbase.hxx>
-#include <canvas/base/basemutexhelper.hxx>
+#include <canvas/base/disambiguationhelper.hxx>
 #include <canvas/base/bufferedgraphicdevicebase.hxx>
 
 #include "spritecanvashelper.hxx"
@@ -68,7 +68,7 @@ namespace vclcanvas
                                               ::com::sun::star::util::XUpdatable,
                                               ::com::sun::star::beans::XPropertySet,
                                               ::com::sun::star::lang::XServiceName >	WindowGraphicDeviceBase_Base;
-    typedef ::canvas::BufferedGraphicDeviceBase< ::canvas::BaseMutexHelper< WindowGraphicDeviceBase_Base >,
+    typedef ::canvas::BufferedGraphicDeviceBase< ::canvas::DisambiguationHelper< WindowGraphicDeviceBase_Base >,
                                                  SpriteDeviceHelper, 
                                                  tools::LocalGuard,
                                                  ::cppu::OWeakObject > 	SpriteCanvasBase_Base;
@@ -123,12 +123,8 @@ namespace vclcanvas
         /// For resource tracking
         ~SpriteCanvas();
 
-#if defined __SUNPRO_CC
-        using SpriteCanvasBaseT::disposing;
-#endif
-
         /// Dispose all internal references
-        virtual void SAL_CALL disposing();
+        virtual void disposeThis();
 
         // Forwarding the XComponent implementation to the
         // cppu::ImplHelper templated base


More information about the Libreoffice-commits mailing list