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