fix some performance issues
This commit is contained in:
@@ -9,6 +9,7 @@ using System.Collections.Concurrent;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using Penumbra.Api.Enums;
|
using Penumbra.Api.Enums;
|
||||||
using Penumbra.Api.Helpers;
|
using Penumbra.Api.Helpers;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace MareSynchronos.Managers;
|
namespace MareSynchronos.Managers;
|
||||||
|
|
||||||
@@ -126,10 +127,13 @@ public class IpcManager : IDisposable
|
|||||||
|
|
||||||
private void ResourceLoaded(IntPtr ptr, string arg1, string arg2)
|
private void ResourceLoaded(IntPtr ptr, string arg1, string arg2)
|
||||||
{
|
{
|
||||||
if (ptr != IntPtr.Zero && string.Compare(arg1, arg2, true, System.Globalization.CultureInfo.InvariantCulture) != 0)
|
Task.Run(() =>
|
||||||
{
|
{
|
||||||
PenumbraResourceLoadEvent?.Invoke(ptr, arg1, arg2);
|
if (ptr != IntPtr.Zero && string.Compare(arg1, arg2, true, System.Globalization.CultureInfo.InvariantCulture) != 0)
|
||||||
}
|
{
|
||||||
|
PenumbraResourceLoadEvent?.Invoke(ptr, arg1, arg2);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void HandleActionQueue()
|
private void HandleActionQueue()
|
||||||
|
|||||||
@@ -179,13 +179,15 @@ public class PlayerManager : IDisposable
|
|||||||
token.ThrowIfCancellationRequested();
|
token.ThrowIfCancellationRequested();
|
||||||
}
|
}
|
||||||
|
|
||||||
while (!PermanentDataCache.IsReady && !token.IsCancellationRequested)
|
int timeOut = 10000;
|
||||||
|
while (!PermanentDataCache.IsReady && !token.IsCancellationRequested && timeOut >= 0)
|
||||||
{
|
{
|
||||||
Logger.Verbose("Waiting until cache is ready");
|
Logger.Verbose("Waiting until cache is ready (Timeout: " + TimeSpan.FromMilliseconds(timeOut) + ")");
|
||||||
await Task.Delay(50, token).ConfigureAwait(false);
|
await Task.Delay(50, token).ConfigureAwait(false);
|
||||||
|
timeOut -= 50;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (token.IsCancellationRequested) return null;
|
if (token.IsCancellationRequested || timeOut <= 0) return null;
|
||||||
|
|
||||||
Logger.Verbose("Cache creation complete");
|
Logger.Verbose("Cache creation complete");
|
||||||
|
|
||||||
|
|||||||
@@ -155,6 +155,7 @@ public class TransientResourceManager : IDisposable
|
|||||||
filePath = filePath.ToLowerInvariant().Replace("\\", "/", StringComparison.OrdinalIgnoreCase);
|
filePath = filePath.ToLowerInvariant().Replace("\\", "/", StringComparison.OrdinalIgnoreCase);
|
||||||
|
|
||||||
var replacedGamePath = gamePath.ToLowerInvariant().Replace("\\", "/", StringComparison.OrdinalIgnoreCase);
|
var replacedGamePath = gamePath.ToLowerInvariant().Replace("\\", "/", StringComparison.OrdinalIgnoreCase);
|
||||||
|
if (string.Equals(filePath, replacedGamePath, StringComparison.OrdinalIgnoreCase)) return;
|
||||||
|
|
||||||
if (TransientResources[gameObject].Contains(replacedGamePath) ||
|
if (TransientResources[gameObject].Contains(replacedGamePath) ||
|
||||||
SemiTransientResources.Any(r => r.Value.Any(f =>
|
SemiTransientResources.Any(r => r.Value.Any(f =>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Authors></Authors>
|
<Authors></Authors>
|
||||||
<Company></Company>
|
<Company></Company>
|
||||||
<Version>0.5.23</Version>
|
<Version>0.5.24</Version>
|
||||||
<Description></Description>
|
<Description></Description>
|
||||||
<Copyright></Copyright>
|
<Copyright></Copyright>
|
||||||
<PackageProjectUrl>https://github.com/Penumbra-Sync/client</PackageProjectUrl>
|
<PackageProjectUrl>https://github.com/Penumbra-Sync/client</PackageProjectUrl>
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ using System.Text.RegularExpressions;
|
|||||||
using MareSynchronos.FileCache;
|
using MareSynchronos.FileCache;
|
||||||
using MareSynchronos.Managers;
|
using MareSynchronos.Managers;
|
||||||
using MareSynchronos.Utils;
|
using MareSynchronos.Utils;
|
||||||
|
using System;
|
||||||
|
|
||||||
namespace MareSynchronos.Models;
|
namespace MareSynchronos.Models;
|
||||||
|
|
||||||
@@ -40,8 +41,16 @@ public class FileReplacement
|
|||||||
|
|
||||||
_ = Task.Run(() =>
|
_ = Task.Run(() =>
|
||||||
{
|
{
|
||||||
var cache = fileDbManager.GetFileCacheByPath(ResolvedPath)!;
|
try
|
||||||
Hash = cache.Hash;
|
{
|
||||||
|
var cache = fileDbManager.GetFileCacheByPath(ResolvedPath)!;
|
||||||
|
Hash = cache.Hash;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.Warn("Could not set Hash for " + ResolvedPath + ", resetting to original");
|
||||||
|
ResolvedPath = GamePaths.First();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user