Consider WeakReference resurrection at Registry.
authorEunki Hong <eunkiki.hong@samsung.com>
Sun, 8 Oct 2023 07:22:56 +0000 (16:22 +0900)
committerEunki Hong <h.pichulia@gmail.com>
Tue, 31 Oct 2023 14:07:28 +0000 (23:07 +0900)
Since NUI use DisposeQueue system instead of GC directly,
the lifecycle of WeakReference may need to be alive more times.

If we make trackResurrection as false, WeakReference.Target
become null when the item is in DisposeQueue.

Signed-off-by: Eunki Hong <eunkiki.hong@samsung.com>
src/Tizen.NUI/src/internal/Common/Registry.cs

index 7604d2e..7b2d732 100755 (executable)
@@ -58,7 +58,7 @@ namespace Tizen.NUI
 
             RegistryCurrentThreadCheck();
 
-            if (Instance._controlMap.TryAdd(refCptr, new WeakReference(baseHandle, false)) != true)
+            if (Instance._controlMap.TryAdd(refCptr, new WeakReference(baseHandle, true)) != true)
             {
                 WeakReference weakReference;
                 if(Instance._controlMap.TryGetValue(refCptr, out weakReference))