summaryrefslogtreecommitdiff
path: root/vcl/source/gdi/bmpacc.cxx
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2016-02-16 10:39:28 +0000
committerCaolán McNamara <caolanm@redhat.com>2016-02-16 16:03:07 +0000
commit3cdb86054c09617cea85dfc24ecbaf9cba376d7b (patch)
tree492627915c07805dec4ad696b363abb131fb40d3 /vcl/source/gdi/bmpacc.cxx
parented88e6bf6a492008bd2e03a0e2ccab844fc8511e (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.cxx37
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;
}
}