diff options
author | Caolán McNamara <caolanm@redhat.com> | 2016-02-16 10:39:28 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2016-02-16 16:03:07 +0000 |
commit | 3cdb86054c09617cea85dfc24ecbaf9cba376d7b (patch) | |
tree | 492627915c07805dec4ad696b363abb131fb40d3 /vcl/source/gdi/bmpacc.cxx | |
parent | ed88e6bf6a492008bd2e03a0e2ccab844fc8511e (diff) |
use std shared_ptr for sharing ImpBitmaps
Change-Id: I1a0360096964f6402bd3631f2b3f34bf9595ebc6
Reviewed-on: https://gerrit.libreoffice.org/22394
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl/source/gdi/bmpacc.cxx')
-rw-r--r-- | vcl/source/gdi/bmpacc.cxx | 37 |
1 files changed, 17 insertions, 20 deletions
diff --git a/vcl/source/gdi/bmpacc.cxx b/vcl/source/gdi/bmpacc.cxx index b1d59820ba15..149a5336ed42 100644 --- a/vcl/source/gdi/bmpacc.cxx +++ b/vcl/source/gdi/bmpacc.cxx @@ -48,38 +48,35 @@ BitmapInfoAccess::~BitmapInfoAccess() void BitmapInfoAccess::ImplCreate( Bitmap& rBitmap ) { - ImpBitmap* pImpBmp = rBitmap.ImplGetImpBitmap(); + std::shared_ptr<ImpBitmap> xImpBmp = rBitmap.ImplGetImpBitmap(); - DBG_ASSERT( pImpBmp, "Forbidden Access to empty bitmap!" ); + DBG_ASSERT( xImpBmp, "Forbidden Access to empty bitmap!" ); - if( pImpBmp ) + if( xImpBmp ) { if( mnAccessMode == BITMAP_WRITE_ACCESS && !maBitmap.ImplGetImpBitmap() ) { rBitmap.ImplMakeUnique(); - pImpBmp = rBitmap.ImplGetImpBitmap(); + xImpBmp = rBitmap.ImplGetImpBitmap(); } else { DBG_ASSERT( mnAccessMode != BITMAP_WRITE_ACCESS || - pImpBmp->ImplGetRefCount() == 2, + xImpBmp.use_count() == 2, "Unpredictable results: bitmap is referenced more than once!" ); } - mpBuffer = pImpBmp->ImplAcquireBuffer( mnAccessMode ); + mpBuffer = xImpBmp->ImplAcquireBuffer( mnAccessMode ); if( !mpBuffer ) { - ImpBitmap* pNewImpBmp = new ImpBitmap; - - if( pNewImpBmp->ImplCreate( *pImpBmp, rBitmap.GetBitCount() ) ) + std::shared_ptr<ImpBitmap> xNewImpBmp(new ImpBitmap); + if (xNewImpBmp->ImplCreate(*xImpBmp, rBitmap.GetBitCount())) { - pImpBmp = pNewImpBmp; - rBitmap.ImplSetImpBitmap( pImpBmp ); - mpBuffer = pImpBmp->ImplAcquireBuffer( mnAccessMode ); + xImpBmp = xNewImpBmp; + rBitmap.ImplSetImpBitmap( xImpBmp ); + mpBuffer = xImpBmp->ImplAcquireBuffer( mnAccessMode ); } - else - delete pNewImpBmp; } maBitmap = rBitmap; @@ -88,11 +85,11 @@ void BitmapInfoAccess::ImplCreate( Bitmap& rBitmap ) void BitmapInfoAccess::ImplDestroy() { - ImpBitmap* pImpBmp = maBitmap.ImplGetImpBitmap(); + std::shared_ptr<ImpBitmap> xImpBmp = maBitmap.ImplGetImpBitmap(); - if( mpBuffer && pImpBmp ) + if (mpBuffer && xImpBmp) { - pImpBmp->ImplReleaseBuffer( mpBuffer, mnAccessMode ); + xImpBmp->ImplReleaseBuffer( mpBuffer, mnAccessMode ); mpBuffer = nullptr; } } @@ -130,8 +127,8 @@ void BitmapReadAccess::ImplInitScanBuffer( Bitmap& rBitmap ) if (!mpBuffer) return; - ImpBitmap* pImpBmp = rBitmap.ImplGetImpBitmap(); - if (!pImpBmp) + std::shared_ptr<ImpBitmap> xImpBmp = rBitmap.ImplGetImpBitmap(); + if (!xImpBmp) return; maColorMask = mpBuffer->maColorMask; @@ -164,7 +161,7 @@ void BitmapReadAccess::ImplInitScanBuffer( Bitmap& rBitmap ) delete[] mpScanBuf; mpScanBuf = nullptr; - pImpBmp->ImplReleaseBuffer( mpBuffer, mnAccessMode ); + xImpBmp->ImplReleaseBuffer( mpBuffer, mnAccessMode ); mpBuffer = nullptr; } } |