forget remove a calc value in the for loop it can do outside the loop.
Modified: trunk/reactos/subsys/win32k/dib/dib16bpp.c

Modified: trunk/reactos/subsys/win32k/dib/dib16bpp.c
--- trunk/reactos/subsys/win32k/dib/dib16bpp.c	2006-01-03 17:05:39 UTC (rev 20547)
+++ trunk/reactos/subsys/win32k/dib/dib16bpp.c	2006-01-03 17:21:11 UTC (rev 20548)
@@ -649,16 +649,17 @@
                              CLIPOBJ *ClipRegion, XLATEOBJ *ColorTranslation,
                              ULONG Mode)
 {
-   int SrcSizeY;
-   int SrcSizeX;
-   int DesSizeY;
-   int DesSizeX;      
-   int sx;
-   int sy;
-   int DesX;
-   int DesY;
-   int color;
+   LONG SrcSizeY;
+   LONG SrcSizeX;
+   LONG DesSizeY;
+   LONG DesSizeX;      
+   LONG sx;
+   LONG sy;
+   LONG DesX;
+   LONG DesY;
+   LONG color;
    PULONG DestBits;
+   LONG DifflDelta;
 
   
   DPRINT("DIB_16BPP_StretchBlt: Source BPP: %u, srcRect: (%d,%d)-(%d,%d), dstRect: (%d,%d)-(%d,%d)\n",
@@ -680,7 +681,9 @@
       
       DestBits = (PULONG)((PBYTE)DestSurf->pvScan0 + (DestRect->left << 1) +
                    DestRect->top * DestSurf->lDelta);
-                      
+      
+	  DifflDelta = DestSurf->lDelta -  (DesSizeX << 1); 
+	                  
        for (DesY=0; DesY<DesSizeY; DesY++)
        {	 
             sy = ((DesY  * SrcSizeY) / DesSizeY) + SourceRect->top;
@@ -701,7 +704,7 @@
 				     DestBits = (PULONG)((ULONG_PTR)DestBits + 2);
                   }
             }
-            DestBits = (PULONG)((ULONG_PTR)DestBits - (DesSizeX << 1) + DestSurf->lDelta);
+            DestBits = (PULONG)((ULONG_PTR)DestBits + DifflDelta);
        }
        break;
 
@@ -711,7 +714,9 @@
 
       DestBits = (PULONG)((PBYTE)DestSurf->pvScan0 + (DestRect->left << 1) +
                    DestRect->top * DestSurf->lDelta);
-                      
+      
+	  DifflDelta = DestSurf->lDelta -  (DesSizeX << 1); 
+	                  
        for (DesY=0; DesY<DesSizeY; DesY++)
        {	 
             sy = ((DesY  * SrcSizeY) / DesSizeY) + SourceRect->top;
@@ -725,7 +730,7 @@
 				  *DestBits = XLATEOBJ_iXlate(ColorTranslation, color);				  				  
 				   DestBits = (PULONG)((ULONG_PTR)DestBits + 2);
             }
-            DestBits = (PULONG)((ULONG_PTR)DestBits - (DesSizeX << 1) + DestSurf->lDelta);
+            DestBits = (PULONG)((ULONG_PTR)DestBits + DifflDelta);
        }
        break;
        
@@ -735,6 +740,8 @@
             
       DestBits = (PULONG)((PBYTE)DestSurf->pvScan0 + (DestRect->left << 1) +
                    DestRect->top * DestSurf->lDelta);
+                   
+      DifflDelta = DestSurf->lDelta -  (DesSizeX << 1); 
                       
        for (DesY=0; DesY<DesSizeY; DesY++)
        {	 
@@ -749,7 +756,7 @@
 				  *DestBits = XLATEOBJ_iXlate(ColorTranslation, color);				  				  
 				   DestBits = (PULONG)((ULONG_PTR)DestBits + 2);
             }
-            DestBits = (PULONG)((ULONG_PTR)DestBits - (DesSizeX << 1) + DestSurf->lDelta);
+            DestBits = (PULONG)((ULONG_PTR)DestBits + DifflDelta);
        }
        break;
        
@@ -760,7 +767,9 @@
                       
       DestBits = (PULONG)((PBYTE)DestSurf->pvScan0 + (DestRect->left << 1) +
                    DestRect->top * DestSurf->lDelta);
-                      
+      
+	  DifflDelta = DestSurf->lDelta -  (DesSizeX << 1); 
+	                  
        for (DesY=0; DesY<DesSizeY; DesY++)
        {	 
             sy = ((DesY  * SrcSizeY) / DesSizeY) + SourceRect->top;
@@ -774,8 +783,9 @@
 				  *DestBits = XLATEOBJ_iXlate(ColorTranslation, color);				  				  
 				   DestBits = (PULONG)((ULONG_PTR)DestBits + 2);
             }
-            DestBits = (PULONG)((ULONG_PTR)DestBits - (DesSizeX << 1) + DestSurf->lDelta);
-       }       break;
+            DestBits = (PULONG)((ULONG_PTR)DestBits + DifflDelta);
+       }       
+	   break;
 
       case BMF_32BPP:		
       /* FIXME :  MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
@@ -783,7 +793,9 @@
                       
       DestBits = (PULONG)((PBYTE)DestSurf->pvScan0 + (DestRect->left << 1) +
                    DestRect->top * DestSurf->lDelta);
-                      
+      
+	  DifflDelta = DestSurf->lDelta -  (DesSizeX << 1); 
+	                  
        for (DesY=0; DesY<DesSizeY; DesY++)
        {	 
             sy = ((DesY  * SrcSizeY) / DesSizeY) + SourceRect->top;
@@ -797,7 +809,7 @@
 				  *DestBits = XLATEOBJ_iXlate(ColorTranslation, color);				  				  
 				   DestBits = (PULONG)((ULONG_PTR)DestBits + 2);
             }
-            DestBits = (PULONG)((ULONG_PTR)DestBits - (DesSizeX << 1) + DestSurf->lDelta);
+            DestBits = (PULONG)((ULONG_PTR)DestBits + DifflDelta);
        }
        break;