Skip to content

Commit 25a5449

Browse files
committed
Work around mono marshalling issue
Fixes #2116, but it'd be nice if mono fixed it too
1 parent f21132a commit 25a5449

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

src/BizHawk.Emulation.Cores/Waterbox/LibNymaCore.cs

+6-1
Original file line numberDiff line numberDiff line change
@@ -176,8 +176,13 @@ public struct Track
176176
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 101)]
177177
public Track[] Tracks;
178178
}
179+
/// <summary>
180+
/// Callback to receive a disk TOC
181+
/// </summary>
182+
/// <param name="disk"></param>
183+
/// <param name="dest">Deposit a LibNymaCore.TOC here</param>
179184
[UnmanagedFunctionPointer(CC)]
180-
public delegate void CDTOCCallback(int disk, [In, Out]TOC toc);
185+
public delegate void CDTOCCallback(int disk, IntPtr dest);
181186
[UnmanagedFunctionPointer(CC)]
182187
public delegate void CDSectorCallback(int disk, int lba, IntPtr dest);
183188
[BizImport(CC)]

src/BizHawk.Emulation.Cores/Waterbox/NymaCore.Cd.cs

+4-2
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,11 @@ private static void SetupTOC(LibNymaCore.TOC t, DiscTOC tin)
3232
}
3333
}
3434

35-
private void CDTOCCallback(int disk, [In, Out]LibNymaCore.TOC t)
35+
private void CDTOCCallback(int disk, IntPtr dest)
3636
{
37-
SetupTOC(t, _disks[disk].TOC);
37+
var toc = new LibNymaCore.TOC { Tracks = new LibNymaCore.TOC.Track[101] };
38+
SetupTOC(toc, _disks[disk].TOC);
39+
Marshal.StructureToPtr(toc, dest, false);
3840
}
3941
private void CDSectorCallback(int disk, int lba, IntPtr dest)
4042
{

0 commit comments

Comments
 (0)