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.
This commit is contained in:
Thorsten Behrens
2011-04-08 16:44:28 +02:00
parent 55961e2dfd
commit 09b546cf9c
36 changed files with 114 additions and 143 deletions

View File

@@ -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)

View File

@@ -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

View File

@@ -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

View File

@@ -26,30 +26,37 @@
*
************************************************************************/
#ifndef INCLUDED_CANVAS_BASEMUTEXHELPER_HXX
#define INCLUDED_CANVAS_BASEMUTEXHELPER_HXX
#ifndef INCLUDED_CANVAS_DISAMBIGUATIONHELPER_HXX
#define INCLUDED_CANVAS_DISAMBIGUATIONHELPER_HXX
#include <osl/mutex.hxx>
/* Definition of the BaseMutexHelper class */
/* Definition of the DisambiguationHelper class */
namespace canvas
{
/** Base class, deriving from ::comphelper::OBaseMutex and
initializing its own baseclass with m_aMutex.
/** 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 BaseMutexHelper : public Base
template< class Base > class DisambiguationHelper : public Base
{
public:
typedef Base BaseType;
/** Construct BaseMutexHelper
/** Construct DisambiguationHelper
This method is the whole purpose of this template:
initializing a base class with the provided m_aMutex
@@ -57,16 +64,27 @@ namespace canvas
as they require the lifetime of the mutex to extend
theirs).
*/
BaseMutexHelper() :
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_BASEMUTEXHELPER_HXX */
#endif /* INCLUDED_CANVAS_DISAMBIGUATIONHELPER_HXX */
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */

View File

@@ -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

View File

@@ -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

View File

@@ -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)

View File

@@ -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

View File

@@ -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()

View File

@@ -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

View File

@@ -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,

View File

@@ -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

View File

@@ -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)

View File

@@ -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

View File

@@ -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)

View File

@@ -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

View File

@@ -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

View File

@@ -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);

View File

@@ -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"

View File

@@ -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

View File

@@ -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)

View File

@@ -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

View File

@@ -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"

View File

@@ -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);

View File

@@ -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

View File

@@ -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

View File

@@ -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)

View File

@@ -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

View File

@@ -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)

View File

@@ -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

View File

@@ -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"

View File

@@ -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);

View File

@@ -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"

View File

@@ -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

View File

@@ -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)

View File

@@ -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