getdevicedata
Make the mouse less choopy. 
But it still choopy. It need implement real buffer.
instead it being fild when it is call.

Fix the buffer seq are in right order.
Modified: trunk/reactos/lib/dinput/mouse.c

Modified: trunk/reactos/lib/dinput/mouse.c
--- trunk/reactos/lib/dinput/mouse.c	2005-03-13 10:33:15 UTC (rev 14003)
+++ trunk/reactos/lib/dinput/mouse.c	2005-03-13 10:45:23 UTC (rev 14004)
@@ -895,9 +895,9 @@
 	// this is only need if some apps calling on getdevice data direcly
 	// in windows GetdeviceData does always update first the data
 	// then return it.
-	SysMouseAImpl_Acquire(iface);
-
-
+	//SysMouseAImpl_Acquire(iface); < -- remove it geting UT2004 working
+    // less choopy but it need when user hook are implement in ros.
+    
     if (This->acquired == 0) {
 	WARN(" application tries to get data from an unacquired device !\n");
 	return DIERR_NOTACQUIRED;
@@ -923,59 +923,82 @@
   for (count=0;count<*entries;count++) {
 	  
 	 if (save_point.x != point.x) {
-         dod[count].dwOfs =   DIMOFS_X;         
+         dod[count_ent].dwOfs =   DIMOFS_X;         
 		 calc = point.x - save_point.x;	
-		 if (calc >2) dod[count].dwData = 2;
-		 else if (calc < -2) dod[count].dwData = -2;
-		 else dod[count].dwData =  calc;	
+		 if (calc >2) dod[count_ent].dwData = 2;
+		 else if (calc < -2) dod[count_ent].dwData = -2;
+		 else dod[count_ent].dwData =  calc;	
          		 
-         dod[count].dwTimeStamp =  time +1; 
-         dod[count].dwSequence = last_event++;  
+         dod[count_ent].dwTimeStamp =  time +1; 
+         dod[count_ent].dwSequence = last_event++;  
 		 count_ent++;
          save_point.x = point.x;
          }
 
-     if (save_point.y != point.y) {
-        dod[count].dwOfs =   DIMOFS_Y;
+     else if (save_point.y != point.y) {
+        dod[count_ent].dwOfs =   DIMOFS_Y;
         calc =    point.y - save_point.y;
-		if (calc >2) dod[count].dwData = 2;
-		 else if (calc < -2) dod[count].dwData = -2;
-		 else dod[count].dwData =  calc;	
+		if (calc >2) dod[count_ent].dwData = 2;
+		 else if (calc < -2) dod[count_ent].dwData = -2;
+		 else dod[count_ent].dwData =  calc;	
 
-        dod[count].dwTimeStamp =  time +1;
-        dod[count].dwSequence = last_event++;
+        dod[count_ent].dwTimeStamp =  time +1;
+        dod[count_ent].dwSequence = last_event++;
 		count_ent++;
 		save_point.y = point.y;
 	    }
-     
-     for (count_button=0;count_button<5;count_button++)
-	 {
-	 if (save_b[count_button] != b[count_button]) {
-		 if (count_button==0) {
-			dod[count].dwOfs =   DIMOFS_BUTTON0;
-			}
+          
+	 else if (save_b[0] != b[0]) {		 
+		dod[count_ent].dwOfs =   DIMOFS_BUTTON0;
+			
+        dod[count_ent].dwData =   b[0];
+        dod[count_ent].dwTimeStamp =  time +1;
+        dod[count_ent].dwSequence = last_event++;
+		count_ent++;
+		save_b[0] = b[0];
+	    }
 
-		 if (count_button==1) {
-			 dod[count].dwOfs =   DIMOFS_BUTTON1;
-		     }
-		 if (count_button==2) {
-			 dod[count].dwOfs =   DIMOFS_BUTTON2;
-		     }
-		 if (count_button==3) {
-			 dod[count].dwOfs =   DIMOFS_BUTTON3;
-		     }
-		 if (count_button==4) {
-			 dod[count].dwOfs =  DIMOFS_BUTTON4;
-		     }
+	 else if (save_b[1] != b[1]) {		 
+		dod[count_ent].dwOfs =   DIMOFS_BUTTON1;
+			
+        dod[count_ent].dwData =   b[1];
+        dod[count_ent].dwTimeStamp =  time +1;
+        dod[count_ent].dwSequence = last_event++;
+		count_ent++;
+		save_b[1] = b[1];
+	    }
 
-        dod[count].dwData =   b[count_button];
-        dod[count].dwTimeStamp =  time +1;
-        dod[count].dwSequence = last_event++;
+ 	 else if (save_b[2] != b[2]) {		 
+		dod[count_ent].dwOfs =   DIMOFS_BUTTON2;
+			
+        dod[count_ent].dwData =   b[2];
+        dod[count_ent].dwTimeStamp =  time +1;
+        dod[count_ent].dwSequence = last_event++;
 		count_ent++;
-		save_b[count_button] = b[count_button];
+		save_b[2] = b[2];
 	    }
-	 }
 
+     else if (save_b[3] != b[3]) {		 
+		dod[count_ent].dwOfs =   DIMOFS_BUTTON3;
+			
+        dod[count_ent].dwData =   b[3];
+        dod[count_ent].dwTimeStamp =  time +1;
+        dod[count_ent].dwSequence = last_event++;
+		count_ent++;
+		save_b[3] = b[3];
+	    }
+
+     else if (save_b[4] != b[4]) {		 
+		dod[count_ent].dwOfs =   DIMOFS_BUTTON4;
+			
+        dod[count_ent].dwData =   b[4];
+        dod[count_ent].dwTimeStamp =  time +1;
+        dod[count_ent].dwSequence = last_event++;
+		count_ent++;
+		save_b[4] = b[4];
+	    }
+	 
+
   }  // end for