diff options
| author | Gary Scavone <gary@music.mcgill.ca> | 2019-04-07 15:52:06 -0400 |
|---|---|---|
| committer | Gary Scavone <gary@music.mcgill.ca> | 2019-04-19 15:16:47 -0400 |
| commit | 201e08010dd1f321d9d16bfed29adc89b74b1732 (patch) | |
| tree | 2ff2d689a1f84110ada0e4b955d2a8c2bae64347 | |
| parent | dfadcff5c912beee1d1b76d50d47adcea2e400e4 (diff) | |
Move input user buffer clearing to startStream().
| -rw-r--r-- | RtAudio.cpp | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/RtAudio.cpp b/RtAudio.cpp index 0dff2d3..d92a13a 100644 --- a/RtAudio.cpp +++ b/RtAudio.cpp @@ -1362,9 +1362,7 @@ bool RtApiCore :: probeDeviceOpen( unsigned int device, StreamMode mode, unsigne // Allocate necessary internal buffers. unsigned long bufferBytes; bufferBytes = stream_.nUserChannels[mode] * *bufferSize * formatBytes( stream_.userFormat ); - // stream_.userBuffer[mode] = (char *) calloc( bufferBytes, 1 ); stream_.userBuffer[mode] = (char *) malloc( bufferBytes * sizeof(char) ); - memset( stream_.userBuffer[mode], 0, bufferBytes * sizeof(char) ); if ( stream_.userBuffer[mode] == NULL ) { errorText_ = "RtApiCore::probeDeviceOpen: error allocating user buffer memory."; goto error; @@ -1387,7 +1385,7 @@ bool RtApiCore :: probeDeviceOpen( unsigned int device, StreamMode mode, unsigne if ( makeBuffer ) { bufferBytes *= *bufferSize; if ( stream_.deviceBuffer ) free( stream_.deviceBuffer ); - stream_.deviceBuffer = (char *) calloc( bufferBytes, 1 ); + stream_.deviceBuffer = (char *) calloc( bufferBytes, sizeof(char) ); if ( stream_.deviceBuffer == NULL ) { errorText_ = "RtApiCore::probeDeviceOpen: error allocating device buffer memory."; goto error; @@ -1598,6 +1596,11 @@ void RtApiCore :: startStream( void ) if ( stream_.mode == INPUT || ( stream_.mode == DUPLEX && stream_.device[0] != stream_.device[1] ) ) { + // Clear user input buffer + unsigned long bufferBytes; + bufferBytes = stream_.nUserChannels[1] * stream_.bufferSize * formatBytes( stream_.userFormat ); + memset( stream_.userBuffer[1], 0, bufferBytes * sizeof(char) ); + result = AudioDeviceStart( handle->id[1], callbackHandler ); if ( result != noErr ) { errorStream_ << "RtApiCore::startStream: system error starting input callback procedure on device (" << stream_.device[1] << ")."; @@ -1606,6 +1609,7 @@ void RtApiCore :: startStream( void ) } } + // set stream time to zero? handle->drainCounter = 0; handle->internalDrain = false; stream_.state = STREAM_RUNNING; @@ -1655,13 +1659,6 @@ void RtApiCore :: stopStream( void ) } stream_.state = STREAM_STOPPED; - // set stream time to zero? - // Clear user input buffer in case the stream is restarted - if ( stream_.mode == INPUT || stream_.mode == DUPLEX ) { - unsigned long bufferBytes; - bufferBytes = stream_.nUserChannels[1] * stream_.bufferSize * formatBytes( stream_.userFormat ); - memset( stream_.userBuffer[1], 0, bufferBytes * sizeof(char) ); - } unlock: if ( result == noErr ) return; |
