mirror of
https://github.com/Cysharp/UniTask.git
synced 2026-05-25 17:30:12 +00:00
Deleted preserveRemoveSelf because Remove() should always remove a trigger for pooling to work correctly
This commit is contained in:
@@ -20,8 +20,6 @@ namespace Cysharp.Threading.Tasks
|
|||||||
{
|
{
|
||||||
ITriggerHandler<T> head; // head.prev is last
|
ITriggerHandler<T> head; // head.prev is last
|
||||||
ITriggerHandler<T> iteratingHead;
|
ITriggerHandler<T> iteratingHead;
|
||||||
|
|
||||||
bool preserveRemoveSelf;
|
|
||||||
ITriggerHandler<T> iteratingNode;
|
ITriggerHandler<T> iteratingNode;
|
||||||
|
|
||||||
void LogError(Exception ex)
|
void LogError(Exception ex)
|
||||||
@@ -44,6 +42,7 @@ namespace Cysharp.Threading.Tasks
|
|||||||
while (h != null)
|
while (h != null)
|
||||||
{
|
{
|
||||||
iteratingNode = h;
|
iteratingNode = h;
|
||||||
|
var next = h.Next;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -55,19 +54,8 @@ namespace Cysharp.Threading.Tasks
|
|||||||
Remove(h);
|
Remove(h);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (preserveRemoveSelf)
|
|
||||||
{
|
|
||||||
preserveRemoveSelf = false;
|
|
||||||
iteratingNode = null;
|
|
||||||
var next = h.Next;
|
|
||||||
Remove(h);
|
|
||||||
h = next;
|
h = next;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
h = h.Next;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
iteratingNode = null;
|
iteratingNode = null;
|
||||||
if (iteratingHead != null)
|
if (iteratingHead != null)
|
||||||
@@ -97,7 +85,6 @@ namespace Cysharp.Threading.Tasks
|
|||||||
LogError(ex);
|
LogError(ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
preserveRemoveSelf = false;
|
|
||||||
iteratingNode = null;
|
iteratingNode = null;
|
||||||
var next = h.Next;
|
var next = h.Next;
|
||||||
Remove(h);
|
Remove(h);
|
||||||
@@ -132,7 +119,6 @@ namespace Cysharp.Threading.Tasks
|
|||||||
LogError(ex);
|
LogError(ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
preserveRemoveSelf = false;
|
|
||||||
iteratingNode = null;
|
iteratingNode = null;
|
||||||
var next = h.Next;
|
var next = h.Next;
|
||||||
Remove(h);
|
Remove(h);
|
||||||
@@ -167,7 +153,6 @@ namespace Cysharp.Threading.Tasks
|
|||||||
LogError(ex);
|
LogError(ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
preserveRemoveSelf = false;
|
|
||||||
iteratingNode = null;
|
iteratingNode = null;
|
||||||
var next = h.Next;
|
var next = h.Next;
|
||||||
Remove(h);
|
Remove(h);
|
||||||
@@ -241,13 +226,6 @@ namespace Cysharp.Threading.Tasks
|
|||||||
{
|
{
|
||||||
if (handler == null) throw new ArgumentNullException(nameof(handler));
|
if (handler == null) throw new ArgumentNullException(nameof(handler));
|
||||||
|
|
||||||
if (iteratingNode != null && iteratingNode == handler)
|
|
||||||
{
|
|
||||||
// if remove self, reserve remove self after invoke completed.
|
|
||||||
preserveRemoveSelf = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var prev = handler.Prev;
|
var prev = handler.Prev;
|
||||||
var next = handler.Next;
|
var next = handler.Next;
|
||||||
|
|
||||||
@@ -307,5 +285,4 @@ namespace Cysharp.Threading.Tasks
|
|||||||
handler.Next = null;
|
handler.Next = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user