minor fixes

This commit is contained in:
rootdarkarchon
2023-02-04 00:46:48 +01:00
parent a03e92ccef
commit 680c5f4712
3 changed files with 20 additions and 13 deletions

View File

@@ -165,13 +165,13 @@ public class PairManager : MediatorSubscriberBase, IDisposable
} }
} }
public void MarkPairOnline(OnlineUserIdentDto dto, ApiController controller) public void MarkPairOnline(OnlineUserIdentDto dto, ApiController controller, bool sendNotif = true)
{ {
if (!_allClientPairs.ContainsKey(dto.User)) throw new InvalidOperationException("No user found for " + dto); if (!_allClientPairs.ContainsKey(dto.User)) throw new InvalidOperationException("No user found for " + dto);
var pair = _allClientPairs[dto.User]; var pair = _allClientPairs[dto.User];
if (pair.CachedPlayer != null) return; if (pair.CachedPlayer != null) return;
if (_configurationService.Current.ShowOnlineNotifications if (sendNotif && _configurationService.Current.ShowOnlineNotifications
&& ((_configurationService.Current.ShowOnlineNotificationsOnlyForIndividualPairs && pair.UserPair != null) && ((_configurationService.Current.ShowOnlineNotificationsOnlyForIndividualPairs && pair.UserPair != null)
|| !_configurationService.Current.ShowOnlineNotificationsOnlyForIndividualPairs) || !_configurationService.Current.ShowOnlineNotificationsOnlyForIndividualPairs)
&& (_configurationService.Current.ShowOnlineNotificationsOnlyForNamedPairs && !string.IsNullOrEmpty(pair.GetNote()) && (_configurationService.Current.ShowOnlineNotificationsOnlyForNamedPairs && !string.IsNullOrEmpty(pair.GetNote())

View File

@@ -231,19 +231,26 @@ public class DalamudUtil : IDisposable
var obj = (GameObject*)characterAddress; var obj = (GameObject*)characterAddress;
const int tick = 250; const int tick = 250;
int curWaitTime = 0; int curWaitTime = 0;
try
{
// ReSharper disable once LoopVariableIsNeverChangedInsideLoop // ReSharper disable once LoopVariableIsNeverChangedInsideLoop
while ((((obj->GetDrawObject() == null while ((!ct?.IsCancellationRequested ?? true)
&& curWaitTime < timeOut
&& (((obj->GetDrawObject() == null
|| ((CharacterBase*)obj->GetDrawObject())->HasModelFilesInSlotLoaded != 0 || ((CharacterBase*)obj->GetDrawObject())->HasModelFilesInSlotLoaded != 0
|| ((CharacterBase*)obj->GetDrawObject())->HasModelFilesInSlotLoaded != 0)) || ((CharacterBase*)obj->GetDrawObject())->HasModelFilesInSlotLoaded != 0))
|| ((obj->RenderFlags & 0b100000000000) == 0b100000000000)) || ((obj->RenderFlags & 0b100000000000) == 0b100000000000))) // 0b100000000000 is "still rendering" or something
&& (!ct?.IsCancellationRequested ?? true)
&& curWaitTime < timeOut) // 0b100000000000 is "still rendering" or something
{ {
Logger.Verbose($"Waiting for {name} to finish drawing"); Logger.Verbose($"Waiting for {name} to finish drawing");
curWaitTime += tick; curWaitTime += tick;
Thread.Sleep(tick); Thread.Sleep(tick);
} }
} }
catch (AccessViolationException ex)
{
Logger.Warn("Error accessing " + characterAddress.ToString("X") + ", object does not exist anymore?", ex);
}
}
public unsafe void DisableDraw(IntPtr characterAddress) public unsafe void DisableDraw(IntPtr characterAddress)
{ {

View File

@@ -294,7 +294,7 @@ public partial class ApiController : MediatorSubscriberBase, IDisposable, IMareH
foreach (var entry in await UserGetOnlinePairs().ConfigureAwait(false)) foreach (var entry in await UserGetOnlinePairs().ConfigureAwait(false))
{ {
_pairManager.MarkPairOnline(entry, this); _pairManager.MarkPairOnline(entry, this, false);
} }
_healthCheckTokenSource?.Cancel(); _healthCheckTokenSource?.Cancel();