1
0
Fork 0

Add ftime() support for those that don't have gettimeofday()

This commit is contained in:
curt 1997-07-12 02:13:04 +00:00
parent f1d21eef9c
commit 42bbb9f93f
2 changed files with 41 additions and 9 deletions

View file

@ -54,7 +54,11 @@ AR = ar
# a real time system and call the flight model routines
# at a regular interval, rather than between screen updates
# which can be highly variable. This can make the flight
# much smoother.
# model calculations much smoother.
#
# -DUSE_FTIME - Use ftime() to get an accurate current time instead of
# gettimeofday()
#
#---------------------------------------------------------------------------
FG_CFLAGS = -g -Wall
@ -101,6 +105,9 @@ GRAPHICS_LIBS = $(MESA_LIBS) $(X11_LIBS)
#---------------------------------------------------------------------------
# $Log$
# Revision 1.4 1997/07/12 02:13:04 curt
# Add ftime() support for those that don't have gettimeofday()
#
# Revision 1.3 1997/07/09 21:31:08 curt
# Working on making the ground "hard."
#

View file

@ -26,9 +26,12 @@
#include <signal.h> /* for timer routines */
#include <stdio.h> /* for printf() */
#include <sys/time.h> /* for get/setitimer, gettimeofday, struct timeval */
#include <unistd.h>
#ifdef USE_FTIME
# include <sys/timeb.h> /* for ftime() and struct timeb */
#else
# include <sys/time.h> /* for get/setitimer, gettimeofday, struct timeval */
#endif USE_FTIME
#include "fg_timer.h"
@ -79,28 +82,47 @@ void fgTimerInit(float dt, void (*f)()) {
exit(0);
}
}
#endif HAVE_ITIMER
/* This function returns the number of milleseconds since the last
time it was called. */
int fgGetTimeInterval() {
int interval;
static int inited = 0;
#ifdef USE_FTIME
static struct timeb last;
static struct timeb current;
#else
static struct timeval last;
static struct timeval current;
static struct timezone tz;
static int inited = 0;
int interval;
#endif USE_FTIME
if ( ! inited ) {
inited = 1;
#ifdef USE_FTIME
ftime(&last);
#else
gettimeofday(&last, &tz);
#endif
interval = 0;
} else {
#ifdef USE_FTIME
ftime(&current);
interval = 1000 * (current.time - last.time) +
(current.millitm - last.millitm);
#else
gettimeofday(&current, &tz);
interval = 1000000 * (current.tv_sec - last.tv_sec) +
(current.tv_usec - last.tv_usec);
interval /= 1000; /* convert back to milleseconds */
#endif
last = current;
}
@ -109,9 +131,12 @@ int fgGetTimeInterval() {
/* $Log$
/* Revision 1.5 1997/06/26 19:08:38 curt
/* Restructuring make, adding automatic "make dep" support.
/* Revision 1.6 1997/07/12 02:13:04 curt
/* Add ftime() support for those that don't have gettimeofday()
/*
* Revision 1.5 1997/06/26 19:08:38 curt
* Restructuring make, adding automatic "make dep" support.
*
* Revision 1.4 1997/06/25 15:39:49 curt
* Minor changes to compile with rsxnt/win32.
*