[PATCH] gdiplus: Switch to STRETCH_HALFTONE mode before playing a blit record.

Huw Davies huw at codeweavers.com
Tue Oct 19 02:45:33 CDT 2021


This is done even if the emf contains a previous EMR_SETSTRETCHBLTMODE
record.

Thanks to Sebastián Aedo for some of the testing.

Signed-off-by: Huw Davies <huw at codeweavers.com>
---
 dlls/gdiplus/metafile.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/dlls/gdiplus/metafile.c b/dlls/gdiplus/metafile.c
index d79c939218c..1b4bba18048 100644
--- a/dlls/gdiplus/metafile.c
+++ b/dlls/gdiplus/metafile.c
@@ -2486,6 +2486,9 @@ GpStatus WINGDIPAPI GdipPlayMetafileRecord(GDIPCONST GpMetafile *metafile,
                 record->nSize = dataSize + 8;
                 memcpy(record->dParm, data, dataSize);
 
+                if (record->iType == EMR_BITBLT || record->iType == EMR_STRETCHBLT)
+                    SetStretchBltMode(metafile->playback_dc, STRETCH_HALFTONE);
+
                 if(PlayEnhMetaFileRecord(metafile->playback_dc, metafile->handle_table,
                         record, metafile->handle_count) == 0)
                     ERR("PlayEnhMetaFileRecord failed\n");
-- 
2.23.0




More information about the wine-devel mailing list