From: Heeyong Song Date: Fri, 20 Oct 2017 06:27:45 +0000 (+0900) Subject: [4.0] Pause adaptor when the window is hidden X-Git-Tag: accepted/tizen/4.0/unified/20171103.162651~3 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git;a=commitdiff_plain;h=4e94111287a5999f5d3fd124a27b6c2792d0ff0f [4.0] Pause adaptor when the window is hidden Change-Id: I28b2b86ee6593ee4546763e59d129ea68b083b21 --- 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 ),