[PATCH] DrawDibDraw flag handling

Peter Riocreux par+wine_devel at silistix.com
Thu Oct 14 10:27:39 CDT 2004


Andreas Mohr <andi at rhlx01.fht-esslingen.de> writes:

> This is rather non-obvious if handling, I'm surprised that the compiler
> doesn't warn about it, or does it?

It did, but I was making from the top level and it got lost amongtsh
the other messages.

> Could you add proper braces there?

Fixed up patch below.

Does the patch look sane otherwise? The thing that caused the warnings
still works as before, but doesn't emit those warning now, but I offer
no other claim to correctness.


Peter


Index: dlls/msvideo/drawdib.c
===================================================================
RCS file: /home/wine/wine/dlls/msvideo/drawdib.c,v
retrieving revision 1.21
diff -u -r1.21 drawdib.c
--- dlls/msvideo/drawdib.c      3 Jun 2004 23:19:51 -0000       1.21
+++ dlls/msvideo/drawdib.c      14 Oct 2004 15:23:17 -0000
@@ -311,7 +311,7 @@
     whdd = MSVIDEO_GetHddPtr(hdd);
     if (!whdd) return FALSE;
  
-    if (wFlags & ~(DDF_SAME_HDC | DDF_SAME_DRAW | DDF_NOTKEYFRAME | DDF_UPDATE | DDF_DONTDRAW))
+    if (wFlags & ~(DDF_SAME_HDC | DDF_SAME_DRAW | DDF_NOTKEYFRAME | DDF_UPDATE | DDF_DONTDRAW | DDF_BACKGROUNDPAL))
         FIXME("wFlags == 0x%08lx not handled\n", (DWORD)wFlags);
  
     if (!lpBits)
@@ -362,7 +362,12 @@
         }
     }
     if (!(wFlags & DDF_DONTDRAW) && whdd->hpal)
-        SelectPalette(hdc, whdd->hpal, FALSE);
+    {
+        if ((wFlags & DDF_BACKGROUNDPAL) && ! (wFlags & DDF_SAME_HDC))
+         SelectPalette(hdc, whdd->hpal, TRUE);
+        else
+         SelectPalette(hdc, whdd->hpal, FALSE);
+    }
  
     if (!(StretchBlt(whdd->hdc, xDst, yDst, dxDst, dyDst, whdd->hMemDC, xSrc, ySrc, dxSrc, dySrc, SRCCOPY)))
         ret = FALSE;



More information about the wine-devel mailing list