Index: mania_drive.c
===================================================================
--- mania_drive.c	(revision 149)
+++ mania_drive.c	(revision 150)
@@ -1166,6 +1166,7 @@
     pos=raydium_ode_element_pos_get(elem);
     player=raydium_ode_network_element_distantowner(elem);
     raydium_osd_printf_3D(pos[0],pos[1],pos[2],12,0.5,"font2.tga","^f%s",raydium_network_name[player]);
+    raydium_ode_element[elem].mesh=raydium_object_find_load("clio_wheels.tri");
     }
 return 1;
 }
@@ -1601,7 +1602,7 @@
 char lagSpeed[RAYDIUM_MAX_NAME_LEN];
 
 raydium_init_args(argc,argv);
-raydium_window_create(640,480,RAYDIUM_RENDERING_WINDOW,version);
+raydium_window_create(640,480,RAYDIUM_RENDERING_FULLSCREEN,version);
 raydium_texture_filter_change(RAYDIUM_TEXTURE_FILTER_TRILINEAR);
 raydium_projection_near=0.01;
 raydium_projection_far=1000;	
5,10 @@
 
       case KeyRelease      :
         updown = GLUT_UP ;
-
-        XQueryKeymap ( currDisplay, keyflags ) ;
-
-        repeating = ( ( keyflags [ event.xkey.keycode >> 3 ] &
-                          ( 1 << ( event.xkey.keycode & 7 ) ) ) != 0 ) ;
-
         // FALLTHROUGH 
 
       case KeyPress        :
-        
-        //  Only generate a key up callback if the key is actually up
-        //  and not repeating.
 
-//        if ( ! autoRepeat && repeating )
-    //      break ;
-
-
         len = XLookupString( &event.xkey, asciiCode, sizeof(asciiCode),
                                  &keySym, &composeStatus ) ;
         result = -1 ;
@@ -627,12 +603,27 @@
 
 	if(result!=-1)
 	    {
+	    // check autorepeat with current KeyRelease and next event
+	    if (special && XEventsQueued(currDisplay, QueuedAfterReading))
+	    {
+	    XEvent ahead;
+	    XPeekEvent(currDisplay, &ahead);
+	    if (ahead.type == KeyPress && event.type == KeyRelease
+	        && ahead.xkey.window == event.xkey.window
+	        && ahead.xkey.keycode == event.xkey.keycode
+	        && ahead.xkey.time == event.xkey.time) 
+		{
+		// repeating key. Discard event.
+		break;
+		}
+	    }
+
 	    // special down
-	    if(special && updown==GLUT_DOWN && glutSpecialFuncCB && !repeating)
+	    if(special && updown==GLUT_DOWN && glutSpecialFuncCB && !raydium_key[result])
 		glutSpecialFuncCB(result,event.xkey.x, event.xkey.y);
 
 	    // special up
-	    if(special && updown==GLUT_UP && glutSpecialUpFuncCB && !repeating)
+	    if(special && updown==GLUT_UP && glutSpecialUpFuncCB && raydium_key[result])
 		glutSpecialUpFuncCB(result,event.xkey.x, event.xkey.y);
 
 	    // normal