Browse Source

Fixed bug #9792 - Android: build failure with ndk 27-beta1 due to use of deprecated ALooper_pollAll
replace ALooper_pollAll by ALooper_pollOnce

Sylvain 11 months ago
parent
commit
ee16d2f705
1 changed files with 21 additions and 11 deletions
  1. 21 11
      src/sensor/android/SDL_androidsensor.c

+ 21 - 11
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();
-
-        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;
+        SDL_bool done = SDL_FALSE;
+
+        while (!done) {
+            int result;
+
+            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();
+            }
 
-                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));
-                }
+            if (result < 0) {
+                done = SDL_TRUE;
             }
-            SDL_UnlockSensors();
         }
     }