I wrote:
> Maybe it is doable to sleep for a millisecond less than computed and achieve
> the
> targeted framerate with the loop.
Could you try this patch :
cvs -z4 -q diff -u main.cxx (in directory
I:\FlightGear\cvs\FlightGear\src\Main\)
Index: main.cxx
===================================================================
RCS file: /var/cvs/FlightGear-0.9/FlightGear/src/Main/main.cxx,v
retrieving revision 1.194
diff -u -r1.194 main.cxx
--- main.cxx 9 Mar 2005 15:12:01 -0000 1.194
+++ main.cxx 9 Mar 2005 16:53:34 -0000
@@ -233,12 +233,11 @@
double throttle_hz = fgGetDouble("/sim/frame-rate-throttle-hz", 0.0);
if ( throttle_hz > 0.0 && scenery_loaded ) {
- static double remainder = 0.0;
-
// simple frame rate throttle
- double dt = 1000000.0 / throttle_hz + remainder;
+ double dt = 1000000.0 / throttle_hz;
int wait = dt / 1000;
- remainder = dt - ( wait * 1000.0 );
+ if ( wait > 0 )
+ wait -= 1;
current_time_stamp.stamp();
int t_ms = (int) ( ( current_time_stamp - last_time_stamp ) / 1000 ) ;
/* Convert to ms */
@@ -246,6 +245,9 @@
ulMilliSecondSleep ( wait - t_ms ) ;
}
current_time_stamp.stamp();
+ while ( current_time_stamp - last_time_stamp < dt ) {
+ current_time_stamp.stamp();
+ }
} else {
// run as fast as the app will go
current_time_stamp.stamp();
_______________________________________________
Flightgear-devel mailing list
[email protected]
http://mail.flightgear.org/mailman/listinfo/flightgear-devel
2f585eeea02e2c79d7b1d8c4963bae2d