From 4a72655d1761558117dd5d74e7a0fe66d0fc5fe2 Mon Sep 17 00:00:00 2001 From: ParantezTech <12572227+par274@users.noreply.github.com> Date: Tue, 6 Oct 2026 17:47:34 +0300 Subject: [PATCH] [VideoOut] Close ports after pending command streams Co-authored-by: Sekai <140012992+igettingit@users.noreply.github.com> --- src/SharpEmu.Libs/VideoOut/VideoOutExports.cs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/SharpEmu.Libs/VideoOut/VideoOutExports.cs b/src/SharpEmu.Libs/VideoOut/VideoOutExports.cs index 9656d52..a61e933 100644 --- a/src/SharpEmu.Libs/VideoOut/VideoOutExports.cs +++ b/src/SharpEmu.Libs/VideoOut/VideoOutExports.cs @@ -398,15 +398,18 @@ public static partial class VideoOutExports public static int VideoOutClose(CpuContext ctx) { var handle = unchecked((int)ctx[CpuRegister.Rdi]); - lock (_stateGate) + GuestGpu.Current.RunAfterPendingCommandStreams(() => { - foreach (var request in _flipRequests.Values.Where(request => request.Handle == handle).ToArray()) + lock (_stateGate) { - CancelFlipLocked(request); + foreach (var request in _flipRequests.Values.Where(request => request.Handle == handle).ToArray()) + { + CancelFlipLocked(request); + } + _ports.Remove(handle); + Monitor.PulseAll(_stateGate); } - _ports.Remove(handle); - Monitor.PulseAll(_stateGate); - } + }); return (int)OrbisGen2Result.ORBIS_GEN2_OK; }