From ee16d2f7052b4e7cdcb9fb0d05d7d76bb7e62fc9 Mon Sep 17 00:00:00 2001 From: Sylvain Date: Thu, 16 May 2024 10:10:17 +0200 Subject: [PATCH] Fixed bug #9792 - Android: build failure with ndk 27-beta1 due to use of deprecated ALooper_pollAll replace ALooper_pollAll by ALooper_pollOnce --- src/sensor/android/SDL_androidsensor.c | 30 +++++++++++++++++--------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/src/sensor/android/SDL_androidsensor.c b/src/sensor/android/SDL_androidsensor.c index eb46dd5e0..fea4fe815 100644 --- a/src/sensor/android/SDL_androidsensor.c +++ b/src/sensor/android/SDL_androidsensor.c @@ -69,20 +69,30 @@ static int SDLCALL SDL_ANDROID_SensorThread(void *data) while (SDL_AtomicGet(&ctx->running)) { Uint64 timestamp = SDL_GetTicksNS(); + SDL_bool done = SDL_FALSE; - if (ALooper_pollAll(-1, NULL, &events, (void **)&source) == LOOPER_ID_USER) { - SDL_LockSensors(); - for (i = 0; i < SDL_sensors_count; ++i) { - if (!SDL_sensors[i].event_queue) { - continue; - } + while (!done) { + int result; - SDL_zero(event); - while (ASensorEventQueue_getEvents(SDL_sensors[i].event_queue, &event, 1) > 0) { - SDL_SendSensorUpdate(timestamp, SDL_sensors[i].sensor, timestamp, event.data, SDL_arraysize(event.data)); + result = ALooper_pollOnce(-1, NULL, &events, (void **)&source); + if (result == LOOPER_ID_USER) { + SDL_LockSensors(); + for (i = 0; i < SDL_sensors_count; ++i) { + if (!SDL_sensors[i].event_queue) { + continue; + } + + SDL_zero(event); + while (ASensorEventQueue_getEvents(SDL_sensors[i].event_queue, &event, 1) > 0) { + SDL_SendSensorUpdate(timestamp, SDL_sensors[i].sensor, timestamp, event.data, SDL_arraysize(event.data)); + } } + SDL_UnlockSensors(); + } + + if (result < 0) { + done = SDL_TRUE; } - SDL_UnlockSensors(); } }