| @@ -1406,6 +1406,19 @@ void RtApiCore :: closeStream( void ) | |||||
| CoreHandle *handle = (CoreHandle *) stream_.apiHandle; | CoreHandle *handle = (CoreHandle *) stream_.apiHandle; | ||||
| if ( stream_.mode == OUTPUT || stream_.mode == DUPLEX ) { | if ( stream_.mode == OUTPUT || stream_.mode == DUPLEX ) { | ||||
| if ( stream_.mode == OUTPUT || stream_.mode == DUPLEX ) { | |||||
| if (handle) { | |||||
| AudioObjectPropertyAddress property = { kAudioHardwarePropertyDevices, | |||||
| kAudioObjectPropertyScopeGlobal, | |||||
| kAudioObjectPropertyElementMaster }; | |||||
| property.mSelector = kAudioDeviceProcessorOverload; | |||||
| property.mScope = kAudioObjectPropertyScopeGlobal; | |||||
| if (AudioObjectRemovePropertyListener( handle->id[0], &property, xrunListener, (void *) handle ) != noErr) { | |||||
| errorText_ = "RtApiCore::closeStream(): error removing property listener!"; | |||||
| error( RtAudioError::WARNING ); | |||||
| } | |||||
| } | |||||
| if ( stream_.state == STREAM_RUNNING ) | if ( stream_.state == STREAM_RUNNING ) | ||||
| AudioDeviceStop( handle->id[0], callbackHandler ); | AudioDeviceStop( handle->id[0], callbackHandler ); | ||||
| #if defined( MAC_OS_X_VERSION_10_5 ) && ( MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 ) | #if defined( MAC_OS_X_VERSION_10_5 ) && ( MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 ) | ||||
| @@ -1417,6 +1430,18 @@ void RtApiCore :: closeStream( void ) | |||||
| } | } | ||||
| if ( stream_.mode == INPUT || ( stream_.mode == DUPLEX && stream_.device[0] != stream_.device[1] ) ) { | if ( stream_.mode == INPUT || ( stream_.mode == DUPLEX && stream_.device[0] != stream_.device[1] ) ) { | ||||
| if (handle) { | |||||
| AudioObjectPropertyAddress property = { kAudioHardwarePropertyDevices, | |||||
| kAudioObjectPropertyScopeGlobal, | |||||
| kAudioObjectPropertyElementMaster }; | |||||
| property.mSelector = kAudioDeviceProcessorOverload; | |||||
| property.mScope = kAudioObjectPropertyScopeGlobal; | |||||
| if (AudioObjectRemovePropertyListener( handle->id[1], &property, xrunListener, (void *) handle ) != noErr) { | |||||
| errorText_ = "RtApiCore::closeStream(): error removing property listener!"; | |||||
| error( RtAudioError::WARNING ); | |||||
| } | |||||
| } | |||||
| if ( stream_.state == STREAM_RUNNING ) | if ( stream_.state == STREAM_RUNNING ) | ||||
| AudioDeviceStop( handle->id[1], callbackHandler ); | AudioDeviceStop( handle->id[1], callbackHandler ); | ||||
| #if defined( MAC_OS_X_VERSION_10_5 ) && ( MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 ) | #if defined( MAC_OS_X_VERSION_10_5 ) && ( MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 ) | ||||