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;