mirror of https://git.sr.ht/~rabbits/uxn
android: fix portrait/landscape by redrawing twice
This commit is contained in:
parent
dce68e0e41
commit
539a6fe8d6
18
src/uxnemu.c
18
src/uxnemu.c
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue