summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGary Scavone <gary@music.mcgill.ca>2019-04-07 15:52:06 -0400
committerGary Scavone <gary@music.mcgill.ca>2019-04-19 15:16:47 -0400
commit201e08010dd1f321d9d16bfed29adc89b74b1732 (patch)
tree2ff2d689a1f84110ada0e4b955d2a8c2bae64347
parentdfadcff5c912beee1d1b76d50d47adcea2e400e4 (diff)
Move input user buffer clearing to startStream().
-rw-r--r--RtAudio.cpp17
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;