diff options
Diffstat (limited to 'vcl/source/gdi/bitmap3.cxx')
-rw-r--r-- | vcl/source/gdi/bitmap3.cxx | 32 |
1 files changed, 11 insertions, 21 deletions
diff --git a/vcl/source/gdi/bitmap3.cxx b/vcl/source/gdi/bitmap3.cxx index 53dd598de1c2..257eaa43ea40 100644 --- a/vcl/source/gdi/bitmap3.cxx +++ b/vcl/source/gdi/bitmap3.cxx @@ -245,20 +245,15 @@ void ImplCreateDitherMatrix( sal_uInt8 (*pDitherMatrix)[16][16] ) bool Bitmap::Convert( BmpConversion eConversion ) { // try to convert in backend - if (mpImpBmp) + if (mxImpBmp) { - ImpBitmap* pImpBmp = new ImpBitmap; - - if (pImpBmp->ImplCreate(*mpImpBmp) && pImpBmp->ImplConvert(eConversion)) + std::shared_ptr<ImpBitmap> xImpBmp(new ImpBitmap); + if (xImpBmp->ImplCreate(*mxImpBmp) && xImpBmp->ImplConvert(eConversion)) { - ImplSetImpBitmap(pImpBmp); - SAL_INFO( "vcl.opengl", "Ref count: " << mpImpBmp->ImplGetRefCount() ); + ImplSetImpBitmap(xImpBmp); + SAL_INFO( "vcl.opengl", "Ref count: " << mxImpBmp.use_count() ); return true; } - else - { - delete pImpBmp; - } } const sal_uInt16 nBitCount = GetBitCount (); @@ -898,23 +893,18 @@ bool Bitmap::Scale( const double& rScaleX, const double& rScaleY, BmpScaleFlag n const sal_uInt16 nStartCount(GetBitCount()); - if( mpImpBmp ) + if (mxImpBmp) { // implementation specific scaling - ImpBitmap* pImpBmp = new ImpBitmap; - - if( pImpBmp->ImplCreate( *mpImpBmp ) && pImpBmp->ImplScale( rScaleX, rScaleY, nScaleFlag ) ) + std::shared_ptr<ImpBitmap> xImpBmp(new ImpBitmap); + if (xImpBmp->ImplCreate(*mxImpBmp) && xImpBmp->ImplScale(rScaleX, rScaleY, nScaleFlag)) { - ImplSetImpBitmap( pImpBmp ); - SAL_INFO( "vcl.opengl", "Ref count: " << mpImpBmp->ImplGetRefCount() ); + ImplSetImpBitmap(xImpBmp); + SAL_INFO( "vcl.opengl", "Ref count: " << mxImpBmp.use_count() ); maPrefMapMode = MapMode( MAP_PIXEL ); - maPrefSize = pImpBmp->ImplGetSize(); + maPrefSize = xImpBmp->ImplGetSize(); return true; } - else - { - delete pImpBmp; - } } //fdo#33455 |