• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
AUEventListenerCreate/Property Listeners
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

AUEventListenerCreate/Property Listeners


  • Subject: AUEventListenerCreate/Property Listeners
  • From: Art Gillespie <email@hidden>
  • Date: Mon, 26 Nov 2007 22:19:27 -0700

I'm having trouble with property listeners created with the AUEventListenerCreate/AUEventListenerAddEventType not being removed from my AU. In my view's CreateUI I have the following:

//-----

CFRunLoopRef runLoop =
(CFRunLoopRef)GetCFRunLoopFromEventLoop(GetCurrentEventLoop());
OSStatus err = AUEventListenerCreate ( MyEventListener, this,
runLoop, kCFRunLoopCommonModes, 0.05, 0.05,
&mAUEventListener );
AudioUnitEvent auEvent;
auEvent.mEventType = kAudioUnitEvent_PropertyChange;
auEvent.mArgument.mProperty.mAudioUnit = mEditAudioUnit;
auEvent.mArgument.mProperty.mPropertyID = kGFProperty_MessageQueueNext;
auEvent.mArgument.mProperty.mScope = kAudioUnitScope_Global;
auEvent.mArgument.mProperty.mElement = 0;
err = AUEventListenerAddEventType ( mAUEventListener, this, &auEvent );


//------

I notice this causes my AU's AddPropertyListener() to be called. AULab also adds two Property Listeners, so that once my AU's view is visible, my AU's mPropertyListeners.size() is 3.

I have the following code in my view's dtor:

//------

if ( mAUEventListener )
{
AudioUnitEvent auEvent;
auEvent.mEventType = kAudioUnitEvent_PropertyChange;
auEvent.mArgument.mProperty.mAudioUnit = mEditAudioUnit;
auEvent.mArgument.mProperty.mPropertyID = kGFProperty_MessageQueueNext;
auEvent.mArgument.mProperty.mScope = kAudioUnitScope_Global;
auEvent.mArgument.mProperty.mElement = 0;
OSStatus err = AUEventListenerRemoveEventType ( mAUEventListener, this, &auEvent );
err = AUListenerDispose(mAUEventListener);
mAUEventListener = NULL;
}


//------

I'd expect that this would cause my AU's RemovePropertyListener() to be called but it never is. When I re-open the AU's view, I see that my AU's mPropertyListeners.size() is 6. If I call PropertyChanged() from my AU at this point, it crashes, presumably because it has references to listeners that no longer exist. As far as I can tell, this only happens on 10.5+.

I'm using CoreAudio SDK 1.4.3 with XCode 3 compiling against the 10.4 SDK and I'm seeing this behavior in AULab on 10.5.1. Any ideas? Am I disposing of the listener incorrectly?

Thanks,

Art
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


  • Prev by Date: Re: Help with monitoring system-wide audio
  • Next by Date: Re: Help with monitoring system-wide audio
  • Previous by thread: Re: Help with monitoring system-wide audio
  • Next by thread: Re: AUEventListenerCreate/Property Listeners
  • Index(es):
    • Date
    • Thread