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
	 rootdarkarchon
					rootdarkarchon