From c8575c1b03d1b8fbb9dcc629efaca8babb046105 Mon Sep 17 00:00:00 2001 From: Kang Yu Date: Tue, 8 Oct 2024 22:46:38 -0700 Subject: [PATCH] reduce size of history xml --- .../Common/PersistentWindowProcessor.cs | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/Ninjacrab.PersistentWindows.Solution/Common/PersistentWindowProcessor.cs b/Ninjacrab.PersistentWindows.Solution/Common/PersistentWindowProcessor.cs index 00f28bf..b9471f2 100644 --- a/Ninjacrab.PersistentWindows.Solution/Common/PersistentWindowProcessor.cs +++ b/Ninjacrab.PersistentWindows.Solution/Common/PersistentWindowProcessor.cs @@ -218,6 +218,34 @@ namespace PersistentWindows.Common File.WriteAllText(Path.Combine(appDataFolder, snapshotTimeFile), xml2, Encoding.Unicode); } + private void TrimDumpHistory(Dictionary>> dump_apps) + { + foreach (var display_key in dump_apps.Keys) + { + foreach (var hwnd in dump_apps[display_key].Keys) + { + if (dualPosSwitchWindows.Contains(hwnd)) + continue; + + List history = new List(); + for (int i = 0; i < dump_apps[display_key][hwnd].Count; ++i) + { + if (dump_apps[display_key][hwnd][i].SnapShotFlags != 0) + continue; + if (!dump_apps[display_key][hwnd][i].IsValid) + continue; + history.Add(i); + } + + //keep the last record + for (int i = history.Count - 2; i >= 0; --i) + { + dump_apps[display_key][hwnd].RemoveAt(history[i]); + } + } + } + } + private void WriteDataDumpCore(bool dump_dead_window) { DataContractSerializer dcs = new DataContractSerializer(typeof(Dictionary>>)); @@ -239,6 +267,8 @@ namespace PersistentWindows.Common } } + TrimDumpHistory(allApps); + dcs.WriteObject(xw, allApps); } else