diff --git a/MareSynchronos/PlayerData/Handlers/GameObjectHandler.cs b/MareSynchronos/PlayerData/Handlers/GameObjectHandler.cs index 5c96652..b22a82d 100644 --- a/MareSynchronos/PlayerData/Handlers/GameObjectHandler.cs +++ b/MareSynchronos/PlayerData/Handlers/GameObjectHandler.cs @@ -273,12 +273,6 @@ public sealed class GameObjectHandler : DisposableMediatorSubscriberBase private bool IsBeingDrawn() { - if (_dalamudUtil.IsAnythingDrawing) - { - Logger.LogTrace("[{this}] IsBeingDrawnRunOnFramework, Global draw block", this); - return true; - } - var curPtr = _getAddress(); Logger.LogTrace("[{this}] IsBeingDrawnRunOnFramework, CurPtr: {ptr}", this, curPtr.ToString("X")); @@ -288,7 +282,13 @@ public sealed class GameObjectHandler : DisposableMediatorSubscriberBase Address = IntPtr.Zero; DrawObjectAddress = IntPtr.Zero; - return false; + throw new InvalidOperationException($"CurPtr for {this} turned ZERO"); + } + + if (_dalamudUtil.IsAnythingDrawing) + { + Logger.LogTrace("[{this}] IsBeingDrawnRunOnFramework, Global draw block", this); + return true; } var drawObj = GetDrawObj(curPtr); diff --git a/MareSynchronos/PlayerData/Pairs/CachedPlayer.cs b/MareSynchronos/PlayerData/Pairs/CachedPlayer.cs index f1d5b98..253f5fc 100644 --- a/MareSynchronos/PlayerData/Pairs/CachedPlayer.cs +++ b/MareSynchronos/PlayerData/Pairs/CachedPlayer.cs @@ -487,14 +487,14 @@ public sealed class CachedPlayer : DisposableMediatorSubscriberBase token.ThrowIfCancellationRequested(); } + _cachedData = charaData; + Logger.LogDebug("[{applicationId}] Application finished", _applicationId); } catch (Exception ex) { Logger.LogWarning(ex, "[{applicationId}] Cancelled", _applicationId); } - - _cachedData = charaData; }, token); }, downloadToken); } diff --git a/MareSynchronos/Services/DalamudUtilService.cs b/MareSynchronos/Services/DalamudUtilService.cs index 254ef5d..cdb1a84 100644 --- a/MareSynchronos/Services/DalamudUtilService.cs +++ b/MareSynchronos/Services/DalamudUtilService.cs @@ -268,7 +268,7 @@ public class DalamudUtilService : IHostedService public async Task WaitWhileCharacterIsDrawing(ILogger logger, GameObjectHandler handler, Guid redrawId, int timeOut = 5000, CancellationToken? ct = null) { - if (!_clientState.IsLoggedIn || handler.Address == IntPtr.Zero) return; + if (!_clientState.IsLoggedIn) return; logger.LogTrace("[{redrawId}] Starting wait for {handler} to draw", redrawId, handler);