diff options
author | Paul Duncan <pabs@pablotron.org> | 2019-01-19 11:05:06 -0500 |
---|---|---|
committer | Paul Duncan <pabs@pablotron.org> | 2019-01-19 11:05:06 -0500 |
commit | 92b5be79743457d6746e6d00ad4edbfdd955d828 (patch) | |
tree | 2e0b8040df78ce9f0bb58832aaacc0fe209af0d1 /src/sdl/main.c | |
parent | df5ca740fa8e438e6bc67fe1ed078aa983ffeed5 (diff) | |
download | sok-92b5be79743457d6746e6d00ad4edbfdd955d828.tar.bz2 sok-92b5be79743457d6746e6d00ad4edbfdd955d828.zip |
update fade texture on window resize
Diffstat (limited to 'src/sdl/main.c')
-rw-r--r-- | src/sdl/main.c | 65 |
1 files changed, 47 insertions, 18 deletions
diff --git a/src/sdl/main.c b/src/sdl/main.c index 0d492a5..53f2377 100644 --- a/src/sdl/main.c +++ b/src/sdl/main.c @@ -47,6 +47,42 @@ load_font( } static void +on_resize( + draw_ctx_t * const draw_ctx +) { + if (draw_ctx->fade_tex) { + // free existing fade texture + SDL_DestroyTexture(draw_ctx->fade_tex); + draw_ctx->fade_tex = NULL; + } + + // get window size + int w, h; + if (SDL_GetRendererOutputSize(draw_ctx->renderer, &w, &h)) { + die("SDL_GetRendererOutputSize(): %s", SDL_GetError()); + } + + // create fade texture + draw_ctx->fade_tex = SDL_CreateTexture( + draw_ctx->renderer, + SDL_PIXELFORMAT_RGBA32, + SDL_TEXTUREACCESS_TARGET, + w, + h + ); + + // check for error + if (!draw_ctx->fade_tex) { + die("SDL_CreateTexture(): %s", SDL_GetError()); + } + + // set fade texture blend mode + if (SDL_SetTextureBlendMode(draw_ctx->fade_tex, SDL_BLENDMODE_BLEND)) { + die("SDl_SetTextureBlendMode(): %s", SDL_GetError()); + } +} + +static void draw_to_fade_tex( draw_ctx_t * const draw_ctx ) { @@ -229,26 +265,11 @@ int main(int argc, char *argv[]) { .theme = theme_get_default(), .bump_ticks = SDL_GetTicks() - 5000, .fade_ticks = SDL_GetTicks() - 5000, + .fade_tex = NULL, }; - // create fade texture - draw_ctx.fade_tex = SDL_CreateTexture( - renderer, - SDL_PIXELFORMAT_RGBA32, - SDL_TEXTUREACCESS_TARGET, - WINDOW_WIDTH, - WINDOW_HEIGHT - ); - - // set fade texture blend mode - if (SDL_SetTextureBlendMode(draw_ctx.fade_tex, SDL_BLENDMODE_BLEND)) { - die("SDl_SetTextureBlendMode(): %s", SDL_GetError()); - } - - // check for error - if (!draw_ctx.fade_tex) { - die("SDL_CreateTexture(): %s", SDL_GetError()); - } + // force resize (init fade texture) + on_resize(&draw_ctx); // set level set_level(&draw_ctx, &ctx, level_num); @@ -379,6 +400,14 @@ int main(int argc, char *argv[]) { // toggle flag is_fullscreen = !is_fullscreen; + // handle resize + on_resize(&draw_ctx); + + break; + case ACTION_RESIZE: + // handle resize + on_resize(&draw_ctx); + break; case ACTION_SOLVE_CANCEL: SDL_Log("solve cancelled by user"); |