using System.Runtime.InteropServices;
using Tizen.NUI.BaseComponents;
using System.Collections.Generic;
+using System.Diagnostics;
namespace Tizen.NUI
{
{
if (windowFocusChangedEventHandler == null)
{
- windowFocusChangedEventCallback = OnWindowFocusedChanged;
+ CreateSafeCallback(OnWindowFocusedChanged, out windowFocusChangedEventCallback);
using WindowFocusSignalType signal = new WindowFocusSignalType(Interop.Window.FocusChangedSignal(SwigCPtr), false);
signal.Ensure()?.Connect(windowFocusChangedEventCallback);
}
{
using WindowFocusSignalType signal = new WindowFocusSignalType(Interop.Window.FocusChangedSignal(SwigCPtr), false);
signal.Ensure()?.Disconnect(windowFocusChangedEventCallback);
- windowFocusChangedEventCallback = null;
+ ReleaseSafeCallback(ref windowFocusChangedEventCallback);
}
}
}
{
if (rootLayerTouchDataEventHandler == null)
{
- rootLayerTouchDataCallback = OnWindowTouch;
+ CreateSafeCallback(OnWindowTouch, out rootLayerTouchDataCallback);
Interop.ActorSignal.TouchConnect(Layer.getCPtr(GetRootLayer()), rootLayerTouchDataCallback.ToHandleRef(this));
NDalicPINVOKE.ThrowExceptionIfExists();
}
{
Interop.ActorSignal.TouchDisconnect(Layer.getCPtr(GetRootLayer()), rootLayerTouchDataCallback.ToHandleRef(this));
NDalicPINVOKE.ThrowExceptionIfExists();
- rootLayerTouchDataCallback = null;
+ ReleaseSafeCallback(ref rootLayerTouchDataCallback);
}
}
}
{
if (rootLayerInterceptTouchDataEventHandler == null)
{
- rootLayerInterceptTouchDataCallback = OnWindowInterceptTouch;
+ CreateSafeCallback(OnWindowInterceptTouch, out rootLayerInterceptTouchDataCallback);
Interop.ActorSignal.InterceptTouchConnect(Layer.getCPtr(GetRootLayer()), rootLayerInterceptTouchDataCallback.ToHandleRef(this));
NDalicPINVOKE.ThrowExceptionIfExists();
}
{
Interop.ActorSignal.InterceptTouchDisconnect(Layer.getCPtr(GetRootLayer()), rootLayerInterceptTouchDataCallback.ToHandleRef(this));
NDalicPINVOKE.ThrowExceptionIfExists();
- rootLayerInterceptTouchDataCallback = null;
+ ReleaseSafeCallback(ref rootLayerInterceptTouchDataCallback);
}
}
}
{
if (stageWheelHandler == null)
{
- wheelEventCallback = OnStageWheel;
+ CreateSafeCallback(OnStageWheel, out wheelEventCallback);
Interop.ActorSignal.WheelEventConnect(Layer.getCPtr(GetRootLayer()), wheelEventCallback.ToHandleRef(this));
NDalicPINVOKE.ThrowExceptionIfExists();
}
if (DetentEventHandler == null)
{
- DetentEventCallback = OnDetentEvent;
+ CreateSafeCallback(OnDetentEvent, out DetentEventCallback);
using StageWheelSignal signal = new StageWheelSignal(Interop.StageSignal.WheelEventSignal(stageCPtr), false);
signal.Ensure()?.Connect(DetentEventCallback);
}
{
Interop.ActorSignal.WheelEventDisconnect(Layer.getCPtr(GetRootLayer()), wheelEventCallback.ToHandleRef(this));
NDalicPINVOKE.ThrowExceptionIfExists();
- wheelEventCallback = null;
+ ReleaseSafeCallback(ref wheelEventCallback);
}
DetentEventHandler -= value;
{
using StageWheelSignal signal = new StageWheelSignal(Interop.StageSignal.WheelEventSignal(stageCPtr), false);
signal.Ensure()?.Disconnect(DetentEventCallback);
- DetentEventCallback = null;
+ ReleaseSafeCallback(ref DetentEventCallback);
}
}
}
{
if (interceptWheelHandler == null)
{
- interceptWheelCallback = OnWindowInterceptWheel;
+ CreateSafeCallback(OnWindowInterceptWheel, out interceptWheelCallback);
Interop.ActorSignal.InterceptWheelConnect(Layer.getCPtr(GetRootLayer()), interceptWheelCallback.ToHandleRef(this));
NDalicPINVOKE.ThrowExceptionIfExists();
}
{
Interop.ActorSignal.InterceptWheelDisconnect(Layer.getCPtr(GetRootLayer()), interceptWheelCallback.ToHandleRef(this));
NDalicPINVOKE.ThrowExceptionIfExists();
- interceptWheelCallback = null;
+ ReleaseSafeCallback(ref interceptWheelCallback);
}
}
}
{
if (stageKeyHandler == null)
{
- stageKeyCallbackDelegate = OnStageKey;
+ CreateSafeCallback(OnStageKey, out stageKeyCallbackDelegate);
using KeyEventSignal signal = new KeyEventSignal(Interop.Window.KeyEventSignal(SwigCPtr), false);
signal.Ensure()?.Connect(stageKeyCallbackDelegate);
}
{
using KeyEventSignal signal = new KeyEventSignal(Interop.Window.KeyEventSignal(SwigCPtr), false);
signal.Ensure()?.Disconnect(stageKeyCallbackDelegate);
- stageKeyCallbackDelegate = null;
+ ReleaseSafeCallback(ref stageKeyCallbackDelegate);
}
}
}
{
if (stageInterceptKeyHandler == null)
{
- stageInterceptKeyCallbackDelegate = OnStageInterceptKey;
+ CreateSafeCallback(OnStageInterceptKey, out stageInterceptKeyCallbackDelegate);
using KeyEventSignal signal = new KeyEventSignal(Interop.Window.InterceptKeyEventSignal(SwigCPtr), false);
signal.Ensure()?.Connect(stageInterceptKeyCallbackDelegate);
}
{
using KeyEventSignal signal = new KeyEventSignal(Interop.Window.InterceptKeyEventSignal(SwigCPtr), false);
signal.Ensure()?.Disconnect(stageInterceptKeyCallbackDelegate);
- stageInterceptKeyCallbackDelegate = null;
+ ReleaseSafeCallback(ref stageInterceptKeyCallbackDelegate);
}
}
}
{
if (windowResizeEventHandler == null)
{
- windowResizeEventCallback = OnResized;
+ CreateSafeCallback(OnResized, out windowResizeEventCallback);
using ResizeSignal signal = new ResizeSignal(Interop.Window.ResizeSignal(SwigCPtr), false);
signal.Ensure()?.Connect(windowResizeEventCallback);
}
{
using ResizeSignal signal = new ResizeSignal(Interop.Window.ResizeSignal(SwigCPtr), false);
signal.Ensure()?.Disconnect(windowResizeEventCallback);
- windowResizeEventCallback = null;
+ ReleaseSafeCallback(ref windowResizeEventCallback);
}
}
}
{
if (rootLayerHoverDataEventHandler == null)
{
- rootLayerHoverDataCallback = OnWindowHover;
+ CreateSafeCallback(OnWindowHover, out rootLayerHoverDataCallback);
Interop.ActorSignal.HoveredConnect(Layer.getCPtr(GetRootLayer()), rootLayerHoverDataCallback.ToHandleRef(this));
NDalicPINVOKE.ThrowExceptionIfExists();
}
{
Interop.ActorSignal.HoveredDisconnect(Layer.getCPtr(GetRootLayer()), rootLayerHoverDataCallback.ToHandleRef(this));
NDalicPINVOKE.ThrowExceptionIfExists();
- rootLayerHoverDataCallback = null;
+ ReleaseSafeCallback(ref rootLayerHoverDataCallback);
}
}
}
{
if (windowFocusChangedEventHandler2 == null)
{
- windowFocusChangedEventCallback2 = OnWindowFocusedChanged2;
+ CreateSafeCallback(OnWindowFocusedChanged2, out windowFocusChangedEventCallback2);
using WindowFocusSignalType signal = new WindowFocusSignalType(Interop.Window.FocusChangedSignal(SwigCPtr), false);
signal.Ensure()?.Connect(windowFocusChangedEventCallback2);
}
{
using WindowFocusSignalType signal = new WindowFocusSignalType(Interop.Window.FocusChangedSignal(SwigCPtr), false);
signal.Ensure()?.Disconnect(windowFocusChangedEventCallback2);
- windowFocusChangedEventCallback2 = null;
+ ReleaseSafeCallback(ref windowFocusChangedEventCallback2);
}
}
}
{
if (transitionEffectHandler == null)
{
- transitionEffectEventCallback = OnTransitionEffect;
+ CreateSafeCallback(OnTransitionEffect, out transitionEffectEventCallback);
using WindowTransitionEffectSignal signal = new WindowTransitionEffectSignal(Interop.WindowTransitionEffectSignal.GetSignal(SwigCPtr), false);
signal.Ensure()?.Connect(transitionEffectEventCallback);
}
{
using WindowTransitionEffectSignal signal = new WindowTransitionEffectSignal(Interop.WindowTransitionEffectSignal.GetSignal(SwigCPtr), false);
signal.Ensure()?.Disconnect(transitionEffectEventCallback);
- transitionEffectEventCallback = null;
+ ReleaseSafeCallback(ref transitionEffectEventCallback);
}
}
}
{
if (movedHandler == null)
{
- movedEventCallback = OnMoved;
+ CreateSafeCallback(OnMoved, out movedEventCallback);
using WindowMovedSignal signal = new WindowMovedSignal(Interop.WindowMovedSignal.GetSignal(SwigCPtr), false);
signal.Ensure()?.Connect(movedEventCallback);
}
{
using WindowMovedSignal signal = new WindowMovedSignal(Interop.WindowMovedSignal.GetSignal(SwigCPtr), false);
signal.Ensure()?.Disconnect(movedEventCallback);
- movedEventCallback = null;
+ ReleaseSafeCallback(ref movedEventCallback);
}
}
}
{
if (orientationChangedHandler == null)
{
- orientationChangedEventCallback = OnOrientationChanged;
+ CreateSafeCallback(OnOrientationChanged, out orientationChangedEventCallback);
using WindowOrientationChangedSignal signal = new WindowOrientationChangedSignal(Interop.WindowOrientationChangedSignal.GetSignal(SwigCPtr), false);
signal.Ensure()?.Connect(orientationChangedEventCallback);
}
{
using WindowOrientationChangedSignal signal = new WindowOrientationChangedSignal(Interop.WindowOrientationChangedSignal.GetSignal(SwigCPtr), false);
signal.Ensure()?.Disconnect(orientationChangedEventCallback);
- orientationChangedEventCallback = null;
+ ReleaseSafeCallback(ref orientationChangedEventCallback);
}
}
}
{
if (keyboardRepeatSettingsChangedHandler == null)
{
- keyboardRepeatSettingsChangedEventCallback = OnKeyboardRepeatSettingsChanged;
+ CreateSafeCallback(OnKeyboardRepeatSettingsChanged, out keyboardRepeatSettingsChangedEventCallback);
using KeyboardRepeatSettingsChangedSignal signal = new KeyboardRepeatSettingsChangedSignal(Interop.KeyboardRepeatSettingsChangedSignal.GetSignal(SwigCPtr), false);
signal.Ensure()?.Connect(keyboardRepeatSettingsChangedEventCallback);
}
{
using KeyboardRepeatSettingsChangedSignal signal = new KeyboardRepeatSettingsChangedSignal(Interop.KeyboardRepeatSettingsChangedSignal.GetSignal(SwigCPtr), false);
signal.Ensure()?.Disconnect(keyboardRepeatSettingsChangedEventCallback);
- keyboardRepeatSettingsChangedEventCallback = null;
+ ReleaseSafeCallback(ref keyboardRepeatSettingsChangedEventCallback);
}
}
}
{
if (windowMouseInOutEventHandler == null)
{
- windowMouseInOutEventCallback = OnWindowMouseInOutEvent;
+ CreateSafeCallback(OnWindowMouseInOutEvent, out windowMouseInOutEventCallback);
using WindowMouseInOutEventSignal signal = new WindowMouseInOutEventSignal(Interop.WindowMouseInOutEventSignal.GetSignal(SwigCPtr), false);
signal.Ensure()?.Connect(windowMouseInOutEventCallback);
}
{
using WindowMouseInOutEventSignal signal = new WindowMouseInOutEventSignal(Interop.WindowMouseInOutEventSignal.GetSignal(SwigCPtr), false);
signal.Ensure()?.Disconnect(windowMouseInOutEventCallback);
- windowMouseInOutEventCallback = null;
+ ReleaseSafeCallback(ref windowMouseInOutEventCallback);
}
}
}
{
if (moveCompletedHandler == null)
{
- moveCompletedEventCallback = OnMoveCompleted;
+ CreateSafeCallback(OnMoveCompleted, out moveCompletedEventCallback);
using WindowMoveCompletedSignal signal = new WindowMoveCompletedSignal(Interop.WindowMoveCompletedSignal.GetSignal(SwigCPtr), false);
signal.Ensure()?.Connect(moveCompletedEventCallback);
}
{
using WindowMoveCompletedSignal signal = new WindowMoveCompletedSignal(Interop.WindowMoveCompletedSignal.GetSignal(SwigCPtr), false);
signal.Ensure()?.Disconnect(moveCompletedEventCallback);
- moveCompletedEventCallback = null;
+ ReleaseSafeCallback(ref moveCompletedEventCallback);
}
}
}
{
if (resizeCompletedHandler == null)
{
- resizeCompletedEventCallback = OnResizeCompleted;
+ CreateSafeCallback(OnResizeCompleted, out resizeCompletedEventCallback);
using WindowResizeCompletedSignal signal = new WindowResizeCompletedSignal(Interop.WindowResizeCompletedSignal.GetSignal(SwigCPtr), false);
signal.Ensure()?.Connect(resizeCompletedEventCallback);
}
{
using WindowResizeCompletedSignal signal = new WindowResizeCompletedSignal(Interop.WindowResizeCompletedSignal.GetSignal(SwigCPtr), false);
signal.Ensure()?.Disconnect(resizeCompletedEventCallback);
- resizeCompletedEventCallback = null;
+ ReleaseSafeCallback(ref resizeCompletedEventCallback);
}
}
}
{
if (windowMouseRelativeEventHandler == null)
{
- windowMouseRelativeEventCallback = OnWindowMouseRelativeEvent;
+ CreateSafeCallback(OnWindowMouseRelativeEvent, out windowMouseRelativeEventCallback);
using WindowMouseRelativeEventSignal signal = new WindowMouseRelativeEventSignal(Interop.WindowMouseRelativeEventSignal.GetSignal(SwigCPtr), false);
signal?.Connect(windowMouseRelativeEventCallback);
}
{
using WindowMouseRelativeEventSignal signal = new WindowMouseRelativeEventSignal(Interop.WindowMouseRelativeEventSignal.GetSignal(SwigCPtr), false);
signal?.Disconnect(windowMouseRelativeEventCallback);
- windowMouseRelativeEventCallback = null;
+ ReleaseSafeCallback(ref windowMouseRelativeEventCallback);
}
}
}
{
if (windowPointerConstraintsEventHandler == null)
{
- windowPointerConstraintsEventCallback = OnWindowPointerConstraintsEvent;
+ CreateSafeCallback(OnWindowPointerConstraintsEvent, out windowPointerConstraintsEventCallback);
using WindowPointerConstraintsSignal signal = new WindowPointerConstraintsSignal(Interop.WindowPointerConstraintsSignal.GetSignal(SwigCPtr), false);
signal?.Connect(windowPointerConstraintsEventCallback);
}
{
using WindowPointerConstraintsSignal signal = new WindowPointerConstraintsSignal(Interop.WindowPointerConstraintsSignal.GetSignal(SwigCPtr), false);
signal?.Disconnect(windowPointerConstraintsEventCallback);
- windowPointerConstraintsEventCallback = null;
+ ReleaseSafeCallback(ref windowPointerConstraintsEventCallback);
}
}
}
{
if (stageEventProcessingFinishedEventHandler == null)
{
- stageEventProcessingFinishedEventCallbackDelegate = OnEventProcessingFinished;
+ CreateSafeCallback(OnEventProcessingFinished, out stageEventProcessingFinishedEventCallbackDelegate);
using VoidSignal signal = new VoidSignal(Interop.StageSignal.EventProcessingFinishedSignal(stageCPtr), false);
signal.Ensure()?.Connect(stageEventProcessingFinishedEventCallbackDelegate);
}
{
using VoidSignal signal = new VoidSignal(Interop.StageSignal.EventProcessingFinishedSignal(stageCPtr), false);
signal.Ensure()?.Disconnect(stageEventProcessingFinishedEventCallbackDelegate);
- stageEventProcessingFinishedEventCallbackDelegate = null;
+ ReleaseSafeCallback(ref stageEventProcessingFinishedEventCallbackDelegate);
}
}
}
{
if (stageContextLostEventHandler == null)
{
- stageContextLostEventCallbackDelegate = OnContextLost;
+ CreateSafeCallback(OnContextLost, out stageContextLostEventCallbackDelegate);
using VoidSignal signal = new VoidSignal(Interop.StageSignal.ContextLostSignal(stageCPtr), false);
signal.Ensure()?.Connect(stageContextLostEventCallbackDelegate);
}
{
using VoidSignal signal = new VoidSignal(Interop.StageSignal.ContextLostSignal(stageCPtr), false);
signal.Ensure()?.Disconnect(stageContextLostEventCallbackDelegate);
- stageContextLostEventCallbackDelegate = null;
+ ReleaseSafeCallback(ref stageContextLostEventCallbackDelegate);
}
}
}
{
if (stageContextRegainedEventHandler == null)
{
- stageContextRegainedEventCallbackDelegate = OnContextRegained;
+ CreateSafeCallback(OnContextRegained, out stageContextRegainedEventCallbackDelegate);
using VoidSignal signal = new VoidSignal(Interop.StageSignal.ContextRegainedSignal(stageCPtr), false);
signal.Ensure()?.Connect(stageContextRegainedEventCallbackDelegate);
}
{
using VoidSignal signal = new VoidSignal(Interop.StageSignal.ContextRegainedSignal(stageCPtr), false);
signal.Ensure()?.Disconnect(stageContextRegainedEventCallbackDelegate);
- stageContextRegainedEventCallbackDelegate = null;
+ ReleaseSafeCallback(ref stageContextRegainedEventCallbackDelegate);
}
}
}
{
if (stageSceneCreatedEventHandler == null)
{
- stageSceneCreatedEventCallbackDelegate = OnSceneCreated;
+ CreateSafeCallback(OnSceneCreated, out stageSceneCreatedEventCallbackDelegate);
using VoidSignal signal = new VoidSignal(Interop.StageSignal.SceneCreatedSignal(stageCPtr), false);
signal.Ensure()?.Connect(stageSceneCreatedEventCallbackDelegate);
}
{
using VoidSignal signal = new VoidSignal(Interop.StageSignal.SceneCreatedSignal(stageCPtr), false);
signal.Ensure()?.Disconnect(stageSceneCreatedEventCallbackDelegate);
- stageSceneCreatedEventCallbackDelegate = null;
+ ReleaseSafeCallback(ref stageSceneCreatedEventCallbackDelegate);
}
}
}
{
if (VisibilityChangedEventHandler == null)
{
- VisibilityChangedEventCallback = OnVisibilityChanged;
+ CreateSafeCallback(OnVisibilityChanged, out VisibilityChangedEventCallback);
using WindowVisibilityChangedEvent signal = new WindowVisibilityChangedEvent(Interop.WindowVisibilityChangedSignal.GetSignal(Window.getCPtr(this)), false);
signal.Ensure()?.Connect(VisibilityChangedEventCallback);
}
{
using WindowVisibilityChangedEvent signal = new WindowVisibilityChangedEvent(Interop.WindowVisibilityChangedSignal.GetSignal(Window.getCPtr(this)), false);
signal.Ensure()?.Disconnect(VisibilityChangedEventCallback);
- VisibilityChangedEventCallback = null;
+ ReleaseSafeCallback(ref VisibilityChangedEventCallback);
}
}
}
{
if (auxiliaryMessageEventHandler == null)
{
- auxiliaryMessageEventCallback = OnAuxiliaryMessage;
+ CreateSafeCallback(OnAuxiliaryMessage, out auxiliaryMessageEventCallback);
using WindowAuxiliaryMessageSignal signal = new WindowAuxiliaryMessageSignal(Interop.WindowAuxiliaryMessageSignalType.Get(SwigCPtr), false);
signal.Ensure()?.Connect(auxiliaryMessageEventCallback);
}
{
using WindowAuxiliaryMessageSignal signal = new WindowAuxiliaryMessageSignal(Interop.WindowAuxiliaryMessageSignalType.Get(SwigCPtr), false);
signal.Ensure()?.Disconnect(auxiliaryMessageEventCallback);
- auxiliaryMessageEventCallback = null;
+ ReleaseSafeCallback(ref auxiliaryMessageEventCallback);
}
}
}
{
if (insetsChangedEventHandler == null)
{
- insetsChangedEventCallback = OnInsetsChanged;
+ CreateSafeCallback(OnInsetsChanged, out insetsChangedEventCallback);
using WindowInsetsChangedSignal signal = new WindowInsetsChangedSignal(Interop.WindowInsetsChangedSignalType.Get(SwigCPtr), false);
signal.Ensure()?.Connect(insetsChangedEventCallback);
}
{
using WindowInsetsChangedSignal signal = new WindowInsetsChangedSignal(Interop.WindowInsetsChangedSignalType.Get(SwigCPtr), false);
signal.Ensure()?.Disconnect(insetsChangedEventCallback);
- insetsChangedEventCallback = null;
+ ReleaseSafeCallback(ref insetsChangedEventCallback);
}
}
}
{
if (AccessibilityHighlightEventHandler == null)
{
- AccessibilityHighlightEventCallback = OnAccessibilityHighlight;
+ CreateSafeCallback(OnAccessibilityHighlight, out AccessibilityHighlightEventCallback);
using WindowAccessibilityHighlightEvent signal = new WindowAccessibilityHighlightEvent(Interop.WindowAccessibilityHighlightSignal.GetSignal(SwigCPtr), false);
signal.Ensure()?.Connect(AccessibilityHighlightEventCallback);
}
{
using WindowAccessibilityHighlightEvent signal = new WindowAccessibilityHighlightEvent(Interop.WindowAccessibilityHighlightSignal.GetSignal(SwigCPtr), false);
signal.Ensure()?.Disconnect(AccessibilityHighlightEventCallback);
- AccessibilityHighlightEventCallback = null;
+ ReleaseSafeCallback(ref AccessibilityHighlightEventCallback);
}
}
}
+
+ void CreateSafeCallback<T>(T method, out T safeCallback) where T : Delegate
+ {
+ AddToNativeHolder(method);
+ safeCallback = method;
+ }
+
+ void ReleaseSafeCallback<T>(ref T safeCallback) where T : Delegate
+ {
+ Debug.Assert(safeCallback != null);
+ RemoveFromNativeHolder(safeCallback);
+ safeCallback = null;
+ }
+
}
/// <summary>