X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fwindow-system%2Fcommon%2Fwindow-impl.cpp;h=a2141445e78c9ecd38a9f77fc02f862ee81fa530;hb=9c2bae6039a7b0dc11e9e67ff51b3d608ccb3e50;hp=a0fd8098f987ac3fb28bac57a4f5ce13aa5f5d08;hpb=aecc2d4c642e0cdf360e56accd3e5b96622a707f;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git diff --git a/dali/internal/window-system/common/window-impl.cpp b/dali/internal/window-system/common/window-impl.cpp old mode 100644 new mode 100755 index a0fd809..a214144 --- a/dali/internal/window-system/common/window-impl.cpp +++ b/dali/internal/window-system/common/window-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. + * Copyright (c) 2020 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,6 +32,7 @@ // INTERNAL HEADERS #include +#include #include #include #include @@ -87,25 +88,17 @@ Window::Window() mWindowHeight( 0 ), mOrientationMode( Internal::Adaptor::Window::OrientationMode::PORTRAIT ), mNativeWindowId( -1 ), - mFocusChangedSignal(), - mResizedSignal(), mDeleteRequestSignal(), mFocusChangeSignal(), mResizeSignal(), mVisibilityChangedSignal(), - mTransitionEffectEventSignal() + mTransitionEffectEventSignal(), + mKeyboardRepeatSettingsChangedSignal() { } Window::~Window() { - mIsBeingDeleted = true; - - while ( mAdaptor && mAdaptor->IsRenderingWindows() ) - { - std::this_thread::yield(); // to allow other threads to run - } - if ( mEventHandler ) { mEventHandler->RemoveObserver( *this ); @@ -127,6 +120,8 @@ void Window::Initialize(Any surface, const PositionSize& positionSize, const std mWindowBase->FocusChangedSignal().Connect( this, &Window::OnFocusChanged ); mWindowBase->DeleteRequestSignal().Connect( this, &Window::OnDeleteRequest ); mWindowBase->TransitionEffectEventSignal().Connect( this, &Window::OnTransitionEffectEvent ); + mWindowBase->KeyboardRepeatSettingsChangedSignal().Connect( this, &Window::OnKeyboardRepeatSettingsChanged ); + mWindowBase->WindowRedrawRequestSignal().Connect( this, &Window::OnWindowRedrawRequest ); mWindowSurface->OutputTransformedSignal().Connect( this, &Window::OnOutputTransformed ); @@ -168,18 +163,6 @@ void Window::OnSurfaceSet( Dali::RenderSurfaceInterface* surface ) mWindowSurface = static_cast( surface ); } -void Window::ShowIndicator( Dali::Window::IndicatorVisibleMode visibleMode ) -{ -} - -void Window::SetIndicatorBgOpacity( Dali::Window::IndicatorBgOpacity opacityMode ) -{ -} - -void Window::RotateIndicator( Dali::Window::WindowOrientation orientation ) -{ -} - void Window::SetClass( std::string name, std::string className ) { mName = name; @@ -195,18 +178,27 @@ std::string Window::GetClassName() const void Window::Raise() { mWindowBase->Raise(); + + mSurface->SetFullSwapNextFrame(); + DALI_LOG_RELEASE_INFO( "Window (%p), WinId (%d), Raise() \n", this, mNativeWindowId ); } void Window::Lower() { mWindowBase->Lower(); + + mSurface->SetFullSwapNextFrame(); + DALI_LOG_RELEASE_INFO( "Window (%p), WinId (%d), Lower() \n", this, mNativeWindowId ); } void Window::Activate() { mWindowBase->Activate(); + + mSurface->SetFullSwapNextFrame(); + DALI_LOG_RELEASE_INFO( "Window (%p), WinId (%d), Activate() \n", this, mNativeWindowId ); } @@ -419,6 +411,8 @@ void Window::Show() mVisibilityChangedSignal.Emit( handle, true ); } + mSurface->SetFullSwapNextFrame(); + DALI_LOG_RELEASE_INFO( "Window (%p), WinId (%d), Show(): iconified = %d, visible = %d\n", this, mNativeWindowId, mIconified, mVisible ); } @@ -584,18 +578,25 @@ void Window::SetSize( Dali::Window::WindowSize size ) { Uint16Pair newSize( newRect.width, newRect.height ); - SurfaceResized(); + bool forceUpdate = false; + if( mWindowBase->IsEglWindowRotationSupported() ) + { + forceUpdate = true; + } + + SurfaceResized( forceUpdate ); mAdaptor->SurfaceResizePrepare( mSurface.get(), newSize ); DALI_LOG_RELEASE_INFO( "Window (%p), WinId (%d), SetSize(): resize signal [%d x %d]\n", this, mNativeWindowId, newRect.width, newRect.height ); Dali::Window handle( this ); - mResizedSignal.Emit( newSize ); mResizeSignal.Emit( handle, newSize ); mAdaptor->SurfaceResizeComplete( mSurface.get(), newSize ); } + + mSurface->SetFullSwapNextFrame(); } Dali::Window::WindowSize Window::GetSize() const @@ -616,6 +617,8 @@ void Window::SetPosition( Dali::Window::WindowPosition position ) PositionSize oldRect = mSurface->GetPositionSize(); mWindowSurface->MoveResize( PositionSize( position.GetX(), position.GetY(), oldRect.width, oldRect.height ) ); + + mSurface->SetFullSwapNextFrame(); } Dali::Window::WindowPosition Window::GetPosition() const @@ -644,16 +647,23 @@ void Window::SetPositionSize( PositionSize positionSize ) { Uint16Pair newSize( newRect.width, newRect.height ); - SurfaceResized(); + bool forceUpdate = false; + if( mWindowBase->IsEglWindowRotationSupported() ) + { + forceUpdate = true; + } + + SurfaceResized( forceUpdate ); mAdaptor->SurfaceResizePrepare( mSurface.get(), newSize ); DALI_LOG_RELEASE_INFO( "Window (%p), WinId (%d), SetPositionSize():resize signal [%d x %d]\n", this, mNativeWindowId, newRect.width, newRect.height ); Dali::Window handle( this ); - mResizedSignal.Emit( newSize ); mResizeSignal.Emit( handle, newSize ); mAdaptor->SurfaceResizeComplete( mSurface.get(), newSize ); } + + mSurface->SetFullSwapNextFrame(); } Dali::Layer Window::GetRootLayer() const @@ -718,19 +728,29 @@ void Window::OnIconifyChanged( bool iconified ) DALI_LOG_RELEASE_INFO( "Window (%p), WinId (%d), Deiconified: visible = %d\n", this, mNativeWindowId, mVisible ); } + + mSurface->SetFullSwapNextFrame(); } void Window::OnFocusChanged( bool focusIn ) { Dali::Window handle( this ); - mFocusChangedSignal.Emit( focusIn ); mFocusChangeSignal.Emit( handle, focusIn ); + + mSurface->SetFullSwapNextFrame(); } void Window::OnOutputTransformed() { + bool forceUpdate = false; + if( mWindowBase->IsEglWindowRotationSupported() ) + { + forceUpdate = true; + } + DALI_LOG_RELEASE_INFO( "Window (%p), WinId (%d), OnOutputTransformed()\n", this, mNativeWindowId ); + SurfaceResized( forceUpdate ); + PositionSize positionSize = mSurface->GetPositionSize(); - SurfaceResized(); mAdaptor->SurfaceResizePrepare( mSurface.get(), Adaptor::SurfaceSize( positionSize.width, positionSize.height ) ); mAdaptor->SurfaceResizeComplete( mSurface.get(), Adaptor::SurfaceSize( positionSize.width, positionSize.height ) ); } @@ -746,6 +766,17 @@ void Window::OnTransitionEffectEvent( DevelWindow::EffectState state, DevelWindo mTransitionEffectEventSignal.Emit( handle, state, type ); } +void Window::OnKeyboardRepeatSettingsChanged() +{ + Dali::Window handle( this ); + mKeyboardRepeatSettingsChangedSignal.Emit(); +} + +void Window::OnWindowRedrawRequest() +{ + mAdaptor->RenderOnce(); +} + void Window::OnTouchPoint( Dali::Integration::Point& point, int timeStamp ) { FeedTouchPoint( point, timeStamp ); @@ -772,14 +803,19 @@ void Window::OnRotation( const RotationEvent& rotation ) mWindowSurface->RequestRotation( mRotationAngle, mWindowWidth, mWindowHeight ); - SurfaceResized(); + bool forceUpdate = false; + if( mWindowBase->IsEglWindowRotationSupported() ) + { + forceUpdate = true; + } + + SurfaceResized( forceUpdate ); mAdaptor->SurfaceResizePrepare( mSurface.get(), Adaptor::SurfaceSize( mWindowWidth, mWindowHeight ) ); DALI_LOG_RELEASE_INFO( "Window (%p), WinId (%d), OnRotation(): resize signal emit [%d x %d]\n", this, mNativeWindowId, mWindowWidth, mWindowHeight ); // Emit signal Dali::Window handle( this ); - mResizedSignal.Emit( Dali::Window::WindowSize( mWindowWidth, mWindowHeight ) ); mResizeSignal.Emit( handle, Dali::Window::WindowSize( mWindowWidth, mWindowHeight ) ); mAdaptor->SurfaceResizeComplete( mSurface.get(), Adaptor::SurfaceSize( mWindowWidth, mWindowHeight ) ); @@ -799,6 +835,8 @@ void Window::OnResume() { mEventHandler->Resume(); } + + mSurface->SetFullSwapNextFrame(); } void Window::RecalculateTouchPosition( Integration::Point& point ) @@ -917,6 +955,11 @@ void Window::SetAvailableOrientations( const Dali::VectorGetNativeWindowId(); +} + } // Adaptor } // Internal