Update window's geometry to ecore_wl2. 39/235039/1
authorWonsik Jung <sidein@samsung.com>
Tue, 2 Jun 2020 02:09:23 +0000 (11:09 +0900)
committerWonsik Jung <sidein@samsung.com>
Tue, 2 Jun 2020 02:10:30 +0000 (11:10 +0900)
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: Iafa6a7ae5509c54f2e11bd6bd3ca8e0d23a1439b

dali/internal/window-system/tizen-wayland/ecore-wl2/window-base-ecore-wl2.cpp
dali/internal/window-system/tizen-wayland/ecore-wl2/window-base-ecore-wl2.h

index 89fae58..dbd8aa6 100755 (executable)
@@ -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 );
 }
 
index c7a7240..f429435 100644 (file)
@@ -496,6 +496,9 @@ private:
   uint32_t                             mBrightnessChangeState;
   bool                                 mBrightnessChangeDone;
 
+  bool                                 mVisible:1;
+  Dali::PositionSize                   mWindowPositionSize;
+
   bool                                 mOwnSurface;
 
   volatile uint32_t                    mMoveResizeSerial;