Fix Busy Waiting Problem

This commit is contained in:
copecone committed 2026-06-14 12:48:08 +09:00
1 parent 0793a41035
commit 389e862ff8
2 files changed
+7 -2

No files matched your search

+6 -2
View File
@@ -63,6 +63,7 @@ namespace ADOFAIRenderer.Core
// Thread and Queue State
internal SortedList<long, CapturedFrame> ImageQueue = new();
internal AutoResetEvent FrameAvailableEvent = new(false);
public Thread? RenderThread;
public long passCount;
public bool endRequested;
@@ -236,6 +237,7 @@ namespace ADOFAIRenderer.Core
Length = byteSize
};
}
FrameAvailableEvent.Set();
}
renderCheck = false; // 진행 허용
@@ -386,6 +388,7 @@ namespace ADOFAIRenderer.Core
skipCount = 0;
endRequested = false;
endSuccessful = false;
FrameAvailableEvent.Reset();
var renderFPS = Configuration.RenderFPS;
var videoFPS = Configuration.VideoFPS;
@@ -493,7 +496,7 @@ namespace ADOFAIRenderer.Core
if (passCount > lastRequestedVideoFrameIndex) break;
}
Thread.Sleep(1);
FrameAvailableEvent.WaitOne(50);
}
if (isRenderCancelled)
@@ -552,6 +555,7 @@ namespace ADOFAIRenderer.Core
{
isRenderCancelled = true;
}
FrameAvailableEvent.Set();
skipPressToStart = false;
_renderSetup = false;
if (_escapeHandlerObj)
@@ -664,7 +668,7 @@ namespace ADOFAIRenderer.Core
{
foreach (var kvp in ImageQueue.Values)
{
if (kvp.ManagedBuffer != null && kvp.ManagedBuffer.Length > 0)
if (kvp.ManagedBuffer is { Length: > 0 })
{
ArrayPool<byte>.Shared.Return(kvp.ManagedBuffer);
}
+1
View File
@@ -151,6 +151,7 @@ namespace ADOFAIRenderer.Util
{
RenderManager.Instance.ImageQueue[frame] = capturedFrame;
}
RenderManager.Instance.FrameAvailableEvent.Set();
}
public void Dispose()