minor cleanup
This commit is contained in:
parent
87803ffcba
commit
6eb4ec4c0d
|
@ -172,7 +172,7 @@ namespace BizHawk.Emulation.Cores.Waterbox
|
||||||
// todo: bleh
|
// todo: bleh
|
||||||
private GCHandle _frameAdvanceInputLock;
|
private GCHandle _frameAdvanceInputLock;
|
||||||
|
|
||||||
private volatile bool _frameThreadProcActive;
|
private Task _frameThreadProcActive;
|
||||||
|
|
||||||
protected override LibWaterboxCore.FrameInfo FrameAdvancePrep(IController controller, bool render, bool rendersound)
|
protected override LibWaterboxCore.FrameInfo FrameAdvancePrep(IController controller, bool render, bool rendersound)
|
||||||
{
|
{
|
||||||
|
@ -193,18 +193,13 @@ namespace BizHawk.Emulation.Cores.Waterbox
|
||||||
};
|
};
|
||||||
if (_frameThreadStart != null)
|
if (_frameThreadStart != null)
|
||||||
{
|
{
|
||||||
_frameThreadProcActive = true;
|
_frameThreadProcActive = Task.Run(_frameThreadStart);
|
||||||
Task.Run(() =>
|
|
||||||
{
|
|
||||||
_frameThreadStart();
|
|
||||||
_frameThreadProcActive = false;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
protected override void FrameAdvancePost()
|
protected override void FrameAdvancePost()
|
||||||
{
|
{
|
||||||
while (_frameThreadProcActive)
|
if (_frameThreadProcActive != null)
|
||||||
{
|
{
|
||||||
// The nyma core unmanaged code should always release the threadproc to completion
|
// The nyma core unmanaged code should always release the threadproc to completion
|
||||||
// before returning from Emulate, but even when it does occasionally the threadproc
|
// before returning from Emulate, but even when it does occasionally the threadproc
|
||||||
|
@ -212,8 +207,9 @@ namespace BizHawk.Emulation.Cores.Waterbox
|
||||||
|
|
||||||
// It MUST be allowed to finish now, because the theadproc doesn't know about or participate
|
// It MUST be allowed to finish now, because the theadproc doesn't know about or participate
|
||||||
// in the waterbox core lockout (IMonitor) directly -- it assumes the parent has handled that
|
// in the waterbox core lockout (IMonitor) directly -- it assumes the parent has handled that
|
||||||
|
_frameThreadProcActive.Wait();
|
||||||
|
_frameThreadProcActive = null;
|
||||||
}
|
}
|
||||||
_frameAdvanceInputLock.Free();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public DisplayType Region { get; protected set; }
|
public DisplayType Region { get; protected set; }
|
||||||
|
|
Loading…
Reference in New Issue