From 529b8e4c3739c35ac30bad842ff41a97c4f671d0 Mon Sep 17 00:00:00 2001 From: rootdarkarchon Date: Tue, 9 May 2023 15:52:47 +0200 Subject: [PATCH] fix thread safety on plugin warning notification service --- MareSynchronos/PlayerData/Handlers/PairHandler.cs | 1 + MareSynchronos/Services/PluginWarningNotificationService.cs | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/MareSynchronos/PlayerData/Handlers/PairHandler.cs b/MareSynchronos/PlayerData/Handlers/PairHandler.cs index 603d138..f71d2c7 100644 --- a/MareSynchronos/PlayerData/Handlers/PairHandler.cs +++ b/MareSynchronos/PlayerData/Handlers/PairHandler.cs @@ -416,6 +416,7 @@ public sealed class PairHandler : DisposableMediatorSubscriberBase else if (_charaHandler?.Address == nint.Zero && IsVisible) { IsVisible = false; + _charaHandler?.Invalidate(); Logger.LogTrace("{this} visibility changed, now: {visi}", this, IsVisible); } } diff --git a/MareSynchronos/Services/PluginWarningNotificationService.cs b/MareSynchronos/Services/PluginWarningNotificationService.cs index 1765d60..db48b45 100644 --- a/MareSynchronos/Services/PluginWarningNotificationService.cs +++ b/MareSynchronos/Services/PluginWarningNotificationService.cs @@ -4,12 +4,13 @@ using MareSynchronos.API.Data.Comparer; using MareSynchronos.Interop; using MareSynchronos.MareConfiguration; using MareSynchronos.Services.Mediator; +using System.Collections.Concurrent; namespace MareSynchronos.PlayerData.Pairs; public class PluginWarningNotificationService { - private readonly Dictionary _cachedOptionalPluginWarnings = new(UserDataComparer.Instance); + private readonly ConcurrentDictionary _cachedOptionalPluginWarnings = new(UserDataComparer.Instance); private readonly IpcManager _ipcManager; private readonly MareConfigService _mareConfigService; private readonly MareMediator _mediator;