From 379c0360d740659fe9263a0382930d7f51cb2244ca234306b87c69d131b92909 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=BB=A8=ED=8A=B8=EB=A1=A4DELTA?= Date: Wed, 27 May 2026 15:50:09 +0900 Subject: [PATCH] Apply Better Handling of Render Cancel --- Component/RenderManager.cs | 7 ++++--- Util/FrameReader.cs | 11 ++--------- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/Component/RenderManager.cs b/Component/RenderManager.cs index a33c425..d3ad625 100644 --- a/Component/RenderManager.cs +++ b/Component/RenderManager.cs @@ -23,7 +23,7 @@ namespace ADOFAIRenderer.Component private static GameObject? _escapeHandlerObj; private static string? _currentOutPath; - private static bool _isRenderCancelled = false; + public static bool IsRenderCancelled = false; public static RenderSettings Configuration; public struct RenderSettings @@ -218,6 +218,7 @@ namespace ADOFAIRenderer.Component ImageQueue.Clear(); } PassCount = 0; + IsRenderCancelled = false; RenderMod.FrameCountForVideo = 0; RenderMod.RenderCheck = true; RenderMod.SkipCount = 0; @@ -292,7 +293,7 @@ namespace ADOFAIRenderer.Component continue; } - if (_isRenderCancelled) + if (IsRenderCancelled) { break; } @@ -325,7 +326,7 @@ namespace ADOFAIRenderer.Component public void CancelRender() { RenderMod.IsRendering = RenderMod.IsCapturing = false; - _isRenderCancelled = true; + IsRenderCancelled = true; StopFFmpeg(false); EndRender(); diff --git a/Util/FrameReader.cs b/Util/FrameReader.cs index 992e6bc..53d28bd 100644 --- a/Util/FrameReader.cs +++ b/Util/FrameReader.cs @@ -45,14 +45,7 @@ namespace ADOFAIRenderer.Util lock (_poolLock) { - if (_statePool.Count == 0) - { - state = new ReadbackRequestState(this); - } - else - { - state = _statePool.Pop(); - } + state = _statePool.Count == 0 ? new ReadbackRequestState(this) : _statePool.Pop(); } var bufferSize = texture.width * texture.height * 4; // RGBA = 4 channel @@ -70,7 +63,7 @@ namespace ADOFAIRenderer.Util { var frame = state.FrameIndex; - if (!RenderMod.IsCapturing) + if (RenderManager.IsRenderCancelled) { RecycleState(state); return;