aboutsummaryrefslogtreecommitdiff
path: root/ARMeilleure/Translation/PTC/Ptc.cs
diff options
context:
space:
mode:
Diffstat (limited to 'ARMeilleure/Translation/PTC/Ptc.cs')
-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");
}