From b28705c18c0de1300d43550b9ec28f2a1080b3c2 Mon Sep 17 00:00:00 2001 From: dongsug-song <35130733+dongsug-song@users.noreply.github.com> Date: Mon, 10 Dec 2018 09:36:08 +0900 Subject: [PATCH] [NUI] Disconnect all native signals of Window class when application is terminated (#600) --- src/Tizen.NUI/src/internal/Application.cs | 2 ++ src/Tizen.NUI/src/public/Window.cs | 58 +++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/src/Tizen.NUI/src/internal/Application.cs b/src/Tizen.NUI/src/internal/Application.cs index 77085bc..b6b777b 100755 --- a/src/Tizen.NUI/src/internal/Application.cs +++ b/src/Tizen.NUI/src/internal/Application.cs @@ -1002,6 +1002,8 @@ namespace Tizen.NUI e.Application = this; _applicationTerminateEventHandler.Invoke(this, e); } + + Window.Instance.DisconnectNativeSignals(); } /** diff --git a/src/Tizen.NUI/src/public/Window.cs b/src/Tizen.NUI/src/public/Window.cs index a470427..948990e 100755 --- a/src/Tizen.NUI/src/public/Window.cs +++ b/src/Tizen.NUI/src/public/Window.cs @@ -1789,5 +1789,63 @@ namespace Tizen.NUI } } + /// + /// Disconnect all native signals + /// + /// 5 + internal void DisconnectNativeSignals() + { + if( _windowFocusChangedEventCallback != null ) + { + WindowFocusChangedSignal().Disconnect(_windowFocusChangedEventCallback); + } + + if( _rootLayerTouchDataCallback != null ) + { + TouchDataSignal().Disconnect(_rootLayerTouchDataCallback); + } + + if( _wheelEventCallback != null ) + { + StageWheelEventSignal().Disconnect(_wheelEventCallback); + } + + if( _stageKeyCallbackDelegate != null ) + { + KeyEventSignal().Disconnect(_stageKeyCallbackDelegate); + } + + if( _stageEventProcessingFinishedEventCallbackDelegate != null ) + { + EventProcessingFinishedSignal().Disconnect(_stageEventProcessingFinishedEventCallbackDelegate); + } + + if( _stageContextLostEventCallbackDelegate != null ) + { + ContextLostSignal().Disconnect(_stageContextLostEventCallbackDelegate); + } + + if( _stageContextRegainedEventCallbackDelegate != null ) + { + ContextRegainedSignal().Disconnect(_stageContextRegainedEventCallbackDelegate); + } + + if( _stageSceneCreatedEventCallbackDelegate != null ) + { + SceneCreatedSignal().Disconnect(_stageSceneCreatedEventCallbackDelegate); + } + + if( _windowResizedEventCallback != null ) + { + ResizedSignal().Disconnect(_windowResizedEventCallback); + } + + if( _windowFocusChangedEventCallback2 != null ) + { + WindowFocusChangedSignal().Disconnect(_windowFocusChangedEventCallback2); + } + + } + } } -- 2.7.4