From cc0eee9e5289f4f7216a9841f69a845db071693a Mon Sep 17 00:00:00 2001 From: "huayong.xu" Date: Thu, 2 Feb 2023 15:31:47 +0800 Subject: [PATCH] [NUI][API10] Fix some SVACE issue --- .../src/public/Common/PropertyNotification.cs | 19 ++++++++++++++----- src/Tizen.NUI/src/public/Events/PanGestureDetector.cs | 19 ++++++++++++++----- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/src/Tizen.NUI/src/public/Common/PropertyNotification.cs b/src/Tizen.NUI/src/public/Common/PropertyNotification.cs index c380290..37c85d5 100755 --- a/src/Tizen.NUI/src/public/Common/PropertyNotification.cs +++ b/src/Tizen.NUI/src/public/Common/PropertyNotification.cs @@ -281,25 +281,34 @@ namespace Tizen.NUI { if (IsNativeHandleInvalid()) { - var process = global::System.Diagnostics.Process.GetCurrentProcess()?.Id ?? -1; - var thread = global::System.Threading.Thread.CurrentThread.ManagedThreadId; - var me = this.GetType().FullName; if (this.Disposed) { if (propertyNotificationNotifyEventHandler != null) { + var process = global::System.Diagnostics.Process.GetCurrentProcess(); + var processId = process.Id; + var thread = global::System.Threading.Thread.CurrentThread.ManagedThreadId; + var me = this.GetType().FullName; + Tizen.Log.Error("NUI", $"Error! NUI's native dali object is already disposed. " + $"OR the native dali object handle of NUI becomes null! \n" + - $" process:{process} thread:{thread}, isDisposed:{this.Disposed}, isDisposeQueued:{this.IsDisposeQueued}, me:{me}\n"); + $" process:{processId} thread:{thread}, isDisposed:{this.Disposed}, isDisposeQueued:{this.IsDisposeQueued}, me:{me}\n"); + process.Dispose(); } } else { if (this.IsDisposeQueued) { + var process = global::System.Diagnostics.Process.GetCurrentProcess(); + var processId = process.Id; + var thread = global::System.Threading.Thread.CurrentThread.ManagedThreadId; + var me = this.GetType().FullName; + //in this case, this object is ready to be disposed waiting on DisposeQueue, so event callback should not be invoked! Tizen.Log.Error("NUI", "in this case, the View object is ready to be disposed waiting on DisposeQueue, so event callback should not be invoked! just return here! \n" + - $"process:{process} thread:{thread}, isDisposed:{this.Disposed}, isDisposeQueued:{this.IsDisposeQueued}, me:{me}\n"); + $"process:{processId} thread:{thread}, isDisposed:{this.Disposed}, isDisposeQueued:{this.IsDisposeQueued}, me:{me}\n"); + process.Dispose(); return; } } diff --git a/src/Tizen.NUI/src/public/Events/PanGestureDetector.cs b/src/Tizen.NUI/src/public/Events/PanGestureDetector.cs index 033dac7..5ffec17 100755 --- a/src/Tizen.NUI/src/public/Events/PanGestureDetector.cs +++ b/src/Tizen.NUI/src/public/Events/PanGestureDetector.cs @@ -589,25 +589,34 @@ namespace Tizen.NUI { if (IsNativeHandleInvalid()) { - var process = global::System.Diagnostics.Process.GetCurrentProcess()?.Id ?? -1; - var thread = global::System.Threading.Thread.CurrentThread.ManagedThreadId; - var me = this.GetType().FullName; if (this.Disposed) { if (detectedEventHandler != null) { + var process = global::System.Diagnostics.Process.GetCurrentProcess(); + var processId = process.Id; + var thread = global::System.Threading.Thread.CurrentThread.ManagedThreadId; + var me = this.GetType().FullName; + Tizen.Log.Error("NUI", $"Error! NUI's native dali object is already disposed. " + $"OR the native dali object handle of NUI becomes null! \n" + - $" process:{process} thread:{thread}, isDisposed:{this.Disposed}, isDisposeQueued:{this.IsDisposeQueued}, me:{me}\n"); + $" process:{processId} thread:{thread}, isDisposed:{this.Disposed}, isDisposeQueued:{this.IsDisposeQueued}, me:{me}\n"); + process.Dispose(); } } else { if (this.IsDisposeQueued) { + var process = global::System.Diagnostics.Process.GetCurrentProcess(); + var processId = process.Id; + var thread = global::System.Threading.Thread.CurrentThread.ManagedThreadId; + var me = this.GetType().FullName; + //in this case, this object is ready to be disposed waiting on DisposeQueue, so event callback should not be invoked! Tizen.Log.Error("NUI", "in this case, the View object is ready to be disposed waiting on DisposeQueue, so event callback should not be invoked! just return here! \n" + - $"process:{process} thread:{thread}, isDisposed:{this.Disposed}, isDisposeQueued:{this.IsDisposeQueued}, me:{me}\n"); + $"process:{processId} thread:{thread}, isDisposed:{this.Disposed}, isDisposeQueued:{this.IsDisposeQueued}, me:{me}\n"); + process.Dispose(); return; } } -- 2.7.4