diff --git a/util/android/AndroidWindow.cpp b/util/android/AndroidWindow.cpp index 55dbe88e1..3f0815027 100644 --- a/util/android/AndroidWindow.cpp +++ b/util/android/AndroidWindow.cpp @@ -171,6 +171,11 @@ static int32_t onInputEvent(struct android_app *app, AInputEvent *event) return 0; // 0 == not handled } +static bool validPollResult(int result) +{ + return result >= 0 || result == ALOOPER_POLL_CALLBACK; +} + void android_main(struct android_app *app) { int events; @@ -187,7 +192,8 @@ void android_main(struct android_app *app) // Message loop, polling for events indefinitely (due to -1 timeout) // Must be here in order to handle APP_CMD_INIT_WINDOW event, // which occurs after AndroidWindow::initializeImpl(), but before AndroidWindow::messageLoop - while (ALooper_pollAll(-1, nullptr, &events, reinterpret_cast(&source)) >= 0) + while ( + validPollResult(ALooper_pollOnce(-1, nullptr, &events, reinterpret_cast(&source)))) { if (source != nullptr) {