From 539a6fe8d62754b11630297d9f66f794a2eccf6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sigrid=20Solveig=20Hafl=C3=ADnud=C3=B3ttir?= Date: Tue, 28 Dec 2021 00:11:23 +0100 Subject: [PATCH] android: fix portrait/landscape by redrawing twice --- src/uxnemu.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/uxnemu.c b/src/uxnemu.c index b82b32a..9e7e750 100644 --- a/src/uxnemu.c +++ b/src/uxnemu.c @@ -479,18 +479,26 @@ run(Uxn *u) while(!devsystem->dat[0xf]) { SDL_Event event; double elapsed, begin; + int force_redraw = 0; if(!BENCH) begin = SDL_GetPerformanceCounter(); while(SDL_PollEvent(&event) != 0) { /* Window */ if(event.type == SDL_QUIT) return error("Run", "Quit."); - else if(event.type == SDL_WINDOWEVENT && event.window.event == SDL_WINDOWEVENT_EXPOSED) - redraw(u); - else if(event.type == SDL_DROPFILE) { - set_size(WIDTH, HEIGHT, 0); + else if(event.type == SDL_WINDOWEVENT) { + if(event.window.event == SDL_WINDOWEVENT_RESIZED || event.window.event == SDL_WINDOWEVENT_EXPOSED) { +#ifdef __ANDROID__ + /* rotation does something weird, have to redraw twice */ + if(event.window.event == SDL_WINDOWEVENT_RESIZED) + redraw(); +#endif + force_redraw = 1; + } + } else if(event.type == SDL_DROPFILE) { start(u, event.drop.file); SDL_free(event.drop.file); + force_redraw = 1; } /* Audio */ else if(event.type >= audio0_event && event.type < audio0_event + POLYPHONY) @@ -533,7 +541,7 @@ run(Uxn *u) console_input(u, event.cbutton.button); } uxn_eval(u, devscreen->vector); - if(uxn_screen.fg.changed || uxn_screen.bg.changed || devsystem->dat[0xe]) + if(uxn_screen.fg.changed || uxn_screen.bg.changed || devsystem->dat[0xe] || force_redraw) redraw(u); if(!BENCH) { elapsed = (SDL_GetPerformanceCounter() - begin) / (double)SDL_GetPerformanceFrequency() * 1000.0f;