diff --git a/src/CoreVideo/CVBuffer.cs b/src/CoreVideo/CVBuffer.cs index b19b88b565f7..971c60c35636 100644 --- a/src/CoreVideo/CVBuffer.cs +++ b/src/CoreVideo/CVBuffer.cs @@ -118,9 +118,20 @@ public void RemoveAttachment (NSString key) CVBufferRemoveAttachment (handle, key.Handle); } + [Deprecated (PlatformName.MacOSX, 12, 0)] + [Deprecated (PlatformName.iOS, 15, 0)] + [Deprecated (PlatformName.TvOS, 15, 0)] + [Deprecated (PlatformName.MacCatalyst, 15, 0)] + [Deprecated (PlatformName.WatchOS, 8, 0)] [DllImport (Constants.CoreVideoLibrary)] extern static /* CFTypeRef */ IntPtr CVBufferGetAttachment (/* CVBufferRef */ IntPtr buffer, /* CFStringRef */ IntPtr key, out CVAttachmentMode attachmentMode); + // The new method is the same as the old one but changing the ownership from Get to Copy, so we will use the new version if possible since the + // older method has been deprecatd. + [Watch (8,0), TV (15,0), Mac (12,0), iOS (15,0), MacCatalyst (15,0)] + [DllImport (Constants.CoreVideoLibrary)] + extern static /* CFTypeRef */ IntPtr CVBufferCopyAttachment (/* CVBufferRef */ IntPtr buffer, /* CFStringRef */ IntPtr key, out CVAttachmentMode attachmentMode); + // FIXME: we need to bring the new API to xamcore #if !MONOMAC // any CF object can be attached @@ -128,6 +139,12 @@ public T GetAttachment (NSString key, out CVAttachmentMode attachmentMode) wh { if (key == null) throw new ArgumentNullException ("key"); +#if IOS || __MACCATALYST__ || TVOS + if (UIKit.UIDevice.CurrentDevice.CheckSystemVersion (15, 0)) +#elif WATCH + if (WatchKit.WKInterfaceDevice.CurrentDevice.CheckSystemVersion (8, 0)) +#endif + return Runtime.GetINativeObject (CVBufferCopyAttachment (handle, key.Handle, out attachmentMode), true); return Runtime.GetINativeObject (CVBufferGetAttachment (handle, key.Handle, out attachmentMode), false); } #else @@ -135,16 +152,36 @@ public NSObject GetAttachment (NSString key, out CVAttachmentMode attachmentMode { if (key == null) throw new ArgumentNullException ("key"); - return Runtime.GetNSObject (CVBufferGetAttachment (handle, key.Handle, out attachmentMode)); + if (PlatformHelper.CheckSystemVersion (12, 0)) + return Runtime.GetNSObject (CVBufferCopyAttachment (handle, key.Handle, out attachmentMode), true); + else + return Runtime.GetNSObject (CVBufferGetAttachment (handle, key.Handle, out attachmentMode), false); } #endif + [Deprecated (PlatformName.MacOSX, 12, 0)] + [Deprecated (PlatformName.iOS, 15, 0)] + [Deprecated (PlatformName.TvOS, 15, 0)] + [Deprecated (PlatformName.MacCatalyst, 15, 0)] + [Deprecated (PlatformName.WatchOS, 8, 0)] [DllImport (Constants.CoreVideoLibrary)] extern static /* CFDictionaryRef */ IntPtr CVBufferGetAttachments (/* CVBufferRef */ IntPtr buffer, CVAttachmentMode attachmentMode); + [Watch (8,0), TV (15,0), Mac (12,0), iOS (15,0), MacCatalyst (15,0)] + [DllImport (Constants.CoreVideoLibrary)] + extern static /* CFDictionaryRef */ IntPtr CVBufferCopyAttachments (/* CVBufferRef */ IntPtr buffer, CVAttachmentMode attachmentMode); + public NSDictionary GetAttachments (CVAttachmentMode attachmentMode) { - return (NSDictionary) Runtime.GetNSObject (CVBufferGetAttachments (handle, attachmentMode)); +#if IOS || __MACCATALYST__ || TVOS + if (UIKit.UIDevice.CurrentDevice.CheckSystemVersion (15, 0)) +#elif WATCH + if (WatchKit.WKInterfaceDevice.CurrentDevice.CheckSystemVersion (8, 0)) +#elif MONOMAC + if (PlatformHelper.CheckSystemVersion (12, 0)) +#endif + return Runtime.GetINativeObject (CVBufferCopyAttachments (handle, attachmentMode), true); + return Runtime.GetNSObject (CVBufferGetAttachments (handle, attachmentMode), false); } // There is some API that needs a more strongly typed version of a NSDictionary @@ -188,6 +225,34 @@ public void SetAttachments (NSDictionary theAttachments, CVAttachmentMode attach throw new ArgumentNullException ("theAttachments"); CVBufferSetAttachments (handle, theAttachments.Handle, attachmentMode); } + +#if !NET + [iOS (15,0), TV (15,0), MacCatalyst (15,0), Mac (12,0), Watch (8,0)] +#else + [SupportedOSPlatform ("ios15.0")] + [SupportedOSPlatform ("tvos15.0")] + [SupportedOSPlatform ("maccatalyst15.0")] + [SupportedOSPlatform ("macos12.0")] +#endif + [DllImport (Constants.CoreVideoLibrary)] + [return: MarshalAs (UnmanagedType.U1)] + static extern bool CVBufferHasAttachment (/* CVBufferRef */ IntPtr buffer, /* CFStringRef */ IntPtr key); + +#if !NET + [iOS (15,0), TV (15,0), MacCatalyst (15,0), Mac (12,0), Watch (8,0)] +#else + [SupportedOSPlatform ("ios15.0")] + [SupportedOSPlatform ("tvos15.0")] + [SupportedOSPlatform ("maccatalyst15.0")] + [SupportedOSPlatform ("macos12.0")] +#endif + public bool HasAttachment (NSString key) + { + if (key is null) + throw new ArgumentNullException (nameof (key)); + return CVBufferHasAttachment (handle, key.Handle); + } + #endif // !COREBUILD } } diff --git a/src/CoreVideo/CVDisplayLink.cs b/src/CoreVideo/CVDisplayLink.cs index 4954faa2d1ff..85f394c1286c 100644 --- a/src/CoreVideo/CVDisplayLink.cs +++ b/src/CoreVideo/CVDisplayLink.cs @@ -26,6 +26,7 @@ #if MONOMAC using System; +using System.Diagnostics.CodeAnalysis; using System.Runtime.InteropServices; using ObjCRuntime; @@ -57,6 +58,64 @@ internal CVDisplayLink (IntPtr handle, bool owns) this.handle = handle; } + [Mac (12,0), NoiOS, NoTV, NoMacCatalyst] + [DllImport (Constants.CoreVideoLibrary)] + static extern CVReturn CVDisplayLinkCreateWithCGDisplay (uint displayId, out IntPtr displayLink); + + [Mac (12,0), NoiOS, NoTV, NoMacCatalyst] + public static CVDisplayLink? CreateFromDisplayId (uint displayId, out CVReturn error) + { + error = CVDisplayLinkCreateWithCGDisplay (displayId, out IntPtr handle); + if (error != 0) + return null; + + return new CVDisplayLink (handle, true); + } + + [Mac (12,0), NoiOS, NoTV, NoMacCatalyst] + public static CVDisplayLink? CreateFromDisplayId (uint displayId) + => CreateFromDisplayId (displayId, out var _); + + [Mac (12,0), NoiOS, NoTV, NoMacCatalyst] + [DllImport (Constants.CoreVideoLibrary)] + static extern CVReturn CVDisplayLinkCreateWithCGDisplays (uint[] displayArray, nint count, out IntPtr displayLink); + + [Mac (12,0), NoiOS, NoTV, NoMacCatalyst] + public static CVDisplayLink? CreateFromDisplayIds (uint[] displayIds, out CVReturn error) + { + if (displayIds == null) + throw new ArgumentNullException (nameof (displayIds)); + error = 0; + IntPtr handle = IntPtr.Zero; + error = CVDisplayLinkCreateWithCGDisplays (displayIds, displayIds.Length, out handle); + + if (error != 0) + return null; + + return new CVDisplayLink (handle, true); + } + + [Mac (12,0), NoiOS, NoTV, NoMacCatalyst] + public static CVDisplayLink? CreateFromDisplayIds (uint[] displayIds) + => CreateFromDisplayIds (displayIds, out var _); + + [Mac (12,0), NoiOS, NoTV, NoMacCatalyst] + [DllImport (Constants.CoreVideoLibrary)] + static extern CVReturn CVDisplayLinkCreateWithOpenGLDisplayMask (uint mask, out IntPtr displayLinkOut); + + [Mac (12,0), NoiOS, NoTV, NoMacCatalyst] + public static CVDisplayLink? CreateFromOpenGLMask (uint mask, out CVReturn error) + { + error = CVDisplayLinkCreateWithOpenGLDisplayMask (mask, out IntPtr handle); + if (error != 0) + return null; + return new CVDisplayLink (handle, true); + } + + [Mac (12,0), NoiOS, NoTV, NoMacCatalyst] + public static CVDisplayLink? CreateFromOpenGLMask (uint mask) + => CreateFromOpenGLMask (mask, out var _); + ~CVDisplayLink () { Dispose (false); @@ -192,7 +251,7 @@ public CVReturn GetCurrentTime (out CVTimeStamp outTime) static CVReturn OutputCallback (IntPtr displayLink, ref CVTimeStamp inNow, ref CVTimeStamp inOutputTime, CVOptionFlags flagsIn, ref CVOptionFlags flagsOut, IntPtr displayLinkContext) { GCHandle callbackHandle = GCHandle.FromIntPtr (displayLinkContext); - DisplayLinkOutputCallback func = (DisplayLinkOutputCallback) callbackHandle.Target; + DisplayLinkOutputCallback func = (DisplayLinkOutputCallback) callbackHandle.Target!; CVDisplayLink delegateDisplayLink = new CVDisplayLink(displayLink, false); return func (delegateDisplayLink, ref inNow, ref inOutputTime, flagsIn, ref flagsOut); } @@ -206,6 +265,27 @@ public CVReturn SetOutputCallback (DisplayLinkOutputCallback callback) return ret; } + + [Mac (12,0), NoiOS, NoTV, NoMacCatalyst] + [DllImport (Constants.CoreVideoLibrary)] + static extern nuint CVDisplayLinkGetTypeID (); + + [Mac (12,0), NoiOS, NoTV, NoMacCatalyst] + public static nuint GetTypeId () + => CVDisplayLinkGetTypeID (); + + [Mac (12,0), NoiOS, NoTV, NoMacCatalyst] + [DllImport (Constants.CoreVideoLibrary)] + static extern int CVDisplayLinkTranslateTime (IntPtr displayLink, CVTimeStamp inTime, ref CVTimeStamp outTime); + + [Mac (12,0), NoiOS, NoTV, NoMacCatalyst] + public bool TryTranslateTime (CVTimeStamp inTime, ref CVTimeStamp outTime) + { + if (CVDisplayLinkTranslateTime (this.Handle, inTime, ref outTime) == 0) { + return true; + } + return false; + } } } diff --git a/src/CoreVideo/CVMetalTexture.cs b/src/CoreVideo/CVMetalTexture.cs index 02c7bbf41fb1..f060543313cf 100644 --- a/src/CoreVideo/CVMetalTexture.cs +++ b/src/CoreVideo/CVMetalTexture.cs @@ -8,7 +8,7 @@ // // -#if IOS || TVOS +#if !__WATCHOS__ using System; using System.Runtime.InteropServices; @@ -24,7 +24,7 @@ namespace CoreVideo { #if !NET - [iOS (8,0)] + [iOS (8,0), Mac (12,0), MacCatalyst (15,0)] #endif public class CVMetalTexture : INativeObject, IDisposable { diff --git a/src/CoreVideo/CVMetalTextureCache.cs b/src/CoreVideo/CVMetalTextureCache.cs index 4c45666d79cd..36faa958cf97 100644 --- a/src/CoreVideo/CVMetalTextureCache.cs +++ b/src/CoreVideo/CVMetalTextureCache.cs @@ -8,7 +8,7 @@ // // -#if IOS || TVOS +#if !__WATCHOS__ using System; using System.Runtime.InteropServices; @@ -23,7 +23,7 @@ namespace CoreVideo { #if !NET - [iOS (8,0)] + [iOS (8,0), Mac (10,15), MacCatalyst (15,0)] #endif public partial class CVMetalTextureCache : INativeObject, IDisposable { internal IntPtr handle; @@ -174,4 +174,4 @@ extern static CVReturn CVMetalTextureCacheCreateTextureFromImage ( } } -#endif // IOS || TVOS +#endif // __WATCHOS__ diff --git a/src/corevideo.cs b/src/corevideo.cs index 87f3002ab546..a63f88fdbd54 100644 --- a/src/corevideo.cs +++ b/src/corevideo.cs @@ -436,7 +436,7 @@ interface CVPixelBuffer { [Field ("kCVPixelBufferMetalCompatibilityKey")] NSString MetalCompatibilityKey { get; } - [NoiOS, NoTV, NoWatch, Mac (10,11), MacCatalyst (15,0)] + [NoiOS, NoTV, NoWatch, Mac (10,11), NoMacCatalyst] [Field ("kCVPixelBufferOpenGLTextureCacheCompatibilityKey")] NSString OpenGLTextureCacheCompatibilityKey { get; } @@ -479,6 +479,10 @@ interface CVPixelBuffer { [NoWatch, NoTV, Mac (12,0), iOS (14, 0), MacCatalyst (15,0)] [Field ("kCVPixelBufferVersatileBayerKey_BayerPattern")] NSString VersatileBayerKey_BayerPattern { get; } + + [NoWatch, NoTV, Mac (12,0), iOS (15,0), MacCatalyst (15,0)] + [Field ("kCVPixelBufferProResRAWKey_MetadataExtension")] + NSString MetadataExtension { get; } } [Partial] @@ -497,12 +501,12 @@ interface CVPixelBufferPool : CVImageBuffer { [NoWatch] [Partial] interface CVMetalTextureCache { - [NoMac] + [Mac (12,0)] [Internal] [Field ("kCVMetalTextureCacheMaximumTextureAgeKey")] IntPtr MaxTextureAge { get; } - [TV (13,0), NoWatch, Mac (10,15), iOS (13,0)] + [TV (13,0), NoWatch, iOS (13,0)] [Field ("kCVMetalTextureStorageMode")] NSString StorageMode { get; } } diff --git a/tests/monotouch-test/CoreVideo/CVDisplayLinkTest.cs b/tests/monotouch-test/CoreVideo/CVDisplayLinkTest.cs new file mode 100644 index 000000000000..4e37b9bcc5af --- /dev/null +++ b/tests/monotouch-test/CoreVideo/CVDisplayLinkTest.cs @@ -0,0 +1,104 @@ +#if __MACOS__ +using System; +using CoreGraphics; +using Foundation; +using NUnit.Framework; +using Foundation; +using ObjCRuntime; +using CoreVideo; + +namespace MonoTouchFixtures.CoreVideo { + + [TestFixture] + [Preserve (AllMembers = true)] + public class CVDisplayLinkTest { + + [Test] + public void CreateFromDisplayIdValidIdTest () + { + TestRuntime.AssertSystemVersion (PlatformName.MacOSX, 12, 0); + Assert.DoesNotThrow (() => { + using var displayLink = CVDisplayLink.CreateFromDisplayId ((uint) CGDisplay.MainDisplayID); + Assert.NotNull (displayLink, "Not null"); + Assert.AreEqual (CGDisplay.MainDisplayID, displayLink.GetCurrentDisplay (), "DisplayId"); + }, "Throws"); + } + + [Test] + public void CreateFromDisplayWrongIdTest () + { + TestRuntime.AssertSystemVersion (PlatformName.MacOSX, 12, 0); + Assert.DoesNotThrow (() => { + using var displayLink = CVDisplayLink.CreateFromDisplayId (UInt32.MaxValue); + Assert.Null (displayLink, "null"); + }, "Throws"); + } + + [Test] + public void CreateFromDisplayIdsTest () + { + TestRuntime.AssertSystemVersion (PlatformName.MacOSX, 12, 0); + // we might not have more than one display, therefore we will use an array + // with a single one, there is nothing in the docs that say that we cannot do that + Assert.DoesNotThrow (() => { + using var displayLink = CVDisplayLink.CreateFromDisplayIds (new []{ (uint) CGDisplay.MainDisplayID}); + Assert.NotNull (displayLink, "Not null"); + }, "Throws"); + } + + [Test] + public void CreateFromOpenGLMaskTest () + { + TestRuntime.AssertSystemVersion (PlatformName.MacOSX, 12, 0); + var openGLMask = CGDisplay.GetOpenGLDisplayMask (CGDisplay.MainDisplayID); + Assert.DoesNotThrow (() => { + using var displayLink = CVDisplayLink.CreateFromOpenGLMask ((uint) openGLMask); + Assert.NotNull (displayLink, "Not null"); + }, "Throws"); + } + + [Test] + public void DefaultConstructorTest () => Assert.DoesNotThrow (() => { + using var displayLink = new CVDisplayLink (); + }); + + [Test] + public void SetCurrentDisplayOpenGLTest () => Assert.DoesNotThrow (() => { + using var displayLink = new CVDisplayLink (); + displayLink.SetCurrentDisplay (CGDisplay.MainDisplayID); + }); + + [Test] + public void GetCurrentDisplayTest () => Assert.DoesNotThrow (() => { + using var displayLink = new CVDisplayLink (); + Assert.AreEqual (CGDisplay.MainDisplayID, displayLink.GetCurrentDisplay ()); + }); + + [Test] + public void GetTypeIdTest () + { + TestRuntime.AssertSystemVersion (PlatformName.MacOSX, 12, 0); + Assert.DoesNotThrow (() => { + CVDisplayLink.GetTypeId (); + }, "Throws"); + } + + [Test] + public void TryTranslateTimeValidTest () + { + TestRuntime.AssertSystemVersion (PlatformName.MacOSX, 12, 0); + var outTime = new CVTimeStamp { + Version = 0, + Flags = (1L << 0) | (1L << 1), // kCVTimeStampVideoTimeValid | kCVTimeStampHostTimeValid + }; + using var displayLink = new CVDisplayLink (); + // it has to be running else you will get a crash + if (displayLink.Start () == 0) { + displayLink.GetCurrentTime (out var timeStamp); + Assert.True (displayLink.TryTranslateTime (timeStamp, ref outTime)); + displayLink.Stop (); + } + } + } +} +#endif diff --git a/tests/xtro-sharpie/MacCatalyst-CoreVideo.todo b/tests/xtro-sharpie/MacCatalyst-CoreVideo.todo deleted file mode 100644 index de29048ff018..000000000000 --- a/tests/xtro-sharpie/MacCatalyst-CoreVideo.todo +++ /dev/null @@ -1,6 +0,0 @@ -!missing-field! kCVPixelBufferProResRAWKey_MetadataExtension not bound -!missing-pinvoke! CVBufferCopyAttachment is not bound -!missing-pinvoke! CVBufferCopyAttachments is not bound -!missing-pinvoke! CVBufferHasAttachment is not bound -## appended from unclassified file -!unknown-field! kCVPixelBufferOpenGLTextureCacheCompatibilityKey bound diff --git a/tests/xtro-sharpie/iOS-CoreVideo.todo b/tests/xtro-sharpie/iOS-CoreVideo.todo deleted file mode 100644 index c9399057a160..000000000000 --- a/tests/xtro-sharpie/iOS-CoreVideo.todo +++ /dev/null @@ -1,6 +0,0 @@ -!deprecated-attribute-missing! CVBufferGetAttachment missing a [Deprecated] attribute -!deprecated-attribute-missing! CVBufferGetAttachments missing a [Deprecated] attribute -!missing-field! kCVPixelBufferProResRAWKey_MetadataExtension not bound -!missing-pinvoke! CVBufferCopyAttachment is not bound -!missing-pinvoke! CVBufferCopyAttachments is not bound -!missing-pinvoke! CVBufferHasAttachment is not bound diff --git a/tests/xtro-sharpie/macOS-CoreVideo.ignore b/tests/xtro-sharpie/macOS-CoreVideo.ignore index 710c36923455..68349fcfc9f2 100644 --- a/tests/xtro-sharpie/macOS-CoreVideo.ignore +++ b/tests/xtro-sharpie/macOS-CoreVideo.ignore @@ -1,15 +1,17 @@ -## deprecated in favor of metal +# opengl was deprecated !missing-field! kCVOpenGLBufferHeight not bound !missing-field! kCVOpenGLBufferInternalFormat not bound !missing-field! kCVOpenGLBufferMaximumMipmapLevel not bound -!missing-field! kCVOpenGLBufferTarget not bound -!missing-field! kCVOpenGLBufferWidth not bound !missing-field! kCVOpenGLBufferPoolMaximumBufferAgeKey not bound !missing-field! kCVOpenGLBufferPoolMinimumBufferCountKey not bound +!missing-field! kCVOpenGLBufferTarget not bound +!missing-field! kCVOpenGLBufferWidth not bound !missing-field! kCVOpenGLTextureCacheChromaSamplingModeAutomatic not bound !missing-field! kCVOpenGLTextureCacheChromaSamplingModeBestPerformance not bound !missing-field! kCVOpenGLTextureCacheChromaSamplingModeHighestQuality not bound !missing-field! kCVOpenGLTextureCacheChromaSamplingModeKey not bound +!missing-field! kCVPixelBufferIOSurfaceOpenGLFBOCompatibilityKey not bound +!missing-field! kCVPixelBufferIOSurfaceOpenGLTextureCompatibilityKey not bound !missing-pinvoke! CVOpenGLBufferAttach is not bound !missing-pinvoke! CVOpenGLBufferCreate is not bound !missing-pinvoke! CVOpenGLBufferGetAttributes is not bound @@ -37,24 +39,9 @@ !missing-pinvoke! CVOpenGLTextureRelease is not bound !missing-pinvoke! CVOpenGLTextureRetain is not bound -## unsorted - +# deprecated !missing-field! kCVImageBufferTransferFunction_EBU_3213 not bound !missing-field! kCVImageBufferTransferFunction_SMPTE_C not bound -!missing-field! kCVMetalTextureCacheMaximumTextureAgeKey not bound -!missing-field! kCVPixelBufferIOSurfaceOpenGLFBOCompatibilityKey not bound -!missing-field! kCVPixelBufferIOSurfaceOpenGLTextureCompatibilityKey not bound -!missing-pinvoke! CVDisplayLinkCreateWithCGDisplay is not bound -!missing-pinvoke! CVDisplayLinkCreateWithCGDisplays is not bound -!missing-pinvoke! CVDisplayLinkCreateWithOpenGLDisplayMask is not bound -!missing-pinvoke! CVDisplayLinkGetTypeID is not bound + +# not clear if it is a relacement for CVDisplayLinkSetOutputCallback or not !missing-pinvoke! CVDisplayLinkSetOutputHandler is not bound -!missing-pinvoke! CVDisplayLinkTranslateTime is not bound -!missing-pinvoke! CVMetalTextureCacheCreate is not bound -!missing-pinvoke! CVMetalTextureCacheCreateTextureFromImage is not bound -!missing-pinvoke! CVMetalTextureCacheFlush is not bound -!missing-pinvoke! CVMetalTextureGetCleanTexCoords is not bound -!missing-pinvoke! CVMetalTextureGetTexture is not bound -!missing-pinvoke! CVMetalTextureIsFlipped is not bound -!missing-pinvoke! CVBufferCopyAttachment is not bound -!missing-pinvoke! CVBufferCopyAttachments is not bound diff --git a/tests/xtro-sharpie/macOS-CoreVideo.todo b/tests/xtro-sharpie/macOS-CoreVideo.todo deleted file mode 100644 index 9f060984caaf..000000000000 --- a/tests/xtro-sharpie/macOS-CoreVideo.todo +++ /dev/null @@ -1,2 +0,0 @@ -!missing-field! kCVPixelBufferProResRAWKey_MetadataExtension not bound -!missing-pinvoke! CVBufferHasAttachment is not bound diff --git a/tests/xtro-sharpie/tvOS-CoreVideo.todo b/tests/xtro-sharpie/tvOS-CoreVideo.todo deleted file mode 100644 index e8aef3c7eb0b..000000000000 --- a/tests/xtro-sharpie/tvOS-CoreVideo.todo +++ /dev/null @@ -1,6 +0,0 @@ -!deprecated-attribute-missing! CVBufferGetAttachment missing a [Deprecated] attribute -!deprecated-attribute-missing! CVBufferGetAttachments missing a [Deprecated] attribute -!missing-pinvoke! CVBufferCopyAttachment is not bound -!missing-pinvoke! CVBufferCopyAttachments is not bound -!missing-pinvoke! CVBufferHasAttachment is not bound -## appended from unclassified file diff --git a/tests/xtro-sharpie/watchOS-CoreVideo.todo b/tests/xtro-sharpie/watchOS-CoreVideo.todo deleted file mode 100644 index e8aef3c7eb0b..000000000000 --- a/tests/xtro-sharpie/watchOS-CoreVideo.todo +++ /dev/null @@ -1,6 +0,0 @@ -!deprecated-attribute-missing! CVBufferGetAttachment missing a [Deprecated] attribute -!deprecated-attribute-missing! CVBufferGetAttachments missing a [Deprecated] attribute -!missing-pinvoke! CVBufferCopyAttachment is not bound -!missing-pinvoke! CVBufferCopyAttachments is not bound -!missing-pinvoke! CVBufferHasAttachment is not bound -## appended from unclassified file