From: Piotr Caban piotr@codeweavers.com
--- dlls/wineps.drv/init.c | 2 +- dlls/wineps.drv/printproc.c | 2 ++ dlls/wineps.drv/psdrv.h | 1 + 3 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/dlls/wineps.drv/init.c b/dlls/wineps.drv/init.c index 779abf1c98b..01cfa07e591 100644 --- a/dlls/wineps.drv/init.c +++ b/dlls/wineps.drv/init.c @@ -92,7 +92,7 @@ static const PSDRV_DEVMODE DefaultDevmode = HINSTANCE PSDRV_hInstance = 0; HANDLE PSDRV_Heap = 0;
-static HFONT PSDRV_DefaultFont = 0; +HFONT PSDRV_DefaultFont = 0; static const LOGFONTA DefaultLogFont = { 100, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, ANSI_CHARSET, 0, 0, DEFAULT_QUALITY, FIXED_PITCH | FF_MODERN, "" diff --git a/dlls/wineps.drv/printproc.c b/dlls/wineps.drv/printproc.c index 0169873ceaf..af76b76a2ba 100644 --- a/dlls/wineps.drv/printproc.c +++ b/dlls/wineps.drv/printproc.c @@ -1134,6 +1134,8 @@ static HGDIOBJ get_object_handle(struct pp_data *data, HANDLETABLE *handletable, if (i & 0x80000000) { *pattern = NULL; + if ((i & 0x7fffffff) == DEVICE_DEFAULT_FONT) + return PSDRV_DefaultFont; return GetStockObject(i & 0x7fffffff); } *pattern = data->patterns + i; diff --git a/dlls/wineps.drv/psdrv.h b/dlls/wineps.drv/psdrv.h index 9817128fc70..81cb0206e7e 100644 --- a/dlls/wineps.drv/psdrv.h +++ b/dlls/wineps.drv/psdrv.h @@ -417,6 +417,7 @@ extern const UNICODEGLYPH PSDRV_AGLbyUV[] DECLSPEC_HIDDEN; /* duplicates inc extern HINSTANCE PSDRV_hInstance DECLSPEC_HIDDEN; extern HANDLE PSDRV_Heap DECLSPEC_HIDDEN; extern char *PSDRV_ANSIVector[256] DECLSPEC_HIDDEN; +extern HFONT PSDRV_DefaultFont DECLSPEC_HIDDEN;
extern INPUTSLOT *find_slot( PPD *ppd, const PSDRV_DEVMODE *dm ) DECLSPEC_HIDDEN; extern PAGESIZE *find_pagesize( PPD *ppd, const PSDRV_DEVMODE *dm ) DECLSPEC_HIDDEN;
From: Piotr Caban piotr@codeweavers.com
--- dlls/wineps.drv/graphics.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/dlls/wineps.drv/graphics.c b/dlls/wineps.drv/graphics.c index fc7dcb9fec8..469a1587464 100644 --- a/dlls/wineps.drv/graphics.c +++ b/dlls/wineps.drv/graphics.c @@ -490,7 +490,6 @@ static BOOL paint_path( PHYSDEV dev, BOOL stroke, BOOL fill ) { POINT *points; BYTE *types; - BOOL ret = FALSE; int i, size = GetPath( dev->hdc, NULL, NULL, 0 );
if (size == -1) return FALSE; @@ -536,7 +535,7 @@ static BOOL paint_path( PHYSDEV dev, BOOL stroke, BOOL fill ) done: HeapFree( GetProcessHeap(), 0, points ); HeapFree( GetProcessHeap(), 0, types ); - return ret; + return TRUE; }
/***********************************************************************
From: Piotr Caban piotr@codeweavers.com
--- dlls/wineps.drv/printproc.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/dlls/wineps.drv/printproc.c b/dlls/wineps.drv/printproc.c index af76b76a2ba..69ee1041b69 100644 --- a/dlls/wineps.drv/printproc.c +++ b/dlls/wineps.drv/printproc.c @@ -2605,11 +2605,14 @@ static int WINAPI hmf_proc(HDC hdc, HANDLETABLE *htable, return PlayEnhMetaFileRecord(data->pdev->dev.hdc, htable, rec, handle_count); } case EMR_FILLPATH: - return PSDRV_FillPath(&data->pdev->dev); + PSDRV_FillPath(&data->pdev->dev); + return 1; case EMR_STROKEANDFILLPATH: - return PSDRV_StrokeAndFillPath(&data->pdev->dev); + PSDRV_StrokeAndFillPath(&data->pdev->dev); + return 1; case EMR_STROKEPATH: - return PSDRV_StrokePath(&data->pdev->dev); + PSDRV_StrokePath(&data->pdev->dev); + return 1; case EMR_ABORTPATH: { data->path = FALSE;
From: Piotr Caban piotr@codeweavers.com
--- dlls/wineps.drv/printproc.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-)
diff --git a/dlls/wineps.drv/printproc.c b/dlls/wineps.drv/printproc.c index 69ee1041b69..914fc23f69e 100644 --- a/dlls/wineps.drv/printproc.c +++ b/dlls/wineps.drv/printproc.c @@ -3003,6 +3003,7 @@ static int WINAPI hmf_proc(HDC hdc, HANDLETABLE *htable,
static BOOL print_metafile(struct pp_data *data, HANDLE hdata) { + XFORM xform = { .eM11 = 1, .eM22 = 1 }; record_hdr header; HENHMETAFILE hmf; BYTE *buf; @@ -3038,6 +3039,20 @@ static BOOL print_metafile(struct pp_data *data, HANDLE hdata) if (!hmf) return FALSE;
+ AbortPath(data->pdev->dev.hdc); + SetBkColor(data->pdev->dev.hdc, RGB(255, 255, 255)); + SetBkMode(data->pdev->dev.hdc, OPAQUE); + SetMapMode(data->pdev->dev.hdc, MM_TEXT); + SetPolyFillMode(data->pdev->dev.hdc, ALTERNATE); + SetROP2(data->pdev->dev.hdc, R2_COPYPEN); + SetStretchBltMode(data->pdev->dev.hdc, BLACKONWHITE); + SetTextAlign(data->pdev->dev.hdc, TA_LEFT | TA_TOP); + SetTextColor(data->pdev->dev.hdc, 0); + SetTextJustification(data->pdev->dev.hdc, 0, 0); + SetWorldTransform(data->pdev->dev.hdc, &xform); + PSDRV_SetTextColor(&data->pdev->dev, 0); + PSDRV_SetBkColor(&data->pdev->dev, RGB(255, 255, 255)); + ret = EnumEnhMetaFile(NULL, hmf, hmf_proc, (void *)data, NULL); DeleteEnhMetaFile(hmf); free(data->patterns); @@ -3133,9 +3148,6 @@ HANDLE WINAPI OpenPrintProcessor(WCHAR *port, PRINTPROCESSOROPENDATA *open_data) data->pdev->dev.next = &data->font_dev; data->font_dev.funcs = &font_funcs; data->font_dev.hdc = hdc; - - PSDRV_SetTextColor(&data->pdev->dev, GetTextColor(hdc)); - PSDRV_SetBkColor(&data->pdev->dev, GetBkColor(hdc)); return (HANDLE)data; }
Hi,
It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated.
The tests also ran into some preexisting test failures. If you know how to fix them that would be helpful. See the TestBot job for the details:
The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=132178
Your paranoid android.
=== debian11 (32 bit report) ===
Report validation errors: mshtml:dom has no test summary line (early exit of the main process?) mshtml:dom has unaccounted for todo messages mshtml:dom returned a non-zero exit code despite reporting no failures
This merge request was approved by Huw Davies.