--- 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'!