vcl/inc/win/salvd.h | 2 +- vcl/win/gdi/salvd.cxx | 43 ++++++++++++++++++------------------------- 2 files changed, 19 insertions(+), 26 deletions(-)
New commits: commit 01c6aa4bfa4d3a54f2126b4752a817e69f40685a Author: Noel Grandin <noelgran...@gmail.com> AuthorDate: Wed Feb 12 11:15:59 2025 +0200 Commit: Noel Grandin <noelgran...@gmail.com> CommitDate: Fri Feb 14 16:37:22 2025 +0100 simplify WinSalVirtualDevice construction Change-Id: I6eafe9ea2fe4d4f2faca9cfe9427009926833fd8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181473 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/vcl/inc/win/salvd.h b/vcl/inc/win/salvd.h index 66833f99f18a..ded57b00a173 100644 --- a/vcl/inc/win/salvd.h +++ b/vcl/inc/win/salvd.h @@ -49,7 +49,7 @@ public: void setGraphics(WinSalGraphics* pVirGraphics) { mpGraphics.reset(pVirGraphics); } WinSalVirtualDevice* getNext() const { return mpNext; } - WinSalVirtualDevice(HDC hDC = nullptr, HBITMAP hBMP = nullptr, sal_uInt16 nBitCount = 0, bool bForeignDC = false, tools::Long nWidth = 0, tools::Long nHeight = 0); + WinSalVirtualDevice(HDC hDC, HBITMAP hBMP, sal_uInt16 nBitCount, bool bForeignDC, tools::Long nWidth, tools::Long nHeight, bool bIsScreen); virtual ~WinSalVirtualDevice() override; virtual SalGraphics* AcquireGraphics() override; diff --git a/vcl/win/gdi/salvd.cxx b/vcl/win/gdi/salvd.cxx index 1903bfd3a533..d4c9421f44f3 100644 --- a/vcl/win/gdi/salvd.cxx +++ b/vcl/win/gdi/salvd.cxx @@ -91,19 +91,10 @@ std::unique_ptr<SalVirtualDevice> WinSalInstance::CreateVirtualDevice( SalGraphi nDX, nDY, nBitCount, &o3tl::temporary<void*>(nullptr)); - WinSalVirtualDevice* pVDev = new WinSalVirtualDevice(hDC, hBmp, nBitCount, - /*bForeignDC*/false, nDX, nDY); + auto pVDev = std::make_unique<WinSalVirtualDevice>(hDC, hBmp, nBitCount, + /*bForeignDC*/false, nDX, nDY, rGraphics.isScreen()); - WinSalGraphics* pVirGraphics = new WinSalGraphics(WinSalGraphics::VIRTUAL_DEVICE, - rGraphics.isScreen(), nullptr, pVDev); - - // by default no! mirroring for VirtualDevices, can be enabled with EnableRTL() - pVirGraphics->SetLayout( SalLayoutFlags::NONE ); - pVirGraphics->setHDC(hDC); - - pVDev->setGraphics(pVirGraphics); - - return std::unique_ptr<SalVirtualDevice>(pVDev); + return pVDev; } std::unique_ptr<SalVirtualDevice> WinSalInstance::CreateVirtualDevice( SalGraphics& rSGraphics, @@ -131,22 +122,13 @@ std::unique_ptr<SalVirtualDevice> WinSalInstance::CreateVirtualDevice( SalGraphi const sal_uInt16 nBitCount = 0; const bool bForeignDC = rData.hDC != nullptr; - WinSalVirtualDevice* pVDev = new WinSalVirtualDevice(hDC, /*hBmp*/nullptr, nBitCount, - bForeignDC, nDX, nDY); - - WinSalGraphics* pVirGraphics = new WinSalGraphics(WinSalGraphics::VIRTUAL_DEVICE, - rGraphics.isScreen(), nullptr, pVDev); + auto pVDev = std::make_unique<WinSalVirtualDevice>(hDC, /*hBmp*/nullptr, nBitCount, + bForeignDC, nDX, nDY, rGraphics.isScreen()); - // by default no! mirroring for VirtualDevices, can be enabled with EnableRTL() - pVirGraphics->SetLayout( SalLayoutFlags::NONE ); - pVirGraphics->setHDC(hDC); - - pVDev->setGraphics(pVirGraphics); - - return std::unique_ptr<SalVirtualDevice>(pVDev); + return pVDev; } -WinSalVirtualDevice::WinSalVirtualDevice(HDC hDC, HBITMAP hBMP, sal_uInt16 nBitCount, bool bForeignDC, tools::Long nWidth, tools::Long nHeight) +WinSalVirtualDevice::WinSalVirtualDevice(HDC hDC, HBITMAP hBMP, sal_uInt16 nBitCount, bool bForeignDC, tools::Long nWidth, tools::Long nHeight, bool bIsScreen) : mhLocalDC(hDC), // HDC or 0 for Cache Device mhBmp(hBMP), // Memory Bitmap mnBitCount(nBitCount), // BitCount (0 or 1) @@ -165,8 +147,19 @@ WinSalVirtualDevice::WinSalVirtualDevice(HDC hDC, HBITMAP hBMP, sal_uInt16 nBitC SalData* pSalData = GetSalData(); mpNext = pSalData->mpFirstVD; pSalData->mpFirstVD = this; + + WinSalGraphics* pVirGraphics = new WinSalGraphics(WinSalGraphics::VIRTUAL_DEVICE, + bIsScreen, nullptr, this); + + // by default no! mirroring for VirtualDevices, can be enabled with EnableRTL() + pVirGraphics->SetLayout( SalLayoutFlags::NONE ); + pVirGraphics->setHDC(hDC); + + setGraphics(pVirGraphics); } + + WinSalVirtualDevice::~WinSalVirtualDevice() { // remove VirDev from list of virtual devices