(eba811de) Unstable 0.9.703.0

This commit is contained in:
Juan Pablo Arce
2020-02-04 11:54:57 -03:00
parent 15499cb704
commit 08ab6185c4
100 changed files with 2162 additions and 1520 deletions

View File

@@ -56,13 +56,41 @@ namespace Steamworks
#region FunctionMeta
[UnmanagedFunctionPointer( Platform.MemberConvention )]
private delegate HServerListRequest FRequestInternetServerList( IntPtr self, AppId iApp, [In,Out] ref MatchMakingKeyValuePair[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse );
private delegate HServerListRequest FRequestInternetServerList( IntPtr self, AppId iApp, IntPtr ppchFilters, uint nFilters, IntPtr pRequestServersResponse );
private FRequestInternetServerList _RequestInternetServerList;
#endregion
internal HServerListRequest RequestInternetServerList( AppId iApp, [In,Out] ref MatchMakingKeyValuePair[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse )
internal HServerListRequest RequestInternetServerList( AppId iApp, MatchMakingKeyValuePair[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse )
{
var returnValue = _RequestInternetServerList( Self, iApp, ref ppchFilters, nFilters, pRequestServersResponse );
int numPtrs = ppchFilters.Length;
if (numPtrs <= 0) { numPtrs = 1; }
IntPtr[] filterPtrs = new IntPtr[numPtrs];
GCHandle?[] filterHandles = new GCHandle?[numPtrs];
for (int i=0;i<numPtrs; i++)
{
if (i < ppchFilters.Length)
{
filterHandles[i] = GCHandle.Alloc(ppchFilters[i], GCHandleType.Pinned);
filterPtrs[i] = filterHandles[i]?.AddrOfPinnedObject() ?? IntPtr.Zero;
}
else
{
filterHandles[i] = null;
filterPtrs[i] = IntPtr.Zero;
}
}
GCHandle arrHandle = GCHandle.Alloc(filterPtrs, GCHandleType.Pinned);
var returnValue = _RequestInternetServerList( Self, iApp, arrHandle.AddrOfPinnedObject(), nFilters, pRequestServersResponse );
arrHandle.Free();
for (int i = 0; i < numPtrs; i++)
{
filterHandles[i]?.Free();
}
return returnValue;
}

View File

@@ -12,7 +12,7 @@ namespace Steamworks.ServerList
{
var filters = GetFilters();
request = Internal.RequestInternetServerList( AppId.Value, ref filters, (uint)filters.Length, IntPtr.Zero );
request = Internal.RequestInternetServerList( AppId.Value, filters, (uint)filters.Length, IntPtr.Zero );
}
}
}