aboutsummaryrefslogtreecommitdiff
path: root/src/sdl/main.c
diff options
context:
space:
mode:
authorPaul Duncan <pabs@pablotron.org>2019-01-19 11:05:06 -0500
committerPaul Duncan <pabs@pablotron.org>2019-01-19 11:05:06 -0500
commit92b5be79743457d6746e6d00ad4edbfdd955d828 (patch)
tree2e0b8040df78ce9f0bb58832aaacc0fe209af0d1 /src/sdl/main.c
parentdf5ca740fa8e438e6bc67fe1ed078aa983ffeed5 (diff)
downloadsok-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.c65
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");