Fix the issue causing the screen to be black after resuming when in low processor mode.

This is done by forcing a redraw and buffers swap when resuming the app.
This commit is contained in:
Fredy Huya-Kouadio 2022-04-25 00:03:00 -07:00
parent 3ba980379d
commit 7a88d5bf28
2 changed files with 4 additions and 1 deletions

View file

@ -514,6 +514,8 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_onRendererResumed(JNI
if (step.get() <= 0) if (step.get() <= 0)
return; return;
// We force redraw to ensure we render at least once when resuming the app.
Main::force_redraw();
if (os_android->get_main_loop()) { if (os_android->get_main_loop()) {
os_android->get_main_loop()->notification(MainLoop::NOTIFICATION_APP_RESUMED); os_android->get_main_loop()->notification(MainLoop::NOTIFICATION_APP_RESUMED);
} }

View file

@ -322,10 +322,11 @@ void OS_Android::main_loop_begin() {
bool OS_Android::main_loop_iterate(bool *r_should_swap_buffers) { bool OS_Android::main_loop_iterate(bool *r_should_swap_buffers) {
if (!main_loop) if (!main_loop)
return false; return false;
uint64_t current_frames_drawn = Engine::get_singleton()->get_frames_drawn();
bool exit = Main::iteration(); bool exit = Main::iteration();
if (r_should_swap_buffers) { if (r_should_swap_buffers) {
*r_should_swap_buffers = !is_in_low_processor_usage_mode() || _update_pending; *r_should_swap_buffers = !is_in_low_processor_usage_mode() || _update_pending || current_frames_drawn != Engine::get_singleton()->get_frames_drawn();
} }
return exit; return exit;