Module: wine Branch: master Commit: 537c9655e0fc3c5a12ff3475da6e0368b5d52893 URL: https://gitlab.winehq.org/wine/wine/-/commit/537c9655e0fc3c5a12ff3475da6e036...
Author: Piotr Caban piotr@codeweavers.com Date: Tue Apr 25 11:03:25 2023 +0200
wineps: Reset memory DC state on every page.
---
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; }