Unwind VCLObject bits for OutputDevice derivatives.

Change-Id: I1abdf0a6d43029fb29e5cbc6c3f788aa98f55a1f
diff --git a/canvas/source/vcl/backbuffer.cxx b/canvas/source/vcl/backbuffer.cxx
index 73d6320..216b5eb 100644
--- a/canvas/source/vcl/backbuffer.cxx
+++ b/canvas/source/vcl/backbuffer.cxx
@@ -43,14 +43,20 @@ namespace vclcanvas
        }
    }

    BackBuffer::~BackBuffer()
    {
        SolarMutexGuard aGuard;
        maVDev.disposeAndClear();
    }

    OutputDevice& BackBuffer::getOutDev()
    {
        return maVDev.get();
        return *maVDev.get();
    }

    const OutputDevice& BackBuffer::getOutDev() const
    {
        return maVDev.get();
        return *maVDev.get();
    }

    void BackBuffer::setSize( const ::Size& rNewSize )
diff --git a/canvas/source/vcl/backbuffer.hxx b/canvas/source/vcl/backbuffer.hxx
index 0fea559..479f4dd 100644
--- a/canvas/source/vcl/backbuffer.hxx
+++ b/canvas/source/vcl/backbuffer.hxx
@@ -43,6 +43,7 @@ namespace vclcanvas
         */
        BackBuffer( const OutputDevice& rRefDevice,
                    bool                bMonochromeBuffer=false );
        ~BackBuffer();

        virtual OutputDevice&       getOutDev() SAL_OVERRIDE;
        virtual const OutputDevice& getOutDev() const SAL_OVERRIDE;
@@ -50,7 +51,7 @@ namespace vclcanvas
        void setSize( const ::Size& rNewSize );

    private:
        ::canvas::vcltools::VCLObject<VirtualDevice>    maVDev;
        VclPtr< VirtualDevice > maVDev;
    };

    typedef ::boost::shared_ptr< BackBuffer > BackBufferSharedPtr;
diff --git a/canvas/source/vcl/spritecanvashelper.cxx b/canvas/source/vcl/spritecanvashelper.cxx
index 6829505..8855dd5 100644
--- a/canvas/source/vcl/spritecanvashelper.cxx
+++ b/canvas/source/vcl/spritecanvashelper.cxx
@@ -189,6 +189,12 @@ namespace vclcanvas
#endif
    }

    SpriteCanvasHelper::~SpriteCanvasHelper()
    {
        SolarMutexGuard aGuard;
        maVDev.disposeAndClear();
    }

    void SpriteCanvasHelper::init( const OutDevProviderSharedPtr& rOutDev,
                                   SpriteCanvas&                  rOwningSpriteCanvas,
                                   ::canvas::SpriteRedrawManager& rManager,
diff --git a/canvas/source/vcl/spritecanvashelper.hxx b/canvas/source/vcl/spritecanvashelper.hxx
index dc165d4..0396217 100644
--- a/canvas/source/vcl/spritecanvashelper.hxx
+++ b/canvas/source/vcl/spritecanvashelper.hxx
@@ -23,6 +23,7 @@
#include <com/sun/star/rendering/XSpriteCanvas.hpp>
#include <com/sun/star/rendering/XIntegerBitmap.hpp>

#include <vcl/vclptr.hxx>
#include <vcl/virdev.hxx>

#include <canvas/spriteredrawmanager.hxx>
@@ -40,6 +41,7 @@ namespace vclcanvas
    {
    public:
        SpriteCanvasHelper();
        ~SpriteCanvasHelper()

        void init( const OutDevProviderSharedPtr& rOutDev,
                   SpriteCanvas&                  rOwningSpriteCanvas,
@@ -150,7 +152,7 @@ namespace vclcanvas
            Typically, sprites will be composited in the background,
            before pushing them to screen. This happens here.
         */
        ::canvas::vcltools::VCLObject< VirtualDevice >  maVDev;
        VclPtr< VirtualDevice > maVDev;

        /// For the frame counter timings
        ::canvas::tools::ElapsedTime                    maLastUpdate;