From 3c76b14474c6d5a3b7b4af55bd472f425856643d Mon Sep 17 00:00:00 2001
From: Alexandre Julliard <julliard@winehq.org>
Date: Wed, 3 Oct 2001 18:45:41 +0000
Subject: [PATCH] Skip BitBlt DIB optimization if source and dest DCs have
 different depths.

---
 graphics/x11drv/bitblt.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/graphics/x11drv/bitblt.c b/graphics/x11drv/bitblt.c
index e99081c4151..f89d6f90f53 100644
--- a/graphics/x11drv/bitblt.c
+++ b/graphics/x11drv/bitblt.c
@@ -1504,7 +1504,9 @@ BOOL X11DRV_BitBlt( DC *dcDst, INT xDst, INT yDst,
     sDst = X11DRV_LockDIBSection( dcDst, DIB_Status_None, FALSE );
     sSrc = X11DRV_LockDIBSection( dcSrc, DIB_Status_None, FALSE );
 
-    if ((sSrc == DIB_Status_AppMod) && (rop == SRCCOPY)) {
+    if ((sSrc == DIB_Status_AppMod) && (rop == SRCCOPY) &&
+        (dcSrc->bitsPerPixel == dcDst->bitsPerPixel))
+    {
       /* do everything ourselves; map coordinates */
       xSrc = dcSrc->DCOrgX + XLPTODP( dcSrc, xSrc );
       ySrc = dcSrc->DCOrgY + YLPTODP( dcSrc, ySrc );
-- 
GitLab