Module: wine Branch: master Commit: 673dd73548e1d52afd89041f5e9970760cd0cf07 URL: http://source.winehq.org/git/wine.git/?a=commit;h=673dd73548e1d52afd89041f5e...
Author: Huw Davies huw@codeweavers.com Date: Tue Apr 12 12:46:24 2011 +0100
gdi32: Don't use the bitfields for the BI_RGB case.
---
dlls/gdi32/dib.c | 15 +++++++++++++-- 1 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/dlls/gdi32/dib.c b/dlls/gdi32/dib.c index 96f6920..b63eb13 100644 --- a/dlls/gdi32/dib.c +++ b/dlls/gdi32/dib.c @@ -774,7 +774,17 @@ INT WINAPI GetDIBits( case 16: if (info->bmiHeader.biCompression == BI_BITFIELDS) { - if (bmp->dib) memcpy( info->bmiColors, bmp->dib->dsBitfields, 3 * sizeof(DWORD) ); + if (bmp->dib) + { + if (bmp->dib->dsBmih.biCompression == BI_BITFIELDS) + memcpy( info->bmiColors, bmp->dib->dsBitfields, 3 * sizeof(DWORD) ); + else + { + ((PDWORD)info->bmiColors)[0] = 0x7c00; + ((PDWORD)info->bmiColors)[1] = 0x03e0; + ((PDWORD)info->bmiColors)[2] = 0x001f; + } + } else { ((PDWORD)info->bmiColors)[0] = 0xf800; @@ -788,7 +798,8 @@ INT WINAPI GetDIBits( case 32: if (info->bmiHeader.biCompression == BI_BITFIELDS) { - if (bmp->dib) memcpy( info->bmiColors, bmp->dib->dsBitfields, 3 * sizeof(DWORD) ); + if (bmp->dib && bmp->dib->dsBmih.biCompression == BI_BITFIELDS) + memcpy( info->bmiColors, bmp->dib->dsBitfields, 3 * sizeof(DWORD) ); else { ((PDWORD)info->bmiColors)[0] = 0xff0000;