From: Piotr Caban piotr@codeweavers.com
--- dlls/wineps.drv/bitmap.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/dlls/wineps.drv/bitmap.c b/dlls/wineps.drv/bitmap.c index bafc86e9a24..59fbf1c1544 100644 --- a/dlls/wineps.drv/bitmap.c +++ b/dlls/wineps.drv/bitmap.c @@ -197,7 +197,8 @@ DWORD CDECL PSDRV_PutImage( PHYSDEV dev, HRGN clip, BITMAPINFO *info,
if (info->bmiHeader.biPlanes != 1) goto update_format; if (info->bmiHeader.biCompression != BI_RGB) goto update_format; - if (info->bmiHeader.biBitCount == 16 || info->bmiHeader.biBitCount == 32) goto update_format; + if (info->bmiHeader.biBitCount != 1 && info->bmiHeader.biBitCount != 4 && + info->bmiHeader.biBitCount != 8 && info->bmiHeader.biBitCount != 24) goto update_format; if (!bits) return ERROR_SUCCESS; /* just querying the format */
TRACE( "bpp %u %s -> %s\n", info->bmiHeader.biBitCount, wine_dbgstr_rect(&src->visrect), @@ -297,7 +298,9 @@ DWORD CDECL PSDRV_PutImage( PHYSDEV dev, HRGN clip, BITMAPINFO *info,
update_format: info->bmiHeader.biPlanes = 1; - if (info->bmiHeader.biBitCount > 8) info->bmiHeader.biBitCount = 24; + if (info->bmiHeader.biBitCount != 1 && info->bmiHeader.biBitCount != 4 && + info->bmiHeader.biBitCount != 8 && info->bmiHeader.biBitCount != 24) + info->bmiHeader.biBitCount = 24; info->bmiHeader.biCompression = BI_RGB; return ERROR_BAD_FORMAT; }