rotate at a reasonable rate

This commit is contained in:
Brian Paul
2005-01-09 16:48:52 +00:00
parent c1065ee977
commit 1b058a06c2

View File

@@ -17,6 +17,9 @@
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#include <time.h>
#include <unistd.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/keysym.h>
@@ -37,6 +40,21 @@ static int MinSides = 3;
static int MaxSides = 20;
/* return current time (in seconds) */
static double
current_time(void)
{
struct timeval tv;
#ifdef __VMS
(void) gettimeofday(&tv, NULL );
#else
struct timezone tz;
(void) gettimeofday(&tv, &tz);
#endif
return (double) tv.tv_sec + tv.tv_usec / 1000000.0;
}
/*
* Draw the OpenGL stuff and do a SwapBuffers.
*/
@@ -139,17 +157,6 @@ static void display(Display *dpy, Window win)
}
/*
* Called when no events are pending.
*/
static void idle(void)
{
Xangle += 2.0;
Yangle += 3.3;
Redraw = 1;
}
/*
* This is called when we have to recompute the window shape bitmask.
* We just generate an n-sided regular polygon here but any other shape
@@ -262,11 +269,15 @@ static void event_loop(Display *dpy, Window win)
}
}
else {
idle();
if (Redraw) {
display(dpy, win);
Redraw = 0;
}
static double t0 = -1.0;
double dt, t = current_time();
if (t0 < 0.0)
t0 = t;
dt = t - t0;
Xangle += 90.0 * dt; /* 90 degrees per second */
Yangle += 70.0 * dt;
t0 = t;
display(dpy, win);
}
}
}