[ros-diffs] [greatlrd] 33876: BitBlt Make it act bit more like windows, use PatBlt instead for BitBlt for no ROP source for it bit faster Thx irc Goplat found my bug in the macro.

greatlrd at svn.reactos.org greatlrd at svn.reactos.org
Sat Jun 7 02:51:38 CEST 2008


Author: greatlrd
Date: Fri Jun  6 19:51:38 2008
New Revision: 33876

URL: http://svn.reactos.org/svn/reactos?rev=33876&view=rev
Log:
BitBlt
Make it act bit more like windows, use PatBlt instead for BitBlt for no ROP source for it bit faster
Thx irc Goplat found my bug in the macro. 

Modified:
    trunk/reactos/dll/win32/gdi32/include/gdi32p.h
    trunk/reactos/dll/win32/gdi32/objects/bitmap.c

Modified: trunk/reactos/dll/win32/gdi32/include/gdi32p.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/gdi32/include/gdi32p.h?rev=33876&r1=33875&r2=33876&view=diff
==============================================================================
--- trunk/reactos/dll/win32/gdi32/include/gdi32p.h [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/gdi32/include/gdi32p.h [iso-8859-1] Fri Jun  6 19:51:38 2008
@@ -29,6 +29,9 @@
 
 #define METAFILE_MEMORY 1
 #define METAFILE_DISK   2
+
+/* MACRO ********************************************************************/
+#define ROP_USES_SOURCE(Rop)   ((Rop << 2) ^ Rop) & 0xCC0000
 
 /* TYPES *********************************************************************/
 

Modified: trunk/reactos/dll/win32/gdi32/objects/bitmap.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/gdi32/objects/bitmap.c?rev=33876&r1=33875&r2=33876&view=diff
==============================================================================
--- trunk/reactos/dll/win32/gdi32/objects/bitmap.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/gdi32/objects/bitmap.c [iso-8859-1] Fri Jun  6 19:51:38 2008
@@ -124,6 +124,9 @@
    return hBitmap;
 }
 
+
+
+
 /*
  * @implemented
  */
@@ -139,6 +142,12 @@
        int nYSrc,        /* y-coordinate of source upper-left corner */
        DWORD dwRop)      /* raster operation code */
 {
+    /* use patBlt for no source blt  Like windows does */
+    if (!ROP_USES_SOURCE(dwRop))
+    {
+         return PatBlt(hdcDest, nXOriginDest, nYOriginDest, nWidthDest, nHeightDest, dwRop);
+    }
+
     return NtGdiBitBlt(hdcDest,
                        nXOriginDest,
                        nYOriginDest,



More information about the Ros-diffs mailing list