# HG changeset patch # User Eli Gottlieb # Date 1279513442 14400 # Node ID de3b3455f8ecee28770b1c2015d0d33ebb795d8b # Parent b33752266d8fba8fe5dc530c4593a1153af2a1d4 Put the render loop back in its right place, but with delaying functionality to keep it down to roughly 60fps, not eating up all the X11 time. diff -r b33752266d8f -r de3b3455f8ec test/testshape.c --- a/test/testshape.c Sun Jul 18 23:51:47 2010 -0400 +++ b/test/testshape.c Mon Jul 19 00:24:02 2010 -0400 @@ -6,11 +6,14 @@ #include #include #include +#include #define SHAPED_WINDOW_X 150 #define SHAPED_WINDOW_Y 150 #define SHAPED_WINDOW_DIMENSION 640 +#define TICK_INTERVAL 18 + void render(SDL_Window* window,SDL_Texture *texture,SDL_Rect texture_dimensions) { SDL_SelectRenderer(window); @@ -24,6 +27,16 @@ SDL_RenderPresent(); } +static Uint32 next_time; + +Uint32 time_left() { + Uint32 now = SDL_GetTicks(); + if(next_time <= now) + return 0; + else + return next_time - now; +} + int main(int argc,char** argv) { if(argc < 2) { printf("SDL_Shape requires at least one bitmap file as argument.\n"); @@ -106,7 +119,7 @@ SDL_QueryTexture(textures[current_picture],&format,&access,&texture_dimensions.w,&texture_dimensions.h); SDL_SetWindowSize(window,texture_dimensions.w,texture_dimensions.h); SDL_SetWindowShape(window,pictures[current_picture],&mode); - render(window,textures[current_picture],texture_dimensions); + next_time = SDL_GetTicks() + TICK_INTERVAL; while(should_exit == 0) { event_pending = SDL_PollEvent(&event); if(event_pending == 1) { @@ -123,13 +136,14 @@ SDL_QueryTexture(textures[current_picture],&format,&access,&texture_dimensions.w,&texture_dimensions.h); SDL_SetWindowSize(window,texture_dimensions.w,texture_dimensions.h); SDL_SetWindowShape(window,pictures[current_picture],&mode); - render(window,textures[current_picture],texture_dimensions); - } if(event.type == SDL_QUIT) should_exit = 1; event_pending = 0; } + render(window,textures[current_picture],texture_dimensions); + SDL_Delay(time_left()); + next_time += TICK_INTERVAL; } //Free the textures.