From 249112be0f51497d1a6137f43d956417fc283f46 Mon Sep 17 00:00:00 2001 From: Wonsik Jung Date: Fri, 29 May 2020 15:29:29 +0900 Subject: [PATCH 1/1] Update window's geometry to ecore_wl2. When the ecore wl2 window is resized or changed position then the window is hidden, the window's position and size is not updated by the Tizen Display Server. Because wayland protocol is destroyed by window's hidden. To fix that, window's geometry is updated again before window is shown. Change-Id: Ib7de2532476c175b5b8fa6643171f2a0a4ba8099 --- .../tizen-wayland/ecore-wl2/window-base-ecore-wl2.cpp | 15 +++++++++++++++ .../tizen-wayland/ecore-wl2/window-base-ecore-wl2.h | 3 +++ 2 files changed, 18 insertions(+) diff --git a/dali/internal/window-system/tizen-wayland/ecore-wl2/window-base-ecore-wl2.cpp b/dali/internal/window-system/tizen-wayland/ecore-wl2/window-base-ecore-wl2.cpp index 89fae58..dbd8aa6 100755 --- a/dali/internal/window-system/tizen-wayland/ecore-wl2/window-base-ecore-wl2.cpp +++ b/dali/internal/window-system/tizen-wayland/ecore-wl2/window-base-ecore-wl2.cpp @@ -688,6 +688,8 @@ WindowBaseEcoreWl2::WindowBaseEcoreWl2( Dali::PositionSize positionSize, Any sur mBrightness( 0 ), mBrightnessChangeState( 0 ), mBrightnessChangeDone( true ), + mVisible( true ), + mWindowPositionSize( positionSize ), mOwnSurface( false ), mMoveResizeSerial( 0 ), mLastSubmittedMoveResizeSerial( 0 ) @@ -949,6 +951,9 @@ void WindowBaseEcoreWl2::OnRotation( void* data, int type, void* event ) rotationEvent.height = ev->w; } + mWindowPositionSize.width = rotationEvent.width; + mWindowPositionSize.height = rotationEvent.height; + mRotationSignal.Emit( rotationEvent ); } } @@ -1521,16 +1526,19 @@ bool WindowBaseEcoreWl2::IsEglWindowRotationSupported() void WindowBaseEcoreWl2::Move( PositionSize positionSize ) { + mWindowPositionSize = positionSize; ecore_wl2_window_position_set( mEcoreWindow, positionSize.x, positionSize.y ); } void WindowBaseEcoreWl2::Resize( PositionSize positionSize ) { + mWindowPositionSize = positionSize; ecore_wl2_window_geometry_set( mEcoreWindow, positionSize.x, positionSize.y, positionSize.width, positionSize.height ); } void WindowBaseEcoreWl2::MoveResize( PositionSize positionSize ) { + mWindowPositionSize = positionSize; ecore_wl2_window_sync_geometry_set( mEcoreWindow, ++mMoveResizeSerial, positionSize.x, positionSize.y, positionSize.width, positionSize.height ); } @@ -1580,11 +1588,18 @@ void WindowBaseEcoreWl2::SetAcceptFocus( bool accept ) void WindowBaseEcoreWl2::Show() { + if( !mVisible ) + { + ecore_wl2_window_geometry_set( mEcoreWindow, mWindowPositionSize.x, mWindowPositionSize.y, mWindowPositionSize.width, mWindowPositionSize.height ); + } + mVisible = true; + ecore_wl2_window_show( mEcoreWindow ); } void WindowBaseEcoreWl2::Hide() { + mVisible = false; ecore_wl2_window_hide( mEcoreWindow ); } diff --git a/dali/internal/window-system/tizen-wayland/ecore-wl2/window-base-ecore-wl2.h b/dali/internal/window-system/tizen-wayland/ecore-wl2/window-base-ecore-wl2.h index c7a7240..f429435 100644 --- a/dali/internal/window-system/tizen-wayland/ecore-wl2/window-base-ecore-wl2.h +++ b/dali/internal/window-system/tizen-wayland/ecore-wl2/window-base-ecore-wl2.h @@ -496,6 +496,9 @@ private: uint32_t mBrightnessChangeState; bool mBrightnessChangeDone; + bool mVisible:1; + Dali::PositionSize mWindowPositionSize; + bool mOwnSurface; volatile uint32_t mMoveResizeSerial; -- 2.7.4