From 026f537daebfa2312fed6b9c7e49a8ea7bb627bd Mon Sep 17 00:00:00 2001 From: Patrick Simpson Date: Tue, 14 Feb 2017 18:30:48 +0100 Subject: [PATCH] Backup commit, not compiling at the moment --- .../AcaciaZPushPlugin/Utils/DisposableWrapper.cs | 11 +++++++++++ .../AcaciaZPushPlugin/ZPush/ZPushFolder.cs | 5 ++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Utils/DisposableWrapper.cs b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Utils/DisposableWrapper.cs index e68bad4..9f1d413 100644 --- a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Utils/DisposableWrapper.cs +++ b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Utils/DisposableWrapper.cs @@ -10,6 +10,8 @@ namespace Acacia.Utils { abstract public class DisposableWrapper : IDisposable { + private static Dictionary typeCounts = new Dictionary(); + protected DisposableWrapper() { Interlocked.Increment(ref Statistics.CreatedWrappers); @@ -25,6 +27,10 @@ namespace Acacia.Utils // Dispose, but don't count auto disposals, so the stats show it. DoRelease(); } + else + { + --typeCounts[GetType()]; + } } private bool _isDisposed; @@ -34,6 +40,11 @@ namespace Acacia.Utils { if (!_isDisposed) { + if (!typeCounts.ContainsKey(GetType())) + typeCounts.Add(GetType(), 1); + else + ++typeCounts[GetType()]; + Logger.Instance.TraceExtra(this, "Disposing wrapper: {0}", new System.Diagnostics.StackTrace()); _isDisposed = true; Interlocked.Increment(ref Statistics.DisposedWrappers); diff --git a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/ZPush/ZPushFolder.cs b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/ZPush/ZPushFolder.cs index 9f6fad2..7eb07a1 100644 --- a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/ZPush/ZPushFolder.cs +++ b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/ZPush/ZPushFolder.cs @@ -141,7 +141,7 @@ namespace Acacia.ZPush try { Logger.Instance.Debug(this, "Folder added in {0}: {1}", Name, folder.Name); - WatchChild(folder); + WatchChild(folder.Duplicate()); } catch (System.Exception e) { Logger.Instance.Error(this, "Exception in SubFolders_FolderAdd: {0}: {1}", Name, e); } } @@ -198,7 +198,6 @@ namespace Acacia.ZPush if (_children.TryGetValue(folder.EntryID, out child)) { _watcher.OnFolderChanged(child); - // TODO: release folder? } else { @@ -206,7 +205,7 @@ namespace Acacia.ZPush // Create it now // This will send a discover notification if required, which is just as good as a change notification Logger.Instance.Debug(this, "Folder change on unreported folder in {0}: {1}, {2}, {3}", Name, folder.Name, folder.EntryID, folder.StoreDisplayName); - WatchChild(folder); + WatchChild(folder.Duplicate()); } } catch (System.Exception e) { Logger.Instance.Error(this, "Exception in SubFolders_FolderChange: {0}: {1}", Name, e); }