From dae15696bd646390e8aaf226eed251d348ac918e Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Wed, 3 Feb 2021 15:01:06 +0100 Subject: [PATCH] [MediaToolbox] Don't use Action in reverse P/Invokes. CoreCLR doesn't support it. Ref: https://github.com/dotnet/runtime/issues/32963 --- src/MediaToolbox/MTAudioProcessingTap.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/MediaToolbox/MTAudioProcessingTap.cs b/src/MediaToolbox/MTAudioProcessingTap.cs index 4dcefdd01a37..1863af60ec2b 100644 --- a/src/MediaToolbox/MTAudioProcessingTap.cs +++ b/src/MediaToolbox/MTAudioProcessingTap.cs @@ -49,6 +49,8 @@ public class MTAudioProcessingTap : INativeObject #endif { #if !COREBUILD + delegate void Action_IntPtr (IntPtr arg); + // MTAudioProcessingTapCallbacks [StructLayout (LayoutKind.Sequential, Pack = 1)] unsafe struct Callbacks @@ -57,9 +59,9 @@ unsafe struct Callbacks /* int */ int version; // kMTAudioProcessingTapCallbacksVersion_0 == 0 public /* void* */ IntPtr clientInfo; public /* MTAudioProcessingTapInitCallback */ MTAudioProcessingTapInitCallbackProxy init; - public /* MTAudioProcessingTapFinalizeCallback */ Action finalize; + public /* MTAudioProcessingTapFinalizeCallback */ Action_IntPtr finalize; public /* MTAudioProcessingTapPrepareCallback */ MTAudioProcessingTapPrepareCallbackProxy prepare; - public /* MTAudioProcessingTapUnprepareCallback */ Action unprepare; + public /* MTAudioProcessingTapUnprepareCallback */ Action_IntPtr unprepare; public /* MTAudioProcessingTapProcessCallback */ MTAudioProcessingTapProcessCallbackProxy process; #pragma warning restore 169 } @@ -217,7 +219,7 @@ static void ProcessProxy (IntPtr tap, IntPtr numberFrames, MTAudioProcessingTapF numberFramesOut = (IntPtr) numberOut; } - [MonoPInvokeCallback (typeof (Action))] + [MonoPInvokeCallback (typeof (Action_IntPtr))] static void FinalizeProxy (IntPtr tap) { MTAudioProcessingTap apt; @@ -235,7 +237,7 @@ static void PrepareProxy (IntPtr tap, IntPtr maxFrames, ref AudioStreamBasicDesc apt.callbacks.Prepare (apt, (nint) maxFrames, ref processingFormat); } - [MonoPInvokeCallback (typeof (Action))] + [MonoPInvokeCallback (typeof (Action_IntPtr))] static void UnprepareProxy (IntPtr tap) { MTAudioProcessingTap apt;