thx agein blight and alex.
we got alot faster blt for source copy for 
32bpp to 32bpp now.
Modified: trunk/reactos/subsys/win32k/dib/dib32bpp.c

Modified: trunk/reactos/subsys/win32k/dib/dib32bpp.c
--- trunk/reactos/subsys/win32k/dib/dib32bpp.c	2005-06-03 00:10:18 UTC (rev 15742)
+++ trunk/reactos/subsys/win32k/dib/dib32bpp.c	2005-06-03 00:35:31 UTC (rev 15743)
@@ -305,6 +305,8 @@
    BOOL UsesSource;
    BOOL UsesPattern;
    PULONG DestBits;
+   LONG  DesmaxX, DesmaxY; 
+   LONG  SrcmaxX, SrcmaxY;
 
    switch (BltInfo->Rop4)
 	{
@@ -378,7 +380,52 @@
 #endif
 		 return TRUE;
 		 break;
+		case  ROP4_SRCCOPY:     
+			 // return(Source);
+			  switch (BltInfo->SourceSurface->iBitmapFormat)
+			  {			   
+			    case BMF_1BPP:
+				break;
+				case BMF_4BPP:
+				break;
+				case BMF_8BPP:
+				break;
+				case BMF_16BPP:
+				break;
+				case BMF_24BPP:
+				break;
+				case BMF_32BPP:
+					 SrcmaxX = BltInfo->SourceSurface->sizlBitmap.cx - BltInfo->SourcePoint.x;
+					 SrcmaxY = BltInfo->SourceSurface->sizlBitmap.cy - BltInfo->SourcePoint.y;
+ 
+					/* calc the dst BMP size */
+					DesmaxX = BltInfo->DestRect.right - BltInfo->DestRect.left;
+					DesmaxY = BltInfo->DestRect.bottom - BltInfo->DestRect.top;
+ 
+					/* calc max X and Y size to blt */
+					if (DesmaxX > SrcmaxX ) DesmaxX = SrcmaxX;
+					if (DesmaxY > SrcmaxY ) DesmaxY = SrcmaxY;
+ 
+					/* do blt */
+					INT Destdelta = BltInfo->DestSurface->lDelta;
+					INT Sourcedelta = BltInfo->SourceSurface->lDelta;
+					register PBYTE Destaddr = BltInfo->DestSurface->pvScan0 + BltInfo->DestRect.top * Destdelta + BltInfo->DestRect.left;
+					register PBYTE Srcaddr = BltInfo->SourceSurface->pvScan0 + BltInfo->SourcePoint.y * Sourcedelta + BltInfo->SourcePoint.x;
+ 
+					DesmaxX *= 4;
+					while (--DesmaxY)
+					{
+						RtlCopyMemory(Destaddr, Srcaddr, DesmaxX);
+						Destaddr += Destdelta;
+						Srcaddr += Sourcedelta;
+					}
+					break;		 
 
+				default:
+				break;
+			   }
+		 break;
+
 		 default:
 		 break;
          }