#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>
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.
*/
}
-/*
- * 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
}
}
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);
}
}
}