Commit bf823bf2dce9f3933f025b12709fb0f3978754a5

Sylvain Becker 2019-02-05T15:05:32

Android/openslES: prevent to run out of buffers if Enqueue() fails.

diff --git a/src/audio/openslES/SDL_openslES.c b/src/audio/openslES/SDL_openslES.c
index ceabf7a..f115483 100644
--- a/src/audio/openslES/SDL_openslES.c
+++ b/src/audio/openslES/SDL_openslES.c
@@ -549,19 +549,21 @@ openslES_PlayDevice(_THIS)
     SLresult result;
 
     LOGI("======openslES_PlayDevice( )======");
-    /* Queue it up */
 
+    /* Queue it up */
     result = (*bqPlayerBufferQueue)->Enqueue(bqPlayerBufferQueue, audiodata->pmixbuff[audiodata->next_buffer], this->spec.size);
-    if (SL_RESULT_SUCCESS != result) {
-        /* just puk here */
-        /* next ! */
-    }
 
     audiodata->next_buffer++;
     if (audiodata->next_buffer >= NUM_BUFFERS) {
         audiodata->next_buffer = 0;
     }
 
+    /* If Enqueue fails, callback won't be called.
+     * Post the semphore, not to run out of buffer */
+    if (SL_RESULT_SUCCESS != result) {
+        SDL_SemPost(audiodata->playsem);
+    }
+
     return;
 }