rotate at a reasonable rate
This commit is contained in:
@@ -17,6 +17,9 @@
|
|||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <unistd.h>
|
||||||
#include <X11/Xlib.h>
|
#include <X11/Xlib.h>
|
||||||
#include <X11/Xutil.h>
|
#include <X11/Xutil.h>
|
||||||
#include <X11/keysym.h>
|
#include <X11/keysym.h>
|
||||||
@@ -37,6 +40,21 @@ static int MinSides = 3;
|
|||||||
static int MaxSides = 20;
|
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.
|
* 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.
|
* 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
|
* 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 {
|
else {
|
||||||
idle();
|
static double t0 = -1.0;
|
||||||
if (Redraw) {
|
double dt, t = current_time();
|
||||||
display(dpy, win);
|
if (t0 < 0.0)
|
||||||
Redraw = 0;
|
t0 = t;
|
||||||
}
|
dt = t - t0;
|
||||||
|
Xangle += 90.0 * dt; /* 90 degrees per second */
|
||||||
|
Yangle += 70.0 * dt;
|
||||||
|
t0 = t;
|
||||||
|
display(dpy, win);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user