Signed-off-by: Jacek Caban jacek@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(-)
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=98967
Your paranoid android.
=== debiant2 (build log) ===
error: patch failed: dlls/gdi32/font.c:4137 error: patch failed: dlls/gdi32/dc.c:628 error: patch failed: dlls/gdi32/driver.c:289 Task: Patch failed to apply
=== debiant2 (build log) ===
error: patch failed: dlls/gdi32/font.c:4137 error: patch failed: dlls/gdi32/dc.c:628 error: patch failed: dlls/gdi32/driver.c:289 Task: Patch failed to apply