Change window visibility changed signal 05/262705/1
authorHeeyong Song <heeyong.song@samsung.com>
Wed, 18 Aug 2021 07:20:55 +0000 (16:20 +0900)
committerHeeyong Song <heeyong.song@samsung.com>
Wed, 18 Aug 2021 07:25:44 +0000 (16:25 +0900)
Emit window visibility changed signal before the adaptor is paused / resumed
to ensure messages queued during the callback are processed.

Change-Id: I34917dcfa274f31c5e372ccdaa74bb98156d9857

dali/internal/window-system/common/window-impl.cpp

index 44f8b66..79228af 100644 (file)
@@ -99,9 +99,9 @@ Window::~Window()
 {
   if(mAdaptor)
   {
-    auto bridge      = Accessibility::Bridge::GetCurrentBridge();
-    auto rootLayer = mScene.GetRootLayer();
-    auto accessible  = Accessibility::Accessible::Get(rootLayer);
+    auto bridge     = Accessibility::Bridge::GetCurrentBridge();
+    auto rootLayer  = mScene.GetRootLayer();
+    auto accessible = Accessibility::Accessible::Get(rootLayer);
     bridge->RemoveTopLevelWindow(accessible);
 
     mAdaptor->RemoveWindow(this);
@@ -433,11 +433,11 @@ void Window::Show()
 
   if(!mIconified)
   {
-    WindowVisibilityObserver* observer(mAdaptor);
-    observer->OnWindowShown();
-
     Dali::Window handle(this);
     mVisibilityChangedSignal.Emit(handle, true);
+
+    WindowVisibilityObserver* observer(mAdaptor);
+    observer->OnWindowShown();
   }
 
   mSurface->SetFullSwapNextFrame();
@@ -453,11 +453,11 @@ void Window::Hide()
 
   if(!mIconified)
   {
-    WindowVisibilityObserver* observer(mAdaptor);
-    observer->OnWindowHidden();
-
     Dali::Window handle(this);
     mVisibilityChangedSignal.Emit(handle, false);
+
+    WindowVisibilityObserver* observer(mAdaptor);
+    observer->OnWindowHidden();
   }
 
   DALI_LOG_RELEASE_INFO("Window (%p), WinId (%d), Hide(): iconified = %d, visible = %d\n", this, mNativeWindowId, mIconified, mVisible);
@@ -711,11 +711,11 @@ void Window::OnIconifyChanged(bool iconified)
 
     if(mVisible)
     {
-      WindowVisibilityObserver* observer(mAdaptor);
-      observer->OnWindowHidden();
-
       Dali::Window handle(this);
       mVisibilityChangedSignal.Emit(handle, false);
+
+      WindowVisibilityObserver* observer(mAdaptor);
+      observer->OnWindowHidden();
     }
 
     DALI_LOG_RELEASE_INFO("Window (%p), WinId (%d), Iconified: visible = %d\n", this, mNativeWindowId, mVisible);
@@ -726,11 +726,11 @@ void Window::OnIconifyChanged(bool iconified)
 
     if(mVisible)
     {
-      WindowVisibilityObserver* observer(mAdaptor);
-      observer->OnWindowShown();
-
       Dali::Window handle(this);
       mVisibilityChangedSignal.Emit(handle, true);
+
+      WindowVisibilityObserver* observer(mAdaptor);
+      observer->OnWindowShown();
     }
 
     DALI_LOG_RELEASE_INFO("Window (%p), WinId (%d), Deiconified: visible = %d\n", this, mNativeWindowId, mVisible);