SHA256
Fix Busy Waiting Problem
This commit is contained in:
2 files changed
+7
-2
No files matched your search
@@ -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);
|
||||
}
|
||||
|
||||
@@ -151,6 +151,7 @@ namespace ADOFAIRenderer.Util
|
||||
{
|
||||
RenderManager.Instance.ImageQueue[frame] = capturedFrame;
|
||||
}
|
||||
RenderManager.Instance.FrameAvailableEvent.Set();
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
|
||||
Reference in new issue
Block a user