#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"
unsigned long int fgSimTime;
-static struct itimerval t, ot;
-static void (*callbackfunc)(int multi_loop);
+
+#ifdef USE_ITIMER
+ static struct itimerval t, ot;
+ static void (*callbackfunc)(int multi_loop);
/* This routine catches the SIGALRM */
-void fgTimerCatch() {
+void fgTimerCatch( void ) {
/* ignore any SIGALRM's until we come back from our EOM iteration */
signal(SIGALRM, SIG_IGN);
exit(0);
}
}
+#endif /* HAVE_ITIMER */
/* This function returns the number of milleseconds since the last
time it was called. */
-int fgGetTimeInterval() {
+int fgGetTimeInterval( void ) {
+ 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 /* USE_FTIME */
+
interval = 0;
} else {
+
+#ifdef USE_FTIME
+ ftime(¤t);
+ interval = 1000 * (current.time - last.time) +
+ (current.millitm - last.millitm);
+#else
gettimeofday(¤t, &tz);
interval = 1000000 * (current.tv_sec - last.tv_sec) +
(current.tv_usec - last.tv_usec);
interval /= 1000; /* convert back to milleseconds */
+#endif /* USE_FTIME */
+
last = current;
}
/* $Log$
-/* Revision 1.3 1997/06/17 16:52:04 curt
-/* Timer interval stuff now uses gettimeofday() instead of ftime()
+/* Revision 1.8 1998/01/19 18:40:39 curt
+/* Tons of little changes to clean up the code and to remove fatal errors
+/* when building with the c++ compiler.
/*
+ * Revision 1.7 1997/12/30 13:06:58 curt
+ * A couple lighting tweaks ...
+ *
+ * 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.
+ *
+ * Revision 1.3 1997/06/17 16:52:04 curt
+ * Timer interval stuff now uses gettimeofday() instead of ftime()
+ *
* 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.