There was several problem when we call DaliAccessibilityDetachAccessibleObject
at Dispose(bool) function
- It will detach accessibility even if view doesn't owned the handle memory
- Dispose(bool) can be called at worker thread (during GC) so we need to check thread here
I make to DaliAccessibilityDetachAccessibleObject function at Dispose(DisposeTypes)
that we can ensure it called at main thread clearly.
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
- if (SwigCPtr.Handle != IntPtr.Zero && global::System.Threading.Thread.CurrentThread.ManagedThreadId == Registry.Instance.SavedApplicationThread.ManagedThreadId)
- {
- Interop.ControlDevel.DaliAccessibilityDetachAccessibleObject(SwigCPtr);
- if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
- }
-
if (disposing == false)
{
if (IsNativeHandleInvalid() || SwigCMemOwn == false)
if (disposing == false)
{
if (IsNativeHandleInvalid() || SwigCMemOwn == false)
+ if (SwigCMemOwn && !IsNativeHandleInvalid())
+ {
+ Interop.ControlDevel.DaliAccessibilityDetachAccessibleObject(SwigCPtr);
+ NDalicPINVOKE.ThrowExceptionIfExists();
+ }
+
//_mergedStyle = null;
internalMaximumSize?.Dispose();
//_mergedStyle = null;
internalMaximumSize?.Dispose();