sorry wrong optimze for black and white fixing the start menu
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-02 22:14:53 UTC (rev 15741)
+++ trunk/reactos/subsys/win32k/dib/dib32bpp.c	2005-06-03 00:10:18 UTC (rev 15742)
@@ -310,15 +310,14 @@
 	{
 		 case  ROP4_BLACKNESS:  
 			 //return(0x00000000);	
+
 			 
 #ifdef _M_IX86              			 			 
              if (BltInfo->DestRect.left!=0)
 			 {
-			  SourceX = (BltInfo->DestRect.right - BltInfo->DestRect.left) ;
-			  if (SourceX<=0) return TRUE;
-
+			   SourceX = (BltInfo->DestRect.right - BltInfo->DestRect.left) << 2;
 				for (DestY=BltInfo->DestRect.bottom-1;DestY>=BltInfo->DestRect.top;DestY--)
-				{			 
+				{			 				
 					memset4( (PDWORD) (BltInfo->DestSurface->pvScan0 + DestY * 
 					                   BltInfo->DestSurface->lDelta + 
 					                   BltInfo->DestRect.left),  0x00000000, SourceX);  					 
@@ -326,20 +325,21 @@
 			
 			  }
 			 else
-			 {
-			  
-			   SourceX = ((BltInfo->DestRect.bottom - BltInfo->DestRect.top) * 
-			  	           BltInfo->DestRect.right) ;
+			 {			  			 
+			  SourceX = ((BltInfo->DestRect.bottom - BltInfo->DestRect.top) * 
+			  	           BltInfo->DestRect.right) << 2;
 
-			   if (SourceX<=0) return TRUE;
-			   memset4( (PDWORD) (BltInfo->DestSurface->pvScan0 + BltInfo->DestRect.top * 
-				                  BltInfo->DestSurface->lDelta), 0x00000000, SourceX);  			  
+			   memset4(BltInfo->DestSurface->pvScan0 + BltInfo->DestRect.top * 
+				       BltInfo->DestSurface->lDelta, 0x00000000, SourceX);  
+			   
+
 			 }
-#else			 	
-			 for (DestY=BltInfo->DestRect.bottom-1;DestY>=BltInfo->DestRect.top;DestY--)
-			 {			 				
+#else
+			 	SourceX = (BltInfo->DestRect.right - BltInfo->DestRect.left) << 2;
+				for (DestY=BltInfo->DestRect.bottom-1;DestY>=BltInfo->DestRect.top;DestY--)
+				{			 				
 					DIB_32BPP_HLine(BltInfo->DestSurface, BltInfo->DestRect.bottom, SourceX, DestY, 0x00000000);			  				
-			 }
+				}
 #endif
 
 		 return TRUE;
@@ -347,13 +347,10 @@
 
 		 case ROP4_WHITENESS:   
 			 //return(0xFFFFFFFF);
-			 SourceX = ((BltInfo->DestRect.bottom - BltInfo->DestRect.top) * BltInfo->DestRect.right) ;
-             if (SourceX<=0) return TRUE;
-
-#ifdef _M_IX86
-			 
-             if ( BltInfo->DestRect.left!=0)
-			 {								
+#ifdef _M_IX86           
+             if (BltInfo->DestRect.left!=0)
+			 {
+			   SourceX = (BltInfo->DestRect.right - BltInfo->DestRect.left) << 2;
 				for (DestY=BltInfo->DestRect.bottom-1;DestY>=BltInfo->DestRect.top;DestY--)
 				{			 				
 					memset4( (PDWORD) (BltInfo->DestSurface->pvScan0 + DestY * 
@@ -361,19 +358,24 @@
 					                   BltInfo->DestRect.left),  0xFFFFFFFF, SourceX);  					 
 				}
 			
-			 }
+			  }
 			 else
-			 {			  			   
-			   memset4( (PDWORD) (BltInfo->DestSurface->pvScan0 + BltInfo->DestRect.top * 
-				       BltInfo->DestSurface->lDelta), 0xFFFFFFFF, SourceX);  			  
+			 {			  			 
+			  SourceX = ((BltInfo->DestRect.bottom - BltInfo->DestRect.top) * 
+			  	           BltInfo->DestRect.right) << 2;
+
+			   memset4(BltInfo->DestSurface->pvScan0 + BltInfo->DestRect.top * 
+				       BltInfo->DestSurface->lDelta, 0xFFFFFFFF, SourceX);  
+			   
+
 			 }
 #else
-			 for (DestY=BltInfo->DestRect.bottom-1;DestY>=BltInfo->DestRect.top;DestY--)
-			 {			 				
+			 	SourceX = (BltInfo->DestRect.right - BltInfo->DestRect.left) << 2;
+				for (DestY=BltInfo->DestRect.bottom-1;DestY>=BltInfo->DestRect.top;DestY--)
+				{			 				
 					DIB_32BPP_HLine(BltInfo->DestSurface, BltInfo->DestRect.bottom, SourceX, DestY, 0xFFFFFFFF);			  				
-			 }
+				}
 #endif
-
 		 return TRUE;
 		 break;