Re: IOAudioEngine::createUserClient on Intel iMAC
Re: IOAudioEngine::createUserClient on Intel iMAC
- Subject: Re: IOAudioEngine::createUserClient on Intel iMAC
- From: Carlos Silva <email@hidden>
- Date: Wed, 22 Mar 2006 14:48:46 -0500
Thanks for the info B.J.
Unfortunately, I do not seem to have the header that you speak about.
In my 10.4.0u SDK, my IOAudioEngine.h does not have :
IOReturn createUserClient(task_t task, void *securityID, UInt32 type,
IOAudioEngineUserClient **newUserClient, OSDictionary *properties);
I do not see either the extra parameter for the initWithAudioEngine()
of the IOAudioUserClient.h .
I checked if I had all the latest updates for XCode; I have version 2.2.
Any further help would be appreciated.
Carlos
On 22-Mar-06, at 1:56 PM, B.J. Buchalter wrote:
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