diff options
| author | Guilherme Steinmann <guidefloripa@gmail.com> | 2015-03-25 09:13:30 -0300 |
|---|---|---|
| committer | Guilherme Steinmann <guidefloripa@gmail.com> | 2015-03-25 09:13:30 -0300 |
| commit | d58bf8ca75d5218cbb24c1ce02b1710429198c91 (patch) | |
| tree | c87c6d85f6a55ff034b43603bb1e2ea94b9cdef4 /RtAudio.cpp | |
| parent | 8e58b61517bff3edcd8dac6afffdf538f2fa1ca1 (diff) | |
Fix closeStream on Mac OS X
Diffstat (limited to 'RtAudio.cpp')
| -rwxr-xr-x[-rw-r--r--] | RtAudio.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/RtAudio.cpp b/RtAudio.cpp index 4d4c85f..07cba60 100644..100755 --- a/RtAudio.cpp +++ b/RtAudio.cpp @@ -1406,6 +1406,19 @@ void RtApiCore :: closeStream( void ) CoreHandle *handle = (CoreHandle *) stream_.apiHandle;
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 )
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 )
@@ -1417,6 +1430,18 @@ void RtApiCore :: closeStream( void ) }
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 )
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 )
|
