[PATCH 4/9] gdi32: Use NtGdiOpenDCW for CreateDCW.

Jacek Caban jacek at codeweavers.com
Tue Sep 28 06:16:50 CDT 2021


Signed-off-by: Jacek Caban <jacek at codeweavers.com>
---

Passing function getter to NtGdiOpenDCW is hackish, but it's meant to 
unblock the transition for now. This is used for printer drivers. Since 
DC driver interface is meant to be Unix-side-only, we will need to 
change it. While making wineps.drv a Unix lib would be possible, I think 
it would be better to mimic Windows behaviour closer. For that, we'd 
need to expose printer processor functionality from wineps.drv that 
would convert EMFs to PostScript. The existing wineps code seems to be a 
good base for that. We'd need to factor out driver-specific bits and 
call conversion functions from EMF replay. With that in place:

- gdi32 would setup EMF recording for printer DCs (on PE side)
- it would submit EMF records to winspool when appropriate
- winspool would detect EMFs and use print processor to convert it to PS
- winspool would submit PS document to the printer

With that in place, hopefully only small bits of wineps.drv will still 
need to live in DC driver part. I hope that we will be able to move 
those bits directly to win32u, so no actual library loading would need 
to be performed by gdi32 nor ntgdi.


    dlls/gdi32/dc.c            |  62 +++++------
    dlls/gdi32/driver.c        | 188 +++-----------------------------
    dlls/gdi32/emfdrv.c        |   2 +-
    dlls/gdi32/gdidc.c         | 215 +++++++++++++++++++++++++++++++++++++
    dlls/gdi32/ntgdi_private.h |   3 +-
    5 files changed, 260 insertions(+), 210 deletions(-)




-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0004-gdi32-Use-NtGdiOpenDCW-for-CreateDCW.txt
Type: text/x-patch
Size: 19912 bytes
Desc: not available
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20210928/e20ce6c6/attachment-0001.bin>


More information about the wine-devel mailing list