fix gpose and disposal of charas when losing sight

This commit is contained in:
rootdarkarchon
2023-02-22 10:28:03 +01:00
parent 6663b736df
commit b4e96a873d
5 changed files with 8 additions and 17 deletions

View File

@@ -206,7 +206,7 @@ public class CachedPlayer : MediatorSubscriberBase, IDisposable
{
if (PlayerName == null || _currentOtherChara == null
|| !string.Equals(PlayerName, _currentOtherChara.Name, StringComparison.Ordinal)
|| _currentOtherChara.Address == IntPtr.Zero)
|| _currentOtherChara.CurrentAddress == IntPtr.Zero)
{
return false;
}

View File

@@ -146,7 +146,7 @@ public class PairManager : MediatorSubscriberBase, IDisposable
if (recreate)
item.Value.RecreateCachedPlayer();
else
item.Value.Dispose();
item.Value.MarkOffline();
}
RecreateLazy();
}
@@ -214,7 +214,7 @@ public class PairManager : MediatorSubscriberBase, IDisposable
if (!pair.HasAnyConnection())
{
pair.Dispose();
pair.MarkOffline();
_allClientPairs.TryRemove(dto.User, out _);
}
@@ -229,7 +229,7 @@ public class PairManager : MediatorSubscriberBase, IDisposable
pair.UserPair = null;
if (!pair.HasAnyConnection())
{
pair.Dispose();
pair.MarkOffline();
_allClientPairs.TryRemove(dto.User, out _);
}
else
@@ -275,7 +275,7 @@ public class PairManager : MediatorSubscriberBase, IDisposable
{
if (!pair.CachedPlayerExists)
{
pair.Dispose();
pair.RecreateCachedPlayer();
}
}
}

View File

@@ -72,7 +72,7 @@ public class MareMediator : IDisposable
lock (_addRemoveLock)
{
var removed = _subscriberDict[message.GetType()].RemoveWhere(s => s == subscriber);
_logger.LogCritical(ex, "Error executing {type} for subscriber {subscriber}, removed from Mediator: {removeCount}", message.GetType(), subscriber, removed);
_logger.LogCritical(ex, "Error executing {type} for subscriber {subscriber}, removed from Mediator: {removeCount}", message.GetType().Name, subscriber.Subscriber.GetType().Name, removed);
}
}
}

View File

@@ -13,7 +13,7 @@ using Microsoft.Extensions.Logging;
namespace MareSynchronos.Models;
public class Pair : IDisposable
public class Pair
{
private readonly ILogger<Pair> _logger;
private readonly CachedPlayerFactory _cachedPlayerFactory;
@@ -140,7 +140,7 @@ public class Pair : IDisposable
public void RecreateCachedPlayer(OnlineUserIdentDto? dto = null, ApiController? controller = null)
{
if (dto == null && _onlineUserIdentDto == null || _apiController == null && controller == null) return;
if ((dto == null && _onlineUserIdentDto == null) || (_apiController == null && controller == null)) return;
if (dto != null || controller != null)
{
_onlineUserIdentDto = dto;
@@ -158,12 +158,4 @@ public class Pair : IDisposable
CachedPlayer?.Dispose();
CachedPlayer = null;
}
public void Dispose()
{
_onlineUserIdentDto = null;
LastReceivedCharacterData = null;
CachedPlayer?.Dispose();
CachedPlayer = null;
}
}

View File

@@ -360,7 +360,6 @@ public partial class ApiController : MediatorSubscriberBase, IDisposable, IMareH
CurrentUploads.Clear();
CurrentDownloads.Clear();
Mediator.Publish(new DisconnectedMessage());
_pairManager.ClearPairs();
_mareHub = null;
}
}