Huw Davies : gdi32: Don't use the bitfields for the BI_RGB case.

Alexandre Julliard julliard at winehq.org
Tue Apr 12 11:07:38 CDT 2011


Module: wine
Branch: master
Commit: 673dd73548e1d52afd89041f5e9970760cd0cf07
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=673dd73548e1d52afd89041f5e9970760cd0cf07

Author: Huw Davies <huw at 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;




More information about the wine-cvs mailing list