-
Notifications
You must be signed in to change notification settings - Fork 516
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[AudioToolbox] Add support for xcode 14 beta6. #15877
Changes from 2 commits
0094948
f35420d
7397466
c9ff13f
d38d6e4
501c2e1
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -523,6 +523,156 @@ public double LastActiveTime { | |
#endif | ||
|
||
#if IOS || MONOMAC | ||
|
||
#if NET | ||
[SupportedOSPlatform ("macos13.0")] | ||
[SupportedOSPlatform ("ios16.0")] | ||
[SupportedOSPlatform ("maccatalyst16.0")] | ||
[UnsupportedOSPlatform ("tvos")] | ||
#else | ||
[NoWatch] | ||
[NoTV] | ||
[Mac (13,0)] | ||
[iOS (16,0)] | ||
#endif | ||
[DllImport (Constants.AudioUnitLibrary)] | ||
static extern int AudioComponentCopyConfigurationInfo (IntPtr /* AudioComponent */ inComponent, out /* CFDictionaryRef** */ IntPtr outConfigurationInfo); | ||
|
||
#if NET | ||
[SupportedOSPlatform ("macos13.0")] | ||
[SupportedOSPlatform ("ios16.0")] | ||
[SupportedOSPlatform ("maccatalyst16.0")] | ||
[UnsupportedOSPlatform ("tvos")] | ||
#else | ||
[NoWatch] | ||
[NoTV] | ||
[Mac (13,0)] | ||
[iOS (16,0)] | ||
#endif | ||
public NSDictionary? ConfigurationInfo { | ||
get { | ||
var success = AudioComponentCopyConfigurationInfo (GetCheckedHandle (), out var dictPtr); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This one is also needs an overload (or really a method, since this is a property) |
||
if (success == 0) { | ||
return Runtime.GetNSObject<NSDictionary> (dictPtr, owns: true); | ||
} | ||
return null; | ||
} | ||
} | ||
|
||
#if NET | ||
[SupportedOSPlatform ("macos13.0")] | ||
[SupportedOSPlatform ("ios16.0")] | ||
[SupportedOSPlatform ("maccatalyst16.0")] | ||
[UnsupportedOSPlatform ("tvos")] | ||
#else | ||
[NoWatch] | ||
[NoTV] | ||
[Mac (13,0)] | ||
[iOS (16,0)] | ||
[MacCatalyst (16,0)] | ||
#endif | ||
[DllImport (Constants.AudioUnitLibrary)] | ||
static extern int AudioComponentValidate (IntPtr /* AudioComponent* */ inComponent, IntPtr /* CFDictionaryRef* */ inValidationParameters, | ||
out AudioComponentValidationResult outValidationResult); | ||
|
||
#if NET | ||
[SupportedOSPlatform ("macos13.0")] | ||
[SupportedOSPlatform ("ios16.0")] | ||
[SupportedOSPlatform ("maccatalyst16.0")] | ||
[UnsupportedOSPlatform ("tvos")] | ||
#else | ||
[NoWatch] | ||
[NoTV] | ||
[Mac (13,0)] | ||
[iOS (16,0)] | ||
[MacCatalyst (16,0)] | ||
#endif | ||
public AudioComponentValidationResult Validate (NSDictionary validationParameters, out int resultCode) { | ||
resultCode = AudioComponentValidate (GetCheckedHandle (), validationParameters.GetHandle (), out var result); | ||
if (resultCode == 0) | ||
return result; | ||
return AudioComponentValidationResult.Unknown; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Your managed bindings have one thing in common: they don't expose the returned OSStatus from the native functions. This return value can be valuable when trying to diagnose why calls to these methods fail, so we often provide another overload that users can use to get this value. In this particular case that could be something like: public AudioComponentValidationResult Validate (NSDictionary validationParameters, out int resultCode)
{
...
} This goes for all the new API. |
||
} | ||
|
||
#if NET | ||
[SupportedOSPlatform ("macos13.0")] | ||
[SupportedOSPlatform ("ios16.0")] | ||
[SupportedOSPlatform ("maccatalyst16.0")] | ||
[UnsupportedOSPlatform ("tvos")] | ||
#else | ||
[NoWatch] | ||
[NoTV] | ||
[Mac (13,0)] | ||
[iOS (16,0)] | ||
[MacCatalyst (16,0)] | ||
#endif | ||
public AudioComponentValidationResult Validate (NSDictionary validationParameters) => Validate (validationParameters, out var _); | ||
|
||
delegate void TrampolineCallback (IntPtr blockPtr, AudioComponentValidationResult result, IntPtr dictionary); | ||
|
||
static unsafe readonly TrampolineCallback static_action = TrampolineAction; | ||
|
||
[MonoPInvokeCallback (typeof (TrampolineCallback))] | ||
static void TrampolineAction (IntPtr blockPtr, AudioComponentValidationResult result, IntPtr dictionary) | ||
{ | ||
var del = BlockLiteral.GetTarget<Action<AudioComponentValidationResult, NSDictionary?>> (blockPtr); | ||
if (del is not null) | ||
del (result, Runtime.GetNSObject<NSDictionary>(dictionary)); | ||
} | ||
|
||
#if NET | ||
[SupportedOSPlatform ("macos13.0")] | ||
[SupportedOSPlatform ("ios16.0")] | ||
[SupportedOSPlatform ("maccatalyst16.0")] | ||
[UnsupportedOSPlatform ("tvos")] | ||
#else | ||
[NoWatch] | ||
[NoTV] | ||
[Mac (13,0)] | ||
[iOS (16,0)] | ||
#endif | ||
[DllImport (Constants.AudioUnitLibrary)] | ||
static extern int AudioComponentValidateWithResults (IntPtr /* AudioComponent* */ inComponent, IntPtr /* CFDictionaryRef* */ inValidationParameters, ref BlockLiteral inCompletionHandler); | ||
|
||
#if NET | ||
[SupportedOSPlatform ("macos13.0")] | ||
[SupportedOSPlatform ("ios16.0")] | ||
[SupportedOSPlatform ("maccatalyst16.0")] | ||
[UnsupportedOSPlatform ("tvos")] | ||
#else | ||
[NoWatch] | ||
[NoTV] | ||
[Mac (13,0)] | ||
[iOS (16,0)] | ||
#endif | ||
public void ValidateAsync (NSDictionary validationParameters, | ||
Action<AudioComponentValidationResult, NSDictionary?> onCompletion, out int resultCode) { | ||
if (onCompletion is null) | ||
ObjCRuntime.ThrowHelper.ThrowArgumentNullException (nameof (onCompletion)); | ||
|
||
var block_handler= new BlockLiteral (); | ||
block_handler.SetupBlockUnsafe (static_action, onCompletion); | ||
try { | ||
resultCode = AudioComponentValidateWithResults (GetCheckedHandle (), validationParameters.GetHandle (), ref block_handler); | ||
} finally { | ||
block_handler.CleanupBlock (); | ||
} | ||
} | ||
|
||
#if NET | ||
[SupportedOSPlatform ("macos13.0")] | ||
[SupportedOSPlatform ("ios16.0")] | ||
[SupportedOSPlatform ("maccatalyst16.0")] | ||
[UnsupportedOSPlatform ("tvos")] | ||
#else | ||
[NoWatch] | ||
[NoTV] | ||
[Mac (13,0)] | ||
[iOS (16,0)] | ||
#endif | ||
public void ValidateAsync (NSDictionary validationParameters, | ||
Action<AudioComponentValidationResult, NSDictionary?> onCompletion) => ValidateAsync (validationParameters, onCompletion, out var _); | ||
|
||
#if NET | ||
[SupportedOSPlatform ("macos10.13")] | ||
[SupportedOSPlatform ("ios11.0")] | ||
|
@@ -608,7 +758,8 @@ public AudioComponentInfo[]? ComponentList { | |
} | ||
} | ||
} | ||
#endif | ||
|
||
#endif // IOS || MONOMAC | ||
|
||
#endif // !COREBUILD | ||
} | ||
|
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm why add tv and ios support if none of the enums support it?