Move access to SystemDependentDataHolder to Bitmap (2)

I was too positive thinking that SalBitmap would be fine,
but it's locked to vcl. To be able to add system-dependent
BitmapBuffering I move the access to Bitmap now. This is
no functional change, but offers the same access as e.g.
B2DPolygon/B2DPolyPolygon offer already.

Also cleaned up usage/access to SystemDependentDataManager
which removes quite some code in constructors and makes
things easier in general.

Change-Id: I2baa40a12479fab0fe66063a018f058c6b8f5597
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/141507
Tested-by: Jenkins
Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
This commit is contained in:
Armin Le Grand (allotropia)
2022-10-18 17:17:41 +02:00
committed by Armin Le Grand
parent c74133420f
commit 02bd827f39
16 changed files with 52 additions and 53 deletions

View File

@@ -237,9 +237,9 @@ namespace basegfx
} }
template<class T, class... Args> template<class T, class... Args>
std::shared_ptr<T> addOrReplaceSystemDependentData(SystemDependentDataManager& manager, Args&&... args) const std::shared_ptr<T> addOrReplaceSystemDependentData(Args&&... args) const
{ {
std::shared_ptr<T> r = std::make_shared<T>(manager, std::forward<Args>(args)...); std::shared_ptr<T> r = std::make_shared<T>(std::forward<Args>(args)...);
// tdf#129845 only add to buffer if a relevant buffer time is estimated // tdf#129845 only add to buffer if a relevant buffer time is estimated
if(r->calculateCombinedHoldCyclesInSeconds() > 0) if(r->calculateCombinedHoldCyclesInSeconds() > 0)

View File

@@ -128,9 +128,9 @@ namespace basegfx
} }
template<class T, class... Args> template<class T, class... Args>
std::shared_ptr<T> addOrReplaceSystemDependentData(SystemDependentDataManager& manager, Args&&... args) const std::shared_ptr<T> addOrReplaceSystemDependentData(Args&&... args) const
{ {
std::shared_ptr<T> r = std::make_shared<T>(manager, std::forward<Args>(args)...); std::shared_ptr<T> r = std::make_shared<T>(std::forward<Args>(args)...);
// tdf#129845 only add to buffer if a relevant buffer time is estimated // tdf#129845 only add to buffer if a relevant buffer time is estimated
if(r->calculateCombinedHoldCyclesInSeconds() > 0) if(r->calculateCombinedHoldCyclesInSeconds() > 0)

View File

@@ -87,6 +87,8 @@ class AlphaMask;
class OutputDevice; class OutputDevice;
class SalBitmap; class SalBitmap;
namespace basegfx { class SystemDependentDataHolder; }
struct BitmapSystemData struct BitmapSystemData
{ {
#if defined(_WIN32) #if defined(_WIN32)
@@ -497,6 +499,9 @@ public:
bool bInvert = false, bool bInvert = false,
bool msoBrightness = false ); bool msoBrightness = false );
// access to SystemDependentDataHolder, to support overload in derived class(es)
const basegfx::SystemDependentDataHolder* accessSystemDependentDataHolder() const;
public: public:
/** ReassignWithSize and recalculate bitmap. /** ReassignWithSize and recalculate bitmap.

View File

@@ -66,6 +66,7 @@ class MouseEvent;
class GestureEventPan; class GestureEventPan;
struct ImplSVEvent; struct ImplSVEvent;
struct ConvertData; struct ConvertData;
namespace basegfx { class SystemDependentDataManager; }
namespace com::sun::star::uno { namespace com::sun::star::uno {
class XComponentContext; class XComponentContext;
@@ -828,6 +829,12 @@ public:
*/ */
static OutputDevice* GetDefaultDevice(); static OutputDevice* GetDefaultDevice();
/** access the DataManager for buffering system-dependent data
@returns the global instance of the SystemDependentDataManager
*/
static basegfx::SystemDependentDataManager& GetSystemDependentDataManager();
/** Get the first top-level window of the application. /** Get the first top-level window of the application.
@returns Pointer to top-level window (a Window object) @returns Pointer to top-level window (a Window object)

View File

@@ -161,9 +161,8 @@ sal_Int64 estimateUsageInBytesForSurfaceHelper(const SurfaceHelper* pHelper)
} // end anonymous namespace } // end anonymous namespace
SystemDependentData_BitmapHelper::SystemDependentData_BitmapHelper( SystemDependentData_BitmapHelper::SystemDependentData_BitmapHelper(
basegfx::SystemDependentDataManager& rSystemDependentDataManager,
std::shared_ptr<BitmapHelper> xBitmapHelper) std::shared_ptr<BitmapHelper> xBitmapHelper)
: basegfx::SystemDependentData(rSystemDependentDataManager) : basegfx::SystemDependentData(Application::GetSystemDependentDataManager())
, maBitmapHelper(std::move(xBitmapHelper)) , maBitmapHelper(std::move(xBitmapHelper))
{ {
} }
@@ -174,9 +173,8 @@ sal_Int64 SystemDependentData_BitmapHelper::estimateUsageInBytes() const
} }
SystemDependentData_MaskHelper::SystemDependentData_MaskHelper( SystemDependentData_MaskHelper::SystemDependentData_MaskHelper(
basegfx::SystemDependentDataManager& rSystemDependentDataManager,
std::shared_ptr<MaskHelper> xMaskHelper) std::shared_ptr<MaskHelper> xMaskHelper)
: basegfx::SystemDependentData(rSystemDependentDataManager) : basegfx::SystemDependentData(Application::GetSystemDependentDataManager())
, maMaskHelper(std::move(xMaskHelper)) , maMaskHelper(std::move(xMaskHelper))
{ {
} }
@@ -204,9 +202,8 @@ void tryToUseSourceBuffer(const SalBitmap& rSourceBitmap, std::shared_ptr<Bitmap
if (bBufferSource) if (bBufferSource)
{ {
const SvpSalBitmap& rSrcBmp(static_cast<const SvpSalBitmap&>(rSourceBitmap));
pSystemDependentData_BitmapHelper pSystemDependentData_BitmapHelper
= rSrcBmp.getSystemDependentDataT<SystemDependentData_BitmapHelper>(); = rSourceBitmap.getSystemDependentData<SystemDependentData_BitmapHelper>();
if (pSystemDependentData_BitmapHelper) if (pSystemDependentData_BitmapHelper)
{ {
@@ -224,9 +221,7 @@ void tryToUseSourceBuffer(const SalBitmap& rSourceBitmap, std::shared_ptr<Bitmap
if (bBufferSource) if (bBufferSource)
{ {
// add to buffering mechanism to potentially reuse next time // add to buffering mechanism to potentially reuse next time
const SvpSalBitmap& rSrcBmp(static_cast<const SvpSalBitmap&>(rSourceBitmap)); rSourceBitmap.addOrReplaceSystemDependentData<SystemDependentData_BitmapHelper>(rSurface);
rSrcBmp.addOrReplaceSystemDependentDataT<SystemDependentData_BitmapHelper>(
ImplGetSystemDependentDataManager(), rSurface);
} }
} }
@@ -240,9 +235,8 @@ void tryToUseMaskBuffer(const SalBitmap& rMaskBitmap, std::shared_ptr<MaskHelper
if (bBufferMask) if (bBufferMask)
{ {
const SvpSalBitmap& rSrcBmp(static_cast<const SvpSalBitmap&>(rMaskBitmap));
pSystemDependentData_MaskHelper pSystemDependentData_MaskHelper
= rSrcBmp.getSystemDependentDataT<SystemDependentData_MaskHelper>(); = rMaskBitmap.getSystemDependentData<SystemDependentData_MaskHelper>();
if (pSystemDependentData_MaskHelper) if (pSystemDependentData_MaskHelper)
{ {
@@ -260,9 +254,7 @@ void tryToUseMaskBuffer(const SalBitmap& rMaskBitmap, std::shared_ptr<MaskHelper
if (bBufferMask) if (bBufferMask)
{ {
// add to buffering mechanism to potentially reuse next time // add to buffering mechanism to potentially reuse next time
const SvpSalBitmap& rSrcBmp(static_cast<const SvpSalBitmap&>(rMaskBitmap)); rMaskBitmap.addOrReplaceSystemDependentData<SystemDependentData_MaskHelper>(rMask);
rSrcBmp.addOrReplaceSystemDependentDataT<SystemDependentData_MaskHelper>(
ImplGetSystemDependentDataManager(), rMask);
} }
} }

View File

@@ -306,10 +306,10 @@ basegfx::B2DPoint impPixelSnap(const basegfx::B2DPolygon& rPolygon,
return rPolygon.getB2DPoint(nIndex); return rPolygon.getB2DPoint(nIndex);
} }
SystemDependentData_CairoPath::SystemDependentData_CairoPath( SystemDependentData_CairoPath::SystemDependentData_CairoPath(size_t nSizeMeasure, cairo_t* cr,
basegfx::SystemDependentDataManager& rSystemDependentDataManager, size_t nSizeMeasure, bool bNoJoin, bool bAntiAlias,
cairo_t* cr, bool bNoJoin, bool bAntiAlias, const std::vector<double>* pStroke) const std::vector<double>* pStroke)
: basegfx::SystemDependentData(rSystemDependentDataManager) : basegfx::SystemDependentData(Application::GetSystemDependentDataManager())
, mpCairoPath(nullptr) , mpCairoPath(nullptr)
, mbNoJoin(bNoJoin) , mbNoJoin(bNoJoin)
, mbAntiAlias(bAntiAlias) , mbAntiAlias(bAntiAlias)
@@ -385,7 +385,7 @@ void add_polygon_path(cairo_t* cr, const basegfx::B2DPolyPolygon& rPolyPolygon,
// for decisions how/what to buffer, see Note in WinSalGraphicsImpl::drawPolyPolygon // for decisions how/what to buffer, see Note in WinSalGraphicsImpl::drawPolyPolygon
pSystemDependentData_CairoPath pSystemDependentData_CairoPath
= rPolyPolygon.addOrReplaceSystemDependentData<SystemDependentData_CairoPath>( = rPolyPolygon.addOrReplaceSystemDependentData<SystemDependentData_CairoPath>(
ImplGetSystemDependentDataManager(), nSizeMeasure, cr, false, false, nullptr); nSizeMeasure, cr, false, false, nullptr);
} }
} }
@@ -856,8 +856,7 @@ bool CairoCommon::drawPolyLine(cairo_t* cr, basegfx::B2DRange* pExtents, const C
{ {
pSystemDependentData_CairoPath pSystemDependentData_CairoPath
= rPolyLine.addOrReplaceSystemDependentData<SystemDependentData_CairoPath>( = rPolyLine.addOrReplaceSystemDependentData<SystemDependentData_CairoPath>(
ImplGetSystemDependentDataManager(), nSizeMeasure, cr, bNoJoin, bAntiAlias, nSizeMeasure, cr, bNoJoin, bAntiAlias, pStroke);
pStroke);
} }
} }

View File

@@ -52,9 +52,7 @@ private:
std::shared_ptr<BitmapHelper> maBitmapHelper; std::shared_ptr<BitmapHelper> maBitmapHelper;
public: public:
SystemDependentData_BitmapHelper( SystemDependentData_BitmapHelper(std::shared_ptr<BitmapHelper> xBitmapHelper);
basegfx::SystemDependentDataManager& rSystemDependentDataManager,
std::shared_ptr<BitmapHelper> xBitmapHelper);
const std::shared_ptr<BitmapHelper>& getBitmapHelper() const { return maBitmapHelper; }; const std::shared_ptr<BitmapHelper>& getBitmapHelper() const { return maBitmapHelper; };
virtual sal_Int64 estimateUsageInBytes() const override; virtual sal_Int64 estimateUsageInBytes() const override;
@@ -66,8 +64,7 @@ private:
std::shared_ptr<MaskHelper> maMaskHelper; std::shared_ptr<MaskHelper> maMaskHelper;
public: public:
SystemDependentData_MaskHelper(basegfx::SystemDependentDataManager& rSystemDependentDataManager, SystemDependentData_MaskHelper(std::shared_ptr<MaskHelper> xMaskHelper);
std::shared_ptr<MaskHelper> xMaskHelper);
const std::shared_ptr<MaskHelper>& getMaskHelper() const { return maMaskHelper; }; const std::shared_ptr<MaskHelper>& getMaskHelper() const { return maMaskHelper; };
virtual sal_Int64 estimateUsageInBytes() const override; virtual sal_Int64 estimateUsageInBytes() const override;

View File

@@ -96,8 +96,7 @@ private:
std::vector<double> maStroke; std::vector<double> maStroke;
public: public:
SystemDependentData_CairoPath(basegfx::SystemDependentDataManager& rSystemDependentDataManager, SystemDependentData_CairoPath(size_t nSizeMeasure, cairo_t* cr, bool bNoJoin, bool bAntiAlias,
size_t nSizeMeasure, cairo_t* cr, bool bNoJoin, bool bAntiAlias,
const std::vector<double>* pStroke); // MM01 const std::vector<double>* pStroke); // MM01
virtual ~SystemDependentData_CairoPath() override; virtual ~SystemDependentData_CairoPath() override;

View File

@@ -61,7 +61,6 @@ public:
virtual bool Scale( const double& rScaleX, const double& rScaleY, BmpScaleFlag nScaleFlag ) override; virtual bool Scale( const double& rScaleX, const double& rScaleY, BmpScaleFlag nScaleFlag ) override;
virtual bool Replace( const Color& rSearchColor, const Color& rReplaceColor, sal_uInt8 nTol ) override; virtual bool Replace( const Color& rSearchColor, const Color& rReplaceColor, sal_uInt8 nTol ) override;
protected:
virtual const basegfx::SystemDependentDataHolder* accessSystemDependentDataHolder() const override; virtual const basegfx::SystemDependentDataHolder* accessSystemDependentDataHolder() const override;
}; };

View File

@@ -129,13 +129,13 @@ protected:
int width, int height, int bitCount, int bytesPerRow, const BitmapPalette& palette, int width, int height, int bitCount, int bytesPerRow, const BitmapPalette& palette,
BitConvert type ); BitConvert type );
public:
// access to SystemDependentDataHolder, to support overload in derived class(es) // access to SystemDependentDataHolder, to support overload in derived class(es)
virtual const basegfx::SystemDependentDataHolder* accessSystemDependentDataHolder() const; virtual const basegfx::SystemDependentDataHolder* accessSystemDependentDataHolder() const;
public:
// exclusive management op's for SystemDependentData at SalBitmap // exclusive management op's for SystemDependentData at SalBitmap
template<class T> template<class T>
std::shared_ptr<T> getSystemDependentDataT() const std::shared_ptr<T> getSystemDependentData() const
{ {
const basegfx::SystemDependentDataHolder* pDataHolder(accessSystemDependentDataHolder()); const basegfx::SystemDependentDataHolder* pDataHolder(accessSystemDependentDataHolder());
if(pDataHolder) if(pDataHolder)
@@ -144,13 +144,13 @@ public:
} }
template<class T, class... Args> template<class T, class... Args>
std::shared_ptr<T> addOrReplaceSystemDependentDataT(basegfx::SystemDependentDataManager& manager, Args&&... args) const std::shared_ptr<T> addOrReplaceSystemDependentData(Args&&... args) const
{ {
const basegfx::SystemDependentDataHolder* pDataHolder(accessSystemDependentDataHolder()); const basegfx::SystemDependentDataHolder* pDataHolder(accessSystemDependentDataHolder());
if(!pDataHolder) if(!pDataHolder)
return std::shared_ptr<T>(); return std::shared_ptr<T>();
std::shared_ptr<T> r = std::make_shared<T>(manager, std::forward<Args>(args)...); std::shared_ptr<T> r = std::make_shared<T>(std::forward<Args>(args)...);
// tdf#129845 only add to buffer if a relevant buffer time is estimated // tdf#129845 only add to buffer if a relevant buffer time is estimated
if(r->calculateCombinedHoldCyclesInSeconds() > 0) if(r->calculateCombinedHoldCyclesInSeconds() > 0)

View File

@@ -85,7 +85,6 @@ public:
virtual bool Scale( const double& rScaleX, const double& rScaleY, BmpScaleFlag nScaleFlag ) override; virtual bool Scale( const double& rScaleX, const double& rScaleY, BmpScaleFlag nScaleFlag ) override;
virtual bool Replace( const Color& rSearchColor, const Color& rReplaceColor, sal_uInt8 nTol ) override; virtual bool Replace( const Color& rSearchColor, const Color& rReplaceColor, sal_uInt8 nTol ) override;
protected:
virtual const basegfx::SystemDependentDataHolder* accessSystemDependentDataHolder() const override; virtual const basegfx::SystemDependentDataHolder* accessSystemDependentDataHolder() const override;
}; };

View File

@@ -1168,6 +1168,11 @@ OutputDevice* Application::GetDefaultDevice()
return ImplGetDefaultWindow()->GetOutDev(); return ImplGetDefaultWindow()->GetOutDev();
} }
basegfx::SystemDependentDataManager& Application::GetSystemDependentDataManager()
{
return ImplGetSystemDependentDataManager();
}
vcl::Window* Application::GetFirstTopLevelWindow() vcl::Window* Application::GetFirstTopLevelWindow()
{ {
ImplSVData* pSVData = ImplGetSVData(); ImplSVData* pSVData = ImplGetSVData();

View File

@@ -1717,4 +1717,11 @@ bool Bitmap::Adjust( short nLuminancePercent, short nContrastPercent,
return bRet; return bRet;
} }
const basegfx::SystemDependentDataHolder* Bitmap::accessSystemDependentDataHolder() const
{
if(!mxSalBmp)
return nullptr;
return mxSalBmp->accessSystemDependentDataHolder();
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

View File

@@ -1601,7 +1601,6 @@ private:
public: public:
SystemDependentData_Triangulation( SystemDependentData_Triangulation(
basegfx::SystemDependentDataManager& rSystemDependentDataManager,
basegfx::triangulator::B2DTriangleVector&& rTriangles, basegfx::triangulator::B2DTriangleVector&& rTriangles,
double fLineWidth, double fLineWidth,
basegfx::B2DLineJoin eJoin, basegfx::B2DLineJoin eJoin,
@@ -1623,14 +1622,13 @@ public:
} }
SystemDependentData_Triangulation::SystemDependentData_Triangulation( SystemDependentData_Triangulation::SystemDependentData_Triangulation(
basegfx::SystemDependentDataManager& rSystemDependentDataManager,
basegfx::triangulator::B2DTriangleVector&& rTriangles, basegfx::triangulator::B2DTriangleVector&& rTriangles,
double fLineWidth, double fLineWidth,
basegfx::B2DLineJoin eJoin, basegfx::B2DLineJoin eJoin,
css::drawing::LineCap eCap, css::drawing::LineCap eCap,
double fMiterMinimumAngle, double fMiterMinimumAngle,
const std::vector< double >* pStroke) const std::vector< double >* pStroke)
: basegfx::SystemDependentData(rSystemDependentDataManager), : basegfx::SystemDependentData(Application::GetSystemDependentDataManager()),
maTriangles(std::move(rTriangles)), maTriangles(std::move(rTriangles)),
mfLineWidth(fLineWidth), mfLineWidth(fLineWidth),
meJoin(eJoin), meJoin(eJoin),
@@ -1823,7 +1821,6 @@ bool X11SalGraphicsImpl::drawPolyLine(
// Add all values the triangulation is based off, too, to check for // Add all values the triangulation is based off, too, to check for
// validity (see above) // validity (see above)
pSystemDependentData_Triangulation = rPolygon.addOrReplaceSystemDependentData<SystemDependentData_Triangulation>( pSystemDependentData_Triangulation = rPolygon.addOrReplaceSystemDependentData<SystemDependentData_Triangulation>(
ImplGetSystemDependentDataManager(),
std::move(aTriangles), std::move(aTriangles),
fLineWidth, fLineWidth,
eLineJoin, eLineJoin,

View File

@@ -1993,7 +1993,6 @@ private:
public: public:
SystemDependentData_GraphicsPath( SystemDependentData_GraphicsPath(
basegfx::SystemDependentDataManager& rSystemDependentDataManager,
std::shared_ptr<Gdiplus::GraphicsPath>& rpGraphicsPath, std::shared_ptr<Gdiplus::GraphicsPath>& rpGraphicsPath,
bool bNoLineJoin, bool bNoLineJoin,
const std::vector< double >* pStroke); // MM01 const std::vector< double >* pStroke); // MM01
@@ -2009,11 +2008,10 @@ public:
} }
SystemDependentData_GraphicsPath::SystemDependentData_GraphicsPath( SystemDependentData_GraphicsPath::SystemDependentData_GraphicsPath(
basegfx::SystemDependentDataManager& rSystemDependentDataManager,
std::shared_ptr<Gdiplus::GraphicsPath>& rpGraphicsPath, std::shared_ptr<Gdiplus::GraphicsPath>& rpGraphicsPath,
bool bNoLineJoin, bool bNoLineJoin,
const std::vector< double >* pStroke) const std::vector< double >* pStroke)
: basegfx::SystemDependentData(rSystemDependentDataManager), : basegfx::SystemDependentData(Application::GetSystemDependentDataManager()),
mpGraphicsPath(rpGraphicsPath), mpGraphicsPath(rpGraphicsPath),
mbNoLineJoin(bNoLineJoin), mbNoLineJoin(bNoLineJoin),
maStroke() maStroke()
@@ -2143,7 +2141,6 @@ bool WinSalGraphicsImpl::drawPolyPolygon(
// add to buffering mechanism // add to buffering mechanism
rPolyPolygon.addOrReplaceSystemDependentData<SystemDependentData_GraphicsPath>( rPolyPolygon.addOrReplaceSystemDependentData<SystemDependentData_GraphicsPath>(
ImplGetSystemDependentDataManager(),
pGraphicsPath, pGraphicsPath,
false, false,
nullptr); nullptr);
@@ -2462,7 +2459,6 @@ bool WinSalGraphicsImpl::drawPolyLine(
if (!bPixelSnapHairline /*tdf#124700*/) if (!bPixelSnapHairline /*tdf#124700*/)
{ {
rPolygon.addOrReplaceSystemDependentData<SystemDependentData_GraphicsPath>( rPolygon.addOrReplaceSystemDependentData<SystemDependentData_GraphicsPath>(
ImplGetSystemDependentDataManager(),
pGraphicsPath, pGraphicsPath,
bNoLineJoin, bNoLineJoin,
pStroke); pStroke);

View File

@@ -89,7 +89,6 @@ private:
public: public:
SystemDependentData_GdiPlusBitmap( SystemDependentData_GdiPlusBitmap(
basegfx::SystemDependentDataManager& rSystemDependentDataManager,
const std::shared_ptr<Gdiplus::Bitmap>& rGdiPlusBitmap, const std::shared_ptr<Gdiplus::Bitmap>& rGdiPlusBitmap,
const WinSalBitmap* pAssociatedAlpha); const WinSalBitmap* pAssociatedAlpha);
@@ -102,10 +101,9 @@ public:
} }
SystemDependentData_GdiPlusBitmap::SystemDependentData_GdiPlusBitmap( SystemDependentData_GdiPlusBitmap::SystemDependentData_GdiPlusBitmap(
basegfx::SystemDependentDataManager& rSystemDependentDataManager,
const std::shared_ptr<Gdiplus::Bitmap>& rGdiPlusBitmap, const std::shared_ptr<Gdiplus::Bitmap>& rGdiPlusBitmap,
const WinSalBitmap* pAssociatedAlpha) const WinSalBitmap* pAssociatedAlpha)
: basegfx::SystemDependentData(rSystemDependentDataManager), : basegfx::SystemDependentData(Application::GetSystemDependentDataManager()),
mpGdiPlusBitmap(rGdiPlusBitmap), mpGdiPlusBitmap(rGdiPlusBitmap),
mpAssociatedAlpha(pAssociatedAlpha) mpAssociatedAlpha(pAssociatedAlpha)
{ {
@@ -170,7 +168,7 @@ std::shared_ptr< Gdiplus::Bitmap > WinSalBitmap::ImplGetGdiPlusBitmap(const WinS
// try to access buffered data // try to access buffered data
std::shared_ptr<SystemDependentData_GdiPlusBitmap> pSystemDependentData_GdiPlusBitmap( std::shared_ptr<SystemDependentData_GdiPlusBitmap> pSystemDependentData_GdiPlusBitmap(
getSystemDependentDataT<SystemDependentData_GdiPlusBitmap>()); getSystemDependentData<SystemDependentData_GdiPlusBitmap>());
if(pSystemDependentData_GdiPlusBitmap) if(pSystemDependentData_GdiPlusBitmap)
{ {
@@ -208,8 +206,7 @@ std::shared_ptr< Gdiplus::Bitmap > WinSalBitmap::ImplGetGdiPlusBitmap(const WinS
} }
// add to buffering mechanism // add to buffering mechanism
addOrReplaceSystemDependentDataT<SystemDependentData_GdiPlusBitmap>( addOrReplaceSystemDependentData<SystemDependentData_GdiPlusBitmap>(
ImplGetSystemDependentDataManager(),
aRetval, aRetval,
pAssociatedAlpha); pAssociatedAlpha);
} }