diff options
Diffstat (limited to 'vcl/source/gdi/bmpacc.cxx')
-rw-r--r-- | vcl/source/gdi/bmpacc.cxx | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/vcl/source/gdi/bmpacc.cxx b/vcl/source/gdi/bmpacc.cxx index ba7a1923e4ca..f970c93428ce 100644 --- a/vcl/source/gdi/bmpacc.cxx +++ b/vcl/source/gdi/bmpacc.cxx @@ -40,11 +40,16 @@ BitmapInfoAccess::BitmapInfoAccess( Bitmap& rBitmap, BitmapAccessMode nMode ) : if( !xImpBmp ) return; - if( mnAccessMode == BitmapAccessMode::Write && xImpBmp.use_count() > 2 ) + if (mnAccessMode == BitmapAccessMode::Write) { - xImpBmp.reset(); - rBitmap.ImplMakeUnique(); - xImpBmp = rBitmap.ImplGetSalBitmap(); + xImpBmp->DropScaledCache(); + + if (xImpBmp.use_count() > 2) + { + xImpBmp.reset(); + rBitmap.ImplMakeUnique(); + xImpBmp = rBitmap.ImplGetSalBitmap(); + } } mpBuffer = xImpBmp->AcquireBuffer( mnAccessMode ); |