1
0
Fork 0

Timer interval stuff now uses gettimeofday() instead of ftime()

This commit is contained in:
curt 1997-06-17 16:51:58 +00:00
parent 7e07f19a25
commit 226ef4335a
3 changed files with 34 additions and 19 deletions

View file

@ -56,6 +56,9 @@ clean:
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# $Log$ # $Log$
# Revision 1.2 1997/06/17 16:52:02 curt
# Timer interval stuff now uses gettimeofday() instead of ftime()
#
# Revision 1.1 1997/05/29 00:09:52 curt # Revision 1.1 1997/05/29 00:09:52 curt
# Initial Flight Gear revision. # Initial Flight Gear revision.
# #

View file

@ -46,6 +46,10 @@
#define DEG_TO_RAD 0.017453292 #define DEG_TO_RAD 0.017453292
#define RAD_TO_DEG 57.29577951 #define RAD_TO_DEG 57.29577951
#ifndef PI2
#define PI2 (M_PI + M_PI)
#endif
/* This is a record containing all the info for the aircraft currently /* This is a record containing all the info for the aircraft currently
being operated */ being operated */
struct aircraft_params current_aircraft; struct aircraft_params current_aircraft;
@ -77,7 +81,7 @@ double goal_view_offset = 0.0;
double Simtime; double Simtime;
/* Another hack */ /* Another hack */
int use_signals = 1; int use_signals = 0;
/************************************************************************** /**************************************************************************
@ -295,15 +299,15 @@ static void fgMainLoop( void ) {
int elapsed, multi_loop; int elapsed, multi_loop;
elapsed = fgGetTimeInterval(); elapsed = fgGetTimeInterval();
/* printf("Time interval is = %d, previous remainder is = %d\n", elapsed, printf("Time interval is = %d, previous remainder is = %d\n", elapsed,
remainder); */ remainder);
printf("--> Frame rate is = %.2f\n", 1000.0 / (float)elapsed); printf("--> Frame rate is = %.2f\n", 1000.0 / (float)elapsed);
elapsed += remainder; elapsed += remainder;
multi_loop = ((float)elapsed * 0.001) * DEFAULT_MODEL_HZ; multi_loop = ((float)elapsed * 0.001) * DEFAULT_MODEL_HZ;
remainder = elapsed - ((multi_loop*1000) / DEFAULT_MODEL_HZ); remainder = elapsed - ((multi_loop*1000) / DEFAULT_MODEL_HZ);
/* printf("Model iterations needed = %d, new remainder = %d\n", multi_loop, printf("Model iterations needed = %d, new remainder = %d\n", multi_loop,
remainder); */ remainder);
aircraft_debug(1); aircraft_debug(1);
fgUpdateVisuals(); fgUpdateVisuals();
@ -475,9 +479,12 @@ int main( int argc, char *argv[] ) {
/* $Log$ /* $Log$
/* Revision 1.16 1997/06/17 04:19:16 curt /* Revision 1.17 1997/06/17 16:51:58 curt
/* More timer related tweaks with respect to view direction changes. /* Timer interval stuff now uses gettimeofday() instead of ftime()
/* /*
* Revision 1.16 1997/06/17 04:19:16 curt
* More timer related tweaks with respect to view direction changes.
*
* Revision 1.15 1997/06/17 03:41:10 curt * Revision 1.15 1997/06/17 03:41:10 curt
* Nonsignal based interval timing is now working. * Nonsignal based interval timing is now working.
* This would be a good time to look at cleaning up the code structure a bit. * This would be a good time to look at cleaning up the code structure a bit.

View file

@ -26,8 +26,8 @@
#include <signal.h> /* for timer routines */ #include <signal.h> /* for timer routines */
#include <stdio.h> /* for printf() */ #include <stdio.h> /* for printf() */
#include <time.h> /* for get/setitimer */ #include <sys/time.h> /* for get/setitimer, gettimeofday, struct timeval */
#include <sys/timeb.h> /* for ftime() and struct timeb */ #include <unistd.h>
#include "fg_timer.h" #include "fg_timer.h"
@ -82,20 +82,22 @@ void fgTimerInit(float dt, void (*f)()) {
/* This function returns the number of milleseconds since the last /* This function returns the number of milleseconds since the last
time it was called. */ time it was called. */
int fgGetTimeInterval() { int fgGetTimeInterval() {
static struct timeb last; static struct timeval last;
static struct timeb current; static struct timeval current;
static struct timezone tz;
static int inited = 0; static int inited = 0;
int interval; int interval;
if ( ! inited ) { if ( ! inited ) {
inited = 1; inited = 1;
ftime(&last); gettimeofday(&last, &tz);
interval = 0; interval = 0;
} else { } else {
ftime(&current); gettimeofday(&current, &tz);
interval = 1000 * (current.time - last.time) + interval = 1000000 * (current.tv_sec - last.tv_sec) +
(current.millitm - last.millitm); (current.tv_usec - last.tv_usec);
interval /= 1000; /* convert back to milleseconds */
last = current; last = current;
} }
@ -104,10 +106,13 @@ int fgGetTimeInterval() {
/* $Log$ /* $Log$
/* Revision 1.2 1997/06/17 03:41:10 curt /* Revision 1.3 1997/06/17 16:52:04 curt
/* Nonsignal based interval timing is now working. /* Timer interval stuff now uses gettimeofday() instead of ftime()
/* This would be a good time to look at cleaning up the code structure a bit.
/* /*
* Revision 1.2 1997/06/17 03:41:10 curt
* Nonsignal based interval timing is now working.
* This would be a good time to look at cleaning up the code structure a bit.
*
* Revision 1.1 1997/06/16 19:24:20 curt * Revision 1.1 1997/06/16 19:24:20 curt
* Initial revision. * Initial revision.
* *