mirror of
https://github.com/Caraxi/mare.client.git
synced 2025-12-12 15:37:23 +01:00
fix gpose and disposal of charas when losing sight
This commit is contained in:
parent
6663b736df
commit
b4e96a873d
5 changed files with 8 additions and 17 deletions
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -360,7 +360,6 @@ public partial class ApiController : MediatorSubscriberBase, IDisposable, IMareH
|
|||
CurrentUploads.Clear();
|
||||
CurrentDownloads.Clear();
|
||||
Mediator.Publish(new DisconnectedMessage());
|
||||
_pairManager.ClearPairs();
|
||||
_mareHub = null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue