1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-12 05:14:10 +02:00

Fixed deps in filewatcher

This commit is contained in:
Brian Fiete 2021-12-29 11:09:49 -05:00
parent 5e9a6031fb
commit c3a247d8aa

View file

@ -55,8 +55,8 @@ namespace IDE
Dictionary<String, DepInfo> mWatchedFiles = new Dictionary<String, DepInfo>() ~ DeleteDictionaryAndKeysAndValues!(_); // Including ref count Dictionary<String, DepInfo> mWatchedFiles = new Dictionary<String, DepInfo>() ~ DeleteDictionaryAndKeysAndValues!(_); // Including ref count
List<ChangeRecord> mChangeList = new .() ~ DeleteContainerAndItems!(_); List<ChangeRecord> mChangeList = new .() ~ DeleteContainerAndItems!(_);
Dictionary<String, ChangeRecord> mChangeMap = new .() ~ delete _; Dictionary<String, ChangeRecord> mChangeMap = new .() ~ delete _;
HashSet<Object> mDependencyChangeSet = new .() ~ delete _; HashSet<void*> mDependencyChangeSet = new .() ~ delete _;
List<Object> mDependencyChangeList = new .() ~ delete _; List<void*> mDependencyChangeList = new .() ~ delete _;
List<QueuedRefreshEntry> mQueuedRefreshWatcherEntries = new List<QueuedRefreshEntry>() ~ delete _; List<QueuedRefreshEntry> mQueuedRefreshWatcherEntries = new List<QueuedRefreshEntry>() ~ delete _;
public Monitor mMonitor = new Monitor() ~ delete _; public Monitor mMonitor = new Monitor() ~ delete _;
List<QueuedFileChange> mQueuedFileChanges = new List<QueuedFileChange>() ~ DeleteContainerAndItems!(_); List<QueuedFileChange> mQueuedFileChanges = new List<QueuedFileChange>() ~ DeleteContainerAndItems!(_);
@ -205,8 +205,9 @@ namespace IDE
projectItem = tryProjectItem; projectItem = tryProjectItem;
if (dep != null) if (dep != null)
{ {
if (mDependencyChangeSet.Add(dep)) var depPtr = Internal.UnsafeCastToPtr(dep);
mDependencyChangeList.Add(dep); if (mDependencyChangeSet.Add(depPtr))
mDependencyChangeList.Add(depPtr);
} }
} }
@ -565,7 +566,7 @@ namespace IDE
} }
if (dependentObject != null) if (dependentObject != null)
mDependencyChangeSet.Remove(dependentObject); mDependencyChangeSet.Remove(Internal.UnsafeCastToPtr(dependentObject));
} }
#endif #endif
} }
@ -656,11 +657,14 @@ namespace IDE
{ {
using (mMonitor.Enter()) using (mMonitor.Enter())
{ {
if (mDependencyChangeList.IsEmpty) while (true)
return null; {
Object dep = mDependencyChangeList.PopFront(); if (mDependencyChangeList.IsEmpty)
mDependencyChangeSet.Remove(dep); return null;
return dep; var dep = mDependencyChangeList.PopFront();
if (mDependencyChangeSet.Remove(dep))
return Internal.UnsafeCastToObject(dep);
}
} }
} }
@ -668,7 +672,9 @@ namespace IDE
{ {
using (mMonitor.Enter()) using (mMonitor.Enter())
{ {
mDependencyChangeSet.Add(obj); var depPtr = Internal.UnsafeCastToPtr(obj);
if (mDependencyChangeSet.Add(depPtr))
mDependencyChangeList.Add(depPtr);
} }
} }
} }