android: fix portrait/landscape by redrawing twice

This commit is contained in:
Sigrid Solveig Haflínudóttir 2021-12-28 00:11:23 +01:00
parent dce68e0e41
commit 539a6fe8d6
1 changed files with 13 additions and 5 deletions

View File

@ -479,18 +479,26 @@ run(Uxn *u)
while(!devsystem->dat[0xf]) { while(!devsystem->dat[0xf]) {
SDL_Event event; SDL_Event event;
double elapsed, begin; double elapsed, begin;
int force_redraw = 0;
if(!BENCH) if(!BENCH)
begin = SDL_GetPerformanceCounter(); begin = SDL_GetPerformanceCounter();
while(SDL_PollEvent(&event) != 0) { while(SDL_PollEvent(&event) != 0) {
/* Window */ /* Window */
if(event.type == SDL_QUIT) if(event.type == SDL_QUIT)
return error("Run", "Quit."); return error("Run", "Quit.");
else if(event.type == SDL_WINDOWEVENT && event.window.event == SDL_WINDOWEVENT_EXPOSED) else if(event.type == SDL_WINDOWEVENT) {
redraw(u); if(event.window.event == SDL_WINDOWEVENT_RESIZED || event.window.event == SDL_WINDOWEVENT_EXPOSED) {
else if(event.type == SDL_DROPFILE) { #ifdef __ANDROID__
set_size(WIDTH, HEIGHT, 0); /* 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); start(u, event.drop.file);
SDL_free(event.drop.file); SDL_free(event.drop.file);
force_redraw = 1;
} }
/* Audio */ /* Audio */
else if(event.type >= audio0_event && event.type < audio0_event + POLYPHONY) else if(event.type >= audio0_event && event.type < audio0_event + POLYPHONY)
@ -533,7 +541,7 @@ run(Uxn *u)
console_input(u, event.cbutton.button); console_input(u, event.cbutton.button);
} }
uxn_eval(u, devscreen->vector); 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); redraw(u);
if(!BENCH) { if(!BENCH) {
elapsed = (SDL_GetPerformanceCounter() - begin) / (double)SDL_GetPerformanceFrequency() * 1000.0f; elapsed = (SDL_GetPerformanceCounter() - begin) / (double)SDL_GetPerformanceFrequency() * 1000.0f;