rocket: fix P/Invoke sig for bool

Summary:
Fixes the `bool` marshaling issue as describe on [MSDN](https://blogs.msdn.microsoft.com/jaredpar/2008/10/14/pinvoke-and-bool-or-should-i-say-bool/) so C# will now act properly.
Closes https://github.com/facebook/css-layout/pull/226

Reviewed By: IanChilds

Differential Revision: D3967349

Pulled By: emilsjolander

fbshipit-source-id: f61d3bb39eb1b0b6e749629825234615b425e930
This commit is contained in:
mattpodwysocki
2016-10-05 02:33:57 -07:00
committed by Facebook Github Bot
parent 11f85ce91e
commit 23f2878808
2 changed files with 10 additions and 7 deletions

View File

@@ -54,6 +54,9 @@ namespace Facebook.CSSLayout
_isDisposed = true; _isDisposed = true;
Native.CSSNodeFree(_cssNode); Native.CSSNodeFree(_cssNode);
GCHandle.FromIntPtr(_context).Free(); GCHandle.FromIntPtr(_context).Free();
_children = null;
_parent = null;
_measureFunction = null;
} }
} }
@@ -68,11 +71,7 @@ namespace Facebook.CSSLayout
public void Reset() public void Reset()
{ {
Native.CSSNodeFree(_cssNode); Dispose(true);
GCHandle.FromIntPtr(_context).Free();
_children = null;
_parent = null;
_measureFunction = null;
} }
public bool IsDirty public bool IsDirty

View File

@@ -47,12 +47,14 @@ namespace Facebook.CSSLayout
public static extern void CSSNodeMarkDirty(IntPtr node); public static extern void CSSNodeMarkDirty(IntPtr node);
[DllImport(DllName)] [DllImport(DllName)]
[return: MarshalAs(UnmanagedType.I1)]
public static extern bool CSSNodeIsDirty(IntPtr node); public static extern bool CSSNodeIsDirty(IntPtr node);
[DllImport(DllName)] [DllImport(DllName)]
public static extern void CSSNodePrint(IntPtr node, CSSPrintOptions options); public static extern void CSSNodePrint(IntPtr node, CSSPrintOptions options);
[DllImport(DllName)] [DllImport(DllName)]
[return: MarshalAs(UnmanagedType.I1)]
public static extern bool CSSValueIsUndefined(float value); public static extern bool CSSValueIsUndefined(float value);
#region CSS_NODE_PROPERTY #region CSS_NODE_PROPERTY
@@ -76,15 +78,17 @@ namespace Facebook.CSSLayout
public static extern CSSPrintFunc CSSNodeGePrintFunc(IntPtr node); public static extern CSSPrintFunc CSSNodeGePrintFunc(IntPtr node);
[DllImport(DllName)] [DllImport(DllName)]
public static extern void CSSNodeSetIsTextnode(IntPtr node, bool isTextNode); public static extern void CSSNodeSetIsTextnode(IntPtr node, [MarshalAs(UnmanagedType.I1)] bool isTextNode);
[DllImport(DllName)] [DllImport(DllName)]
[return: MarshalAs(UnmanagedType.I1)]
public static extern bool CSSNodeGetIsTextnode(IntPtr node); public static extern bool CSSNodeGetIsTextnode(IntPtr node);
[DllImport(DllName)] [DllImport(DllName)]
public static extern void CSSNodeSetHasNewLayout(IntPtr node, bool hasNewLayout); public static extern void CSSNodeSetHasNewLayout(IntPtr node, [MarshalAs(UnmanagedType.I1)] bool hasNewLayout);
[DllImport(DllName)] [DllImport(DllName)]
[return: MarshalAs(UnmanagedType.I1)]
public static extern bool CSSNodeGetHasNewLayout(IntPtr node); public static extern bool CSSNodeGetHasNewLayout(IntPtr node);
#endregion #endregion