mirror of
https://github.com/xivdev/Penumbra.git
synced 2026-02-20 14:57:50 +01:00
Fix some issues with ResourceWatcher.
This commit is contained in:
parent
a8000fbf14
commit
185be81e73
8 changed files with 519 additions and 529 deletions
|
|
@ -66,7 +66,7 @@ public unsafe class ResourceLoader : IDisposable
|
|||
_fileReadService.ReadSqPack -= ReadSqPackDetour;
|
||||
}
|
||||
|
||||
private void ResourceHandler(ref ResourceCategory category, ref ResourceType type, ref int hash, ref Utf8GamePath path,
|
||||
private void ResourceHandler(ref ResourceCategory category, ref ResourceType type, ref int hash, ref Utf8GamePath path, Utf8GamePath original,
|
||||
GetResourceParameters* parameters, ref bool sync, ref ResourceHandle* returnValue)
|
||||
{
|
||||
if (returnValue != null)
|
||||
|
|
@ -86,9 +86,10 @@ public unsafe class ResourceLoader : IDisposable
|
|||
_texMdlService.AddCrc(type, resolvedPath);
|
||||
// Replace the hash and path with the correct one for the replacement.
|
||||
hash = ComputeHash(resolvedPath.Value.InternalName, parameters);
|
||||
var oldPath = path;
|
||||
path = p;
|
||||
returnValue = _resources.GetOriginalResource(sync, category, type, hash, path.Path, parameters);
|
||||
ResourceLoaded?.Invoke(returnValue, p, resolvedPath.Value, data);
|
||||
ResourceLoaded?.Invoke(returnValue, oldPath, resolvedPath.Value, data);
|
||||
}
|
||||
|
||||
private void ReadSqPackDetour(SeFileDescriptor* fileDescriptor, ref int priority, ref bool isSync, ref byte? returnValue)
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ public unsafe class ResourceService : IDisposable
|
|||
/// <param name="parameters">Mainly used for SCD streaming, can be null.</param>
|
||||
/// <param name="sync">Whether to request the resource synchronously or asynchronously.</param>
|
||||
/// <param name="returnValue">The returned resource handle. If this is not null, calling original will be skipped. </param>
|
||||
public delegate void GetResourcePreDelegate(ref ResourceCategory category, ref ResourceType type, ref int hash, ref Utf8GamePath path,
|
||||
public delegate void GetResourcePreDelegate(ref ResourceCategory category, ref ResourceType type, ref int hash, ref Utf8GamePath path, Utf8GamePath original,
|
||||
GetResourceParameters* parameters, ref bool sync, ref ResourceHandle* returnValue);
|
||||
|
||||
/// <summary> <inheritdoc cref="GetResourcePreDelegate"/> <para/>
|
||||
|
|
@ -104,7 +104,7 @@ public unsafe class ResourceService : IDisposable
|
|||
}
|
||||
|
||||
ResourceHandle* returnValue = null;
|
||||
ResourceRequested?.Invoke(ref *categoryId, ref *resourceType, ref *resourceHash, ref gamePath, pGetResParams, ref isSync,
|
||||
ResourceRequested?.Invoke(ref *categoryId, ref *resourceType, ref *resourceHash, ref gamePath, gamePath, pGetResParams, ref isSync,
|
||||
ref returnValue);
|
||||
if (returnValue != null)
|
||||
return returnValue;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue