Browse Source

Merge pull request #3537 from MarchingCube/fix-weak-event-manager-compact

WeakEventHandlerManager: Ensure that weak refs with collected refs are compacted as well.
release/0.9.4
Steven Kirk 6 years ago
committed by Dan Walmsley
parent
commit
82a0f0e476
  1. 9
      src/Avalonia.Base/Utilities/WeakEventHandlerManager.cs

9
src/Avalonia.Base/Utilities/WeakEventHandlerManager.cs

@ -183,11 +183,16 @@ namespace Avalonia.Utilities
for (int c = 0; c < _count; c++)
{
var r = _data[c];
TSubscriber target = null;
r.Subscriber?.TryGetTarget(out target);
//Mark current index as first empty
if (r.Subscriber == null && empty == -1)
if (target == null && empty == -1)
empty = c;
//If current element isn't null and we have an empty one
if (r.Subscriber != null && empty != -1)
if (target != null && empty != -1)
{
_data[c] = default;
_data[empty] = r;

Loading…
Cancel
Save