From 4e94111287a5999f5d3fd124a27b6c2792d0ff0f Mon Sep 17 00:00:00 2001 From: Heeyong Song Date: Fri, 20 Oct 2017 15:27:45 +0900 Subject: [PATCH] [4.0] Pause adaptor when the window is hidden Change-Id: I28b2b86ee6593ee4546763e59d129ea68b083b21 --- adaptors/common/window-impl.h | 1 + adaptors/ecore/wayland/window-impl-ecore-wl.cpp | 31 +++++++++++++++++++++---- adaptors/wayland/window-impl-wl.cpp | 1 + adaptors/x11/window-impl-x.cpp | 1 + 4 files changed, 29 insertions(+), 5 deletions(-) diff --git a/adaptors/common/window-impl.h b/adaptors/common/window-impl.h index 12de6a0..0f95871 100644 --- a/adaptors/common/window-impl.h +++ b/adaptors/common/window-impl.h @@ -428,6 +428,7 @@ private: bool mEcoreEventHander:1; bool mIsFocusAcceptable:1; bool mVisible:1; + bool mIconified:1; bool mOpaqueState:1; bool mResizeEnabled:1; IndicatorInterface* mIndicator; diff --git a/adaptors/ecore/wayland/window-impl-ecore-wl.cpp b/adaptors/ecore/wayland/window-impl-ecore-wl.cpp index 12ec48c..d4265b4 100644 --- a/adaptors/ecore/wayland/window-impl-ecore-wl.cpp +++ b/adaptors/ecore/wayland/window-impl-ecore-wl.cpp @@ -155,12 +155,20 @@ struct Window::EventHandler { if( iconifyChangedEvent->iconified == EINA_TRUE ) { - observer->OnWindowHidden(); + handler->mWindow->mIconified = true; + if( handler->mWindow->mVisible ) + { + observer->OnWindowHidden(); + } DALI_LOG_INFO( gWindowLogFilter, Debug::General, "Window (%d) Iconfied\n", handler->mEcoreWindow ); } else { - observer->OnWindowShown(); + handler->mWindow->mIconified = false; + if( handler->mWindow->mVisible ) + { + observer->OnWindowShown(); + } DALI_LOG_INFO( gWindowLogFilter, Debug::General, "Window (%d) Shown\n", handler->mEcoreWindow ); } handled = ECORE_CALLBACK_DONE; @@ -497,6 +505,7 @@ Window::Window() mEcoreEventHander( true ), mIsFocusAcceptable( true ), mVisible( true ), + mIconified( false ), mOpaqueState( false ), mResizeEnabled( false ), mIndicator( NULL ), @@ -875,10 +884,13 @@ void Window::Show() mVisible = true; ecore_wl_window_show( mEventHandler->mEcoreWindow ); - // Need an update request - if( mAdaptor ) + if( !mIconified ) { - mAdaptor->RequestUpdateOnce(); + if( mAdaptor ) + { + WindowVisibilityObserver* observer( mAdaptor ); + observer->OnWindowShown(); + } } } @@ -886,6 +898,15 @@ void Window::Hide() { mVisible = false; ecore_wl_window_hide( mEventHandler->mEcoreWindow ); + + if( !mIconified ) + { + if( mAdaptor ) + { + WindowVisibilityObserver* observer( mAdaptor ); + observer->OnWindowHidden(); + } + } } bool Window::IsVisible() const diff --git a/adaptors/wayland/window-impl-wl.cpp b/adaptors/wayland/window-impl-wl.cpp index 875f5cb..d507f04 100644 --- a/adaptors/wayland/window-impl-wl.cpp +++ b/adaptors/wayland/window-impl-wl.cpp @@ -111,6 +111,7 @@ Window::Window() mWMRotationAppSet( false ), mIsFocusAcceptable( true ), mVisible( true ), + mIconified( false ), mOpaqueState( false ), mResizeEnabled( true ), mIndicator( NULL ), diff --git a/adaptors/x11/window-impl-x.cpp b/adaptors/x11/window-impl-x.cpp index 4820b36..0af5d48 100644 --- a/adaptors/x11/window-impl-x.cpp +++ b/adaptors/x11/window-impl-x.cpp @@ -348,6 +348,7 @@ Window::Window() mEcoreEventHander( true ), mIsFocusAcceptable( true ), mVisible( true ), + mIconified( false ), mOpaqueState( false ), mResizeEnabled( true ), mIndicator( NULL ), -- 2.7.4