# HG changeset patch # User Eli Gottlieb # Date 1279511507 14400 # Node ID b33752266d8fba8fe5dc530c4593a1153af2a1d4 # Parent a4c1df8806902ddb135bfc2bc18078a9a75604dc Boxed up the rendering loop and turned it into a redraw/update function. This makes things way more responsive, usable again. diff -r a4c1df880690 -r b33752266d8f test/testshape.c --- a/test/testshape.c Sun Jul 18 23:36:39 2010 -0400 +++ b/test/testshape.c Sun Jul 18 23:51:47 2010 -0400 @@ -11,6 +11,19 @@ #define SHAPED_WINDOW_Y 150 #define SHAPED_WINDOW_DIMENSION 640 +void render(SDL_Window* window,SDL_Texture *texture,SDL_Rect texture_dimensions) { + SDL_SelectRenderer(window); + + //Clear render-target to blue. + SDL_SetRenderDrawColor(0x00,0x00,0xff,0xff); + SDL_RenderClear(); + + //Render the texture. + SDL_RenderCopy(texture,&texture_dimensions,&texture_dimensions); + + SDL_RenderPresent(); +} + int main(int argc,char** argv) { if(argc < 2) { printf("SDL_Shape requires at least one bitmap file as argument.\n"); @@ -93,6 +106,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); while(should_exit == 0) { event_pending = SDL_PollEvent(&event); if(event_pending == 1) { @@ -109,22 +123,13 @@ 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; } - - SDL_SelectRenderer(window); - - //Clear render-target to blue. - SDL_SetRenderDrawColor(0x00,0x00,0xff,0xff); - SDL_RenderClear(); - - //Render the texture. - SDL_RenderCopy(textures[current_picture],&texture_dimensions,&texture_dimensions); - - SDL_RenderPresent(); } //Free the textures.