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

Reply via email to