From 51d94c923a64017f5c0503ecd0482eaa39970ada Mon Sep 17 00:00:00 2001 From: Liza Carvelli Date: Sat, 20 Apr 2024 22:16:25 +0200 Subject: [PATCH] Ensure no two discard processes run at the same time --- ARDiscard/ARDiscard.csproj | 2 +- ARDiscard/AutoDiscardPlogon.cs | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ARDiscard/ARDiscard.csproj b/ARDiscard/ARDiscard.csproj index 8a2d8d2..39a287f 100644 --- a/ARDiscard/ARDiscard.csproj +++ b/ARDiscard/ARDiscard.csproj @@ -1,7 +1,7 @@ net8.0-windows - 5.2 + 5.3 12 enable true diff --git a/ARDiscard/AutoDiscardPlogon.cs b/ARDiscard/AutoDiscardPlogon.cs index 2620975..2a65afd 100644 --- a/ARDiscard/AutoDiscardPlogon.cs +++ b/ARDiscard/AutoDiscardPlogon.cs @@ -92,7 +92,10 @@ public sealed class AutoDiscardPlogon : IDalamudPlugin _configWindow.ConfigSaved += (_, _) => _discardWindow.RefreshInventory(true); _discardWindow.OpenConfigurationClicked += (_, _) => OpenConfigUi(); _discardWindow.DiscardAllClicked += (_, filter) => - _taskManager!.Enqueue(() => DiscardNextItem(PostProcessType.ManuallyStarted, filter)); + { + _taskManager!.Abort(); + _taskManager.Enqueue(() => DiscardNextItem(PostProcessType.ManuallyStarted, filter)); + }; ECommonsMain.Init(_pluginInterface, this); _autoRetainerApi = new(); @@ -151,11 +154,13 @@ public sealed class AutoDiscardPlogon : IDalamudPlugin private void DoRetainerPostProcess(string retainerName) { + _taskManager.Abort(); _taskManager.Enqueue(() => DiscardNextItem(PostProcessType.Retainer, ItemFilter.None)); } private void DoCharacterPostProcess() { + _taskManager.Abort(); _taskManager.Enqueue(() => DiscardNextItem(PostProcessType.Character, ItemFilter.None)); } @@ -168,6 +173,7 @@ public sealed class AutoDiscardPlogon : IDalamudPlugin private void DiscardAll(string command, string arguments) { + _taskManager.Abort(); _taskManager.Enqueue(() => DiscardNextItem(PostProcessType.ManuallyStarted, ItemFilter.None)); } @@ -265,7 +271,7 @@ public sealed class AutoDiscardPlogon : IDalamudPlugin } else { - _pluginLog.Information($"ContinueAfterDiscard: Discovered different item to discard"); + _pluginLog.Information("ContinueAfterDiscard: Discovered different item to discard"); _taskManager.EnqueueImmediate(() => DiscardNextItem(type, itemFilter)); } }