diff options
Diffstat (limited to 'test/blocks.cxx')
| -rw-r--r-- | test/blocks.cxx | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/test/blocks.cxx b/test/blocks.cxx index d221bed7d..8dcd71645 100644 --- a/test/blocks.cxx +++ b/test/blocks.cxx @@ -148,6 +148,9 @@ class BlockSound { // Private, OS-specific data... #ifdef __APPLE__ AudioDeviceID device; +# if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 + AudioDeviceIOProcID audio_proc_id; +# endif AudioStreamBasicDescription format; short *data; int remaining; @@ -216,11 +219,14 @@ BlockSound::BlockSound() { // Check we got linear pcm - what to do if we did not ??? if (format.mFormatID != kAudioFormatLinearPCM) return; - // Attach the callback + // Attach the callback and start the device +# if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 + if (AudioDeviceCreateIOProcID(device, audio_cb, (void *)this, &audio_proc_id) != noErr) return; + AudioDeviceStart(device, audio_proc_id); +# else if (AudioDeviceAddIOProc(device, audio_cb, (void *)this) != noErr) return; - - // Start the device... AudioDeviceStart(device, audio_cb); +# endif sample_size = (int)format.mSampleRate; @@ -312,8 +318,13 @@ BlockSound::BlockSound() { BlockSound::~BlockSound() { #ifdef __APPLE__ if (sample_size) { +# if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 + AudioDeviceStop(device, audio_proc_id); + AudioDeviceDestroyIOProcID(device, audio_proc_id); +# else AudioDeviceStop(device, audio_cb); AudioDeviceRemoveIOProc(device, audio_cb); +# endif } #elif defined(WIN32) |
