Unwind VCLObject bits for OutputDevice derivatives.

Change-Id: I1abdf0a6d43029fb29e5cbc6c3f788aa98f55a1f
This commit is contained in:
Michael Meeks
2015-03-19 13:13:47 +00:00
parent b5f08b336a
commit 3a091f8ca2
4 changed files with 19 additions and 4 deletions

View File

@@ -43,14 +43,20 @@ namespace vclcanvas
} }
} }
BackBuffer::~BackBuffer()
{
SolarMutexGuard aGuard;
maVDev.disposeAndClear();
}
OutputDevice& BackBuffer::getOutDev() OutputDevice& BackBuffer::getOutDev()
{ {
return maVDev.get(); return *maVDev.get();
} }
const OutputDevice& BackBuffer::getOutDev() const const OutputDevice& BackBuffer::getOutDev() const
{ {
return maVDev.get(); return *maVDev.get();
} }
void BackBuffer::setSize( const ::Size& rNewSize ) void BackBuffer::setSize( const ::Size& rNewSize )

View File

@@ -43,6 +43,7 @@ namespace vclcanvas
*/ */
BackBuffer( const OutputDevice& rRefDevice, BackBuffer( const OutputDevice& rRefDevice,
bool bMonochromeBuffer=false ); bool bMonochromeBuffer=false );
~BackBuffer();
virtual OutputDevice& getOutDev() SAL_OVERRIDE; virtual OutputDevice& getOutDev() SAL_OVERRIDE;
virtual const OutputDevice& getOutDev() const SAL_OVERRIDE; virtual const OutputDevice& getOutDev() const SAL_OVERRIDE;
@@ -50,7 +51,7 @@ namespace vclcanvas
void setSize( const ::Size& rNewSize ); void setSize( const ::Size& rNewSize );
private: private:
::canvas::vcltools::VCLObject<VirtualDevice> maVDev; VclPtr< VirtualDevice > maVDev;
}; };
typedef ::boost::shared_ptr< BackBuffer > BackBufferSharedPtr; typedef ::boost::shared_ptr< BackBuffer > BackBufferSharedPtr;

View File

@@ -189,6 +189,12 @@ namespace vclcanvas
#endif #endif
} }
SpriteCanvasHelper::~SpriteCanvasHelper()
{
SolarMutexGuard aGuard;
maVDev.disposeAndClear();
}
void SpriteCanvasHelper::init( const OutDevProviderSharedPtr& rOutDev, void SpriteCanvasHelper::init( const OutDevProviderSharedPtr& rOutDev,
SpriteCanvas& rOwningSpriteCanvas, SpriteCanvas& rOwningSpriteCanvas,
::canvas::SpriteRedrawManager& rManager, ::canvas::SpriteRedrawManager& rManager,

View File

@@ -23,6 +23,7 @@
#include <com/sun/star/rendering/XSpriteCanvas.hpp> #include <com/sun/star/rendering/XSpriteCanvas.hpp>
#include <com/sun/star/rendering/XIntegerBitmap.hpp> #include <com/sun/star/rendering/XIntegerBitmap.hpp>
#include <vcl/vclptr.hxx>
#include <vcl/virdev.hxx> #include <vcl/virdev.hxx>
#include <canvas/spriteredrawmanager.hxx> #include <canvas/spriteredrawmanager.hxx>
@@ -40,6 +41,7 @@ namespace vclcanvas
{ {
public: public:
SpriteCanvasHelper(); SpriteCanvasHelper();
~SpriteCanvasHelper()
void init( const OutDevProviderSharedPtr& rOutDev, void init( const OutDevProviderSharedPtr& rOutDev,
SpriteCanvas& rOwningSpriteCanvas, SpriteCanvas& rOwningSpriteCanvas,
@@ -150,7 +152,7 @@ namespace vclcanvas
Typically, sprites will be composited in the background, Typically, sprites will be composited in the background,
before pushing them to screen. This happens here. before pushing them to screen. This happens here.
*/ */
::canvas::vcltools::VCLObject< VirtualDevice > maVDev; VclPtr< VirtualDevice > maVDev;
/// For the frame counter timings /// For the frame counter timings
::canvas::tools::ElapsedTime maLastUpdate; ::canvas::tools::ElapsedTime maLastUpdate;