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

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@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Huw Davies 2021-10-19 08:45:33 +01:00 committed by Alexandre Julliard
parent 74a42c5401
commit 0d8428fbc5

View file

@ -2486,6 +2486,9 @@ GpStatus WINGDIPAPI GdipPlayMetafileRecord(GDIPCONST GpMetafile *metafile,
record->nSize = dataSize + 8; record->nSize = dataSize + 8;
memcpy(record->dParm, data, dataSize); 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, if(PlayEnhMetaFileRecord(metafile->playback_dc, metafile->handle_table,
record, metafile->handle_count) == 0) record, metafile->handle_count) == 0)
ERR("PlayEnhMetaFileRecord failed\n"); ERR("PlayEnhMetaFileRecord failed\n");