SoundStream.st
changeset 5419 012b0bf375d0
parent 5418 793966b34e99
child 5421 9249f574dc60
--- a/SoundStream.st	Sat Jan 04 03:30:05 2020 +0100
+++ b/SoundStream.st	Sat Jan 04 18:04:53 2020 +0100
@@ -3391,22 +3391,24 @@
 flush
     "wait until all sound has been played"
 
+    [self hasOutputPending] whileTrue:[
+        Delay waitForMilliseconds:20.
+        "/ Processor yield
+    ]
+!
+
+hasOutputPending
 %{
 #ifdef SUPPORT_PORTAUDIO
     OBJ str;
     if ((str = __INST(handle1)) != nil) {
-	struct paStreamData* paStreamData = (struct paStreamData*)__externalAddressVal(str);
-
-	while (paStreamData->currentBuffer != NULL) {
-	    struct timespec a;
-	    a.tv_sec  = 0;
-	    a.tv_nsec = 1 * 1000000; // 1 milliseconds asNanoseconds -> 1000000
-	    nanosleep( &a, NULL );
-	}
+        struct paStreamData* paStreamData = (struct paStreamData*)__externalAddressVal(str);
+
+        RETURN ((paStreamData->currentBuffer != NULL) ? true : false);
     }
 #endif /* SUPPORT_PORTAUDIO */
 %}.
-
+    ^ false
 ! !
 
 !SoundStream::PortAudio methodsFor:'open & close'!