Ver Fonte

Android: audio change audio assert when try to open concurrent device to a real error

Sylvain há 2 anos atrás
pai
commit
407b85c506
2 ficheiros alterados com 22 adições e 4 exclusões
  1. 11 2
      src/audio/aaudio/SDL_aaudio.c
  2. 11 2
      src/audio/android/SDL_androidaudio.c

+ 11 - 2
src/audio/aaudio/SDL_aaudio.c

@@ -75,8 +75,17 @@ static int aaudio_OpenDevice(_THIS, const char *devname)
     aaudio_result_t res;
     LOGI(__func__);
 
-    SDL_assert((captureDevice == NULL) || !iscapture);
-    SDL_assert((audioDevice == NULL) || iscapture);
+    if (iscapture) {
+        if (captureDevice) {
+            return SDL_SetError("An audio capture device is already opened");
+        }
+    }
+
+    if (!iscapture) {
+        if (audioDevice) {
+            return SDL_SetError("An audio playback device is already opened");
+        }
+    }
 
     if (iscapture) {
         if (!Android_JNI_RequestPermission("android.permission.RECORD_AUDIO")) {

+ 11 - 2
src/audio/android/SDL_androidaudio.c

@@ -40,8 +40,17 @@ static int ANDROIDAUDIO_OpenDevice(_THIS, const char *devname)
     SDL_AudioFormat test_format;
     SDL_bool iscapture = this->iscapture;
 
-    SDL_assert((captureDevice == NULL) || !iscapture);
-    SDL_assert((audioDevice == NULL) || iscapture);
+    if (iscapture) {
+        if (captureDevice) {
+            return SDL_SetError("An audio capture device is already opened");
+        }
+    }
+
+    if (!iscapture) {
+        if (audioDevice) {
+            return SDL_SetError("An audio playback device is already opened");
+        }
+    }
 
     if (iscapture) {
         captureDevice = this;