ddraw: fix transparent Blits on 8bit surfaces

Peter Beutner p.beutner at gmx.net
Sat Feb 25 06:34:52 CST 2006


There are no red/green/blue bitmasks with color depth==8bpp. In that case always
match against the whole byte.

---

 dlls/ddraw/surface_dib.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

6cb08e7cef84facd5a2654a1fb4e0171f60a2d29
diff --git a/dlls/ddraw/surface_dib.c b/dlls/ddraw/surface_dib.c
index f7b8073..55bdf20 100644
--- a/dlls/ddraw/surface_dib.c
+++ b/dlls/ddraw/surface_dib.c
@@ -849,7 +849,13 @@ DIB_DirectDrawSurface_Blt(LPDIRECTDRAWSU
 		 keylow  = lpbltfx->ddckDestColorkey.dwColorSpaceLowValue;
 		 keyhigh = lpbltfx->ddckDestColorkey.dwColorSpaceHighValue;
 	      }
-	      keymask = sdesc.u4.ddpfPixelFormat.u2.dwRBitMask | sdesc.u4.ddpfPixelFormat.u3.dwGBitMask | sdesc.u4.ddpfPixelFormat.u4.dwBBitMask;
+
+		if(bpp == 1)
+			keymask = 0xff;
+		else
+			keymask = sdesc.u4.ddpfPixelFormat.u2.dwRBitMask | sdesc.u4.ddpfPixelFormat.u3.dwGBitMask |
+			          sdesc.u4.ddpfPixelFormat.u4.dwBBitMask;
+
 	      dwFlags &= ~(DDBLT_KEYSRC | DDBLT_KEYDEST | DDBLT_KEYSRCOVERRIDE | DDBLT_KEYDESTOVERRIDE);
            }
 
-- 
1.2.0




More information about the wine-patches mailing list