Re: IOAudioEngine::createUserClient on Intel iMAC
Re: IOAudioEngine::createUserClient on Intel iMAC
- Subject: Re: IOAudioEngine::createUserClient on Intel iMAC
- From: "B.J. Buchalter" <email@hidden>
- Date: Wed, 22 Mar 2006 13:56:44 -0500
- Thread-topic: IOAudioEngine::createUserClient on Intel iMAC
on 3/22/06 1:40 PM, Carlos Silva at email@hidden wrote:
> Hello,
>
> We have developed a CoreAudio KEXT that creates its own user client by
> overloading the IOAudioEngine::createUserClient, and calling the
> IOAudioUserClient::withAudioEngine of a custom overloaded IOAudioUserClient.
>
> On an Intel iMAC, the IOAudioEngine::createUserClient is not called at all but
> IOAudioEngine::newUserClient is called.
> This works fine i.e. createUserClient is called on a PPC G5.
There is a RADAR on this: rdar://4423103 -- you might want to check with DTS
and see if you can get any more info, but, that being said, this is how you
have to deal with this:
Basically, what happened is that the createUserClient path is called with a
different signature to support Rosetta. Look at the headers in the 10.4.0u
SDK -- there is a new method for IOAudioEngine::createUserClient with an
extra parameter.
IOReturn createUserClient(task_t task, void *securityID, UInt32 type,
IOAudioEngineUserClient **newUserClient, OSDictionary *properties);
You need to override this version of createUserClient (as well as the old
one for PPC builds), and you need to make sure that you pass the properties
parameter into your eventual call to initWithAudioEngine().
Please note that the version of the engine and headers that supports the
extra parameter in initWithAudioEngine() is only in 10.4.0u, so you will
need to special case that code for the __i386__ build of your driver since
the PPC build needs to use the 10.4.x or 10.3.9 SDK -- which does not have
the initWithAudioEngine() with the new parameter.
All of this is required to get you a custom user client on Intel, and is
also required to support Rosetta clients if you have a custom user client.
I ran into this issue as well. One of the CA guys helped me to figure it out
at one of the UB kitchens. At least there is a known answer to this issue
now. AFAIK, this change is still not documented.
Any way to get a technote or a Q&A about this on the developer site guys?
> Has the behavior changed?
Yes -- a new entry point to support Rosetta.
> How do we create our own user client then?
See above.
Best regards,
B.J. Buchalter
Metric Halo
5 Donovan Drive
Hopewell Junction, NY 12533 USA
tel +1 845 223-6112
fax +1 603 250-2451
_______________________________________________
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