aboutsummaryrefslogtreecommitdiff
path: root/ARMeilleure
diff options
context:
space:
mode:
authormageven <62494521+mageven@users.noreply.github.com>2021-03-03 06:09:36 +0530
committerGitHub <noreply@github.com>2021-03-03 01:39:36 +0100
commitca5d8e58ddd0c089763645efcc58b5dc6614f8eb (patch)
treea5bca1cb574a50471d3fb1b6cc397f834ce3374d /ARMeilleure
parent31fca432a7274907c46f6ec254d54e96cb6446c6 (diff)
Add progress reporting to PTC and Shader Cache (#2057)
* UI changes * Add progress reporting to PTC & ShaderCache * Account for null events and expand docs Co-authored-by: Joshi234 <46032261+Joshi234@users.noreply.github.com>
Diffstat (limited to 'ARMeilleure')
-rw-r--r--ARMeilleure/Translation/PTC/Ptc.cs13
1 files changed, 10 insertions, 3 deletions
diff --git a/ARMeilleure/Translation/PTC/Ptc.cs b/ARMeilleure/Translation/PTC/Ptc.cs
index 266bdba6..c931aaea 100644
--- a/ARMeilleure/Translation/PTC/Ptc.cs
+++ b/ARMeilleure/Translation/PTC/Ptc.cs
@@ -70,6 +70,10 @@ namespace ARMeilleure.Translation.PTC
internal static PtcState State { get; private set; }
+ // Progress update events
+ public static event Action<bool> PtcTranslationStateChanged;
+ public static event Action<int, int> PtcTranslationProgressChanged;
+
static Ptc()
{
InitializeMemoryStreams();
@@ -772,6 +776,8 @@ namespace ARMeilleure.Translation.PTC
ThreadPool.QueueUserWorkItem(TranslationLogger, profiledFuncsToTranslate.Count);
+ PtcTranslationStateChanged?.Invoke(true);
+
void TranslateFuncs()
{
while (profiledFuncsToTranslate.TryDequeue(out var item))
@@ -820,6 +826,7 @@ namespace ARMeilleure.Translation.PTC
threads.Clear();
_loggerEvent.Set();
+ PtcTranslationStateChanged?.Invoke(false);
PtcJumpTable.Initialize(jumpTable);
@@ -833,15 +840,15 @@ namespace ARMeilleure.Translation.PTC
private static void TranslationLogger(object state)
{
- const int refreshRate = 1; // Seconds.
+ const int refreshRate = 100; // ms
int profiledFuncsToTranslateCount = (int)state;
do
{
- Logger.Info?.Print(LogClass.Ptc, $"{_translateCount} of {profiledFuncsToTranslateCount} functions translated");
+ PtcTranslationProgressChanged?.Invoke(_translateCount, profiledFuncsToTranslateCount);
}
- while (!_loggerEvent.WaitOne(refreshRate * 1000));
+ while (!_loggerEvent.WaitOne(refreshRate));
Logger.Info?.Print(LogClass.Ptc, $"{_translateCount} of {profiledFuncsToTranslateCount} functions translated");
}