Skip to content

Commit

Permalink
[Xcode9] Add IOSurface bindings
Browse files Browse the repository at this point in the history
  • Loading branch information
migueldeicaza committed Jul 25, 2017
1 parent a1c56c2 commit feb9b6b
Show file tree
Hide file tree
Showing 6 changed files with 381 additions and 3 deletions.
1 change: 1 addition & 0 deletions src/Constants.iOS.cs.in
Original file line number Diff line number Diff line change
Expand Up @@ -115,5 +115,6 @@ namespace MonoTouch {
public const string VisionLibrary = "/System/Library/Frameworks/Vision.framework/Vision";
public const string FileProviderLibrary = "/System/Library/Frameworks/FileProvider.framework/FileProvider";
public const string FileProviderUILibrary = "/System/Library/Frameworks/FileProviderUI.framework/FileProviderUI";
public const string IOSurfaceLibrary = "/System/Library/Frameworks/IOSurface.framework/IOSurface";
}
}
1 change: 1 addition & 0 deletions src/Constants.mac.cs.in
Original file line number Diff line number Diff line change
Expand Up @@ -129,5 +129,6 @@ namespace MonoMac {
// macOS 10.13
public const string CoreMLLibrary = "/System/Library/Frameworks/CoreML.framework/CoreML";
public const string VisionLibrary = "/System/Library/Frameworks/Vision.framework/Vision";
public const string IOSurfaceLibrary = "/System/Library/Frameworks/IOSurface.framework/IOSurface";
}
}
38 changes: 38 additions & 0 deletions src/IOSurface/IODefs.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
//
// IOSurface
//
// Authors:
// Miguel de Icaza ([email protected])
//
// Copyright 2017 Microsoft
//

using System;
using XamCore.ObjCRuntime;

namespace XamCore.IOSurface {

public enum IOSurfaceLockOptions : uint {
ReadOnly = 1,
AvoidSync = 2
}

public enum IOSurfacePurgeabilityState : uint {
NonVolatile = 0,
Volatile = 1,
Empty = 2,
KeepCurrent = 3
}

// To be used with kIOSurfaceCacheMode or IOSurfacePropertyKeyCacheMode
public enum IOSurfaceMemoryMap {
DefaultCache = 0,
InhibitCache = 1 << 8,
WriteThruCache = 2 << 8,
CopybackCache = 3 << 8,
WriteCombineCache = 4 << 8,
CopybackInnerCache = 5 << 8
};


}
90 changes: 90 additions & 0 deletions src/IOSurface/IOSurface.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
//
// IOSurface.cs
//
// Copyright 2016 Microsoft
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
#if XAMCORE_2_0
using System;
using System.Runtime.InteropServices;
using XamCore.CoreFoundation;
using XamCore.ObjCRuntime;

namespace XamCore.IOSurface {
public partial class IOSurface {

// kern_return_t
[iOS (10,0), Mac(10,12)]
public int Lock (IOSurfaceLockOptions options, ref int seed)
{
unsafe {
fixed (int *p = &seed){
return _Lock (options, (IntPtr) p);
}
}
}

// kern_return_t
[iOS (10,0), Mac(10,12)]
public int Lock (IOSurfaceLockOptions options)
{
return _Lock (options, IntPtr.Zero);
}

// kern_return_t
[iOS (10,0), Mac(10,12)]
public int Unlock (IOSurfaceLockOptions options, ref int seed)
{
unsafe {
fixed (int *p = &seed){
return _Unlock (options, (IntPtr) p);
}
}
}

// kern_return_t
[iOS (10,0), Mac(10,12)]
public int Unlock (IOSurfaceLockOptions options)
{
return _Unlock (options, IntPtr.Zero);
}

#if !MONOMAC
// kern_return_t
[iOS (11, 0)]
public int SetPurgeable (IOSurfacePurgeabilityState newState, ref IOSurfacePurgeabilityState oldState)
{
unsafe {
fixed (IOSurfacePurgeabilityState *p = &oldState){
return _SetPurgeable (newState, (IntPtr) p);
}
}
}

[iOS (11, 0)]
public int SetPurgeable (IOSurfacePurgeabilityState newState)
{
return _SetPurgeable (newState, IntPtr.Zero);
}
#endif
}
}
#endif
15 changes: 12 additions & 3 deletions src/frameworks.sources
Original file line number Diff line number Diff line change
Expand Up @@ -863,6 +863,13 @@ INTENTS_SOURCES = \
Intents/INStartWorkoutIntent.cs \
Intents/INSaveProfileInCarIntent.cs \

# IOSurface
IOSURFACE_CORE_SOURCES = \
IOSurface/IODefs.cs

IOSURFACE_SOURCES = \
IOSurface/IOSurface.cs

# JavaScriptCore

JAVASCRIPTCORE_SOURCES = \
Expand Down Expand Up @@ -1587,7 +1594,8 @@ MAC_FRAMEWORKS = \
GLKit \
ImageIO \
ImageKit \
Intents \
Intents \
IOSurface \
JavaScriptCore \
LocalAuthentication \
MapKit \
Expand Down Expand Up @@ -1670,6 +1678,7 @@ IOS_FRAMEWORKS = \
ImageIO \
Intents \
IntentsUI \
IOSurface \
JavaScriptCore \
LocalAuthentication \
MapKit \
Expand Down Expand Up @@ -1781,12 +1790,12 @@ TVOS_FRAMEWORKS = \
StoreKit \
SystemConfiguration \
TVMLKit \
TVServices \
TVServices \
UIKit \
UserNotifications \
VideoSubscriberAccount \
VideoToolbox \
Vision \
Vision

#
# Compute the SOURCES variables.
Expand Down
Loading

0 comments on commit feb9b6b

Please sign in to comment.