From e81397617108a23f12024243d3f77bd3b12a9e61 Mon Sep 17 00:00:00 2001 From: rootdarkarchon Date: Sun, 18 Dec 2022 19:08:13 +0100 Subject: [PATCH] improve performance of penumbra mod setting changed --- .../Managers/TransientResourceManager.cs | 26 ++++++++++--------- MareSynchronos/MareSynchronos.csproj | 2 +- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/MareSynchronos/Managers/TransientResourceManager.cs b/MareSynchronos/Managers/TransientResourceManager.cs index 7aeaaff..7220fb5 100644 --- a/MareSynchronos/Managers/TransientResourceManager.cs +++ b/MareSynchronos/Managers/TransientResourceManager.cs @@ -7,6 +7,7 @@ using System.Collections.Concurrent; using System.Collections.Generic; using System.IO; using System.Linq; +using System.Threading.Tasks; namespace MareSynchronos.Managers; @@ -16,7 +17,6 @@ public class TransientResourceManager : IDisposable { private readonly IpcManager manager; private readonly DalamudUtil dalamudUtil; - private readonly FileReplacementFactory fileReplacementFactory; private readonly string configurationDirectory; public event TransientResourceLoadedEvent? TransientResourceLoaded; @@ -32,7 +32,6 @@ public class TransientResourceManager : IDisposable manager.PenumbraModSettingChanged += Manager_PenumbraModSettingChanged; this.manager = manager; this.dalamudUtil = dalamudUtil; - this.fileReplacementFactory = fileReplacementFactory; this.configurationDirectory = configurationDirectory; dalamudUtil.FrameworkUpdate += DalamudUtil_FrameworkUpdate; dalamudUtil.ClassJobChanged += DalamudUtil_ClassJobChanged; @@ -67,18 +66,21 @@ public class TransientResourceManager : IDisposable private void Manager_PenumbraModSettingChanged() { bool successfulValidation = true; - Logger.Debug("Penumbra Mod Settings changed, verifying SemiTransientResources"); - foreach (var item in SemiTransientResources) + Task.Run(() => { - item.Value.RemoveWhere(p => + Logger.Debug("Penumbra Mod Settings changed, verifying SemiTransientResources"); + foreach (var item in SemiTransientResources) { - var verified = p.Verify(); - successfulValidation &= verified; - return !verified; - }); - if (!successfulValidation) - TransientResourceLoaded?.Invoke(dalamudUtil.PlayerPointer); - } + item.Value.RemoveWhere(p => + { + var verified = p.Verify(); + successfulValidation &= verified; + return !verified; + }); + if (!successfulValidation) + TransientResourceLoaded?.Invoke(dalamudUtil.PlayerPointer); + } + }); } private void DalamudUtil_ClassJobChanged() diff --git a/MareSynchronos/MareSynchronos.csproj b/MareSynchronos/MareSynchronos.csproj index b9f0062..80fd1c2 100644 --- a/MareSynchronos/MareSynchronos.csproj +++ b/MareSynchronos/MareSynchronos.csproj @@ -3,7 +3,7 @@ - 0.5.16 + 0.5.17 https://github.com/Penumbra-Sync/client