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); }