remove timer, poll for event instead to run at maximum framerate

This commit is contained in:
Josh Holtrop 2013-02-02 21:54:31 -05:00
parent 4425ba1c0b
commit 0e85b9ef95

View File

@ -5,7 +5,6 @@ import derelict.opengl.glu;
enum int WIDTH = 800;
enum int HEIGHT = 600;
static bool drawing = false;
void init()
{
@ -22,7 +21,6 @@ void init()
void display()
{
drawing = true;
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glRotatef(SDL_GetTicks() * 90.0 / 1000, 0, 0, 1);
@ -37,21 +35,9 @@ void display()
glVertex3f(5.0, -5.0, 0.0);
glEnd();
glPopMatrix();
drawing = false;
SDL_GL_SwapBuffers();
}
extern (C) Uint32 timer_callback(Uint32 interval, void *param)
{
if (!drawing)
{
SDL_Event event;
event.type = SDL_USEREVENT;
SDL_PushEvent(&event);
}
return interval;
}
int main(char[][] args)
{
DerelictSDL.load();
@ -76,20 +62,19 @@ int main(char[][] args)
init();
SDL_Event event;
SDL_AddTimer(1000 / 60, &timer_callback, null);
while (SDL_WaitEvent(&event))
for (;;)
{
if (event.type == SDL_QUIT)
break;
else if (event.type == SDL_KEYDOWN)
if (SDL_PollEvent(&event))
{
if (event.key.keysym.sym == SDLK_ESCAPE)
if (event.type == SDL_QUIT)
break;
else if (event.type == SDL_KEYDOWN)
{
if (event.key.keysym.sym == SDLK_ESCAPE)
break;
}
}
else if (event.type == SDL_USEREVENT)
{
display();
}
display();
}
SDL_Quit();