[Tizen] Fix unParent Bug
[platform/core/uifw/dali-adaptor.git] / dali / internal / window-system / tizen-wayland / ecore-wl / window-base-ecore-wl.cpp
index b055d40..5495b17 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2019 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.
@@ -178,7 +178,6 @@ void GetDeviceSubclass( Ecore_Device_Subclass ecoreDeviceSubclass, Device::Subcl
       deviceSubclass = Device::Subclass::TRACKBALL;
       break;
     }
-#ifdef OVER_TIZEN_VERSION_4
     case ECORE_DEVICE_SUBCLASS_REMOCON:
     {
       deviceSubclass = Device::Subclass::REMOCON;
@@ -189,7 +188,6 @@ void GetDeviceSubclass( Ecore_Device_Subclass ecoreDeviceSubclass, Device::Subcl
       deviceSubclass = Device::Subclass::VIRTUAL_KEYBOARD;
       break;
     }
-#endif
     default:
     {
       deviceSubclass = Device::Subclass::NONE;
@@ -586,7 +584,10 @@ WindowBaseEcoreWl::WindowBaseEcoreWl( Dali::PositionSize positionSize, Any surfa
   mBrightness( 0 ),
   mBrightnessChangeState( 0 ),
   mBrightnessChangeDone( true ),
-  mOwnSurface( false )
+  mOwnSurface( false ),
+  mWindowRotationAngle( 0 ),
+  mScreenRotationAngle( 0 ),
+  mSupportedPreProtation( 0 )
 #ifdef DALI_ELDBUS_AVAILABLE
   , mSystemConnection( NULL )
 #endif
@@ -1318,9 +1319,10 @@ bool WindowBaseEcoreWl::IsEglWindowRotationSupported()
   wl_egl_window_capability capability = static_cast< wl_egl_window_capability >( wl_egl_window_get_capabilities( mEglWindow ) );
   if( capability == WL_EGL_WINDOW_CAPABILITY_ROTATION_SUPPORTED )
   {
+    mSupportedPreProtation = true;
     return true;
   }
-
+  mSupportedPreProtation = false;
   return false;
 }
 
@@ -2061,6 +2063,16 @@ void WindowBaseEcoreWl::GetDpi( unsigned int& dpiHorizontal, unsigned int& dpiVe
   dpiVertical   = int( yres + 0.5f );
 }
 
+int WindowBaseEcoreWl::GetOrientation() const
+{
+  int orientation = (mScreenRotationAngle + mWindowRotationAngle) % 360;
+  if( mSupportedPreProtation )
+  {
+    orientation = 0;
+  }
+  return orientation;
+}
+
 int WindowBaseEcoreWl::GetScreenRotationAngle()
 {
   int transform = 0;
@@ -2074,14 +2086,21 @@ int WindowBaseEcoreWl::GetScreenRotationAngle()
     transform = ecore_wl_output_transform_get( ecore_wl_window_output_find( mEcoreWindow ) );
   }
 
-  return transform * 90;
+  mScreenRotationAngle = transform * 90;
+  return mScreenRotationAngle;
 }
 
 void WindowBaseEcoreWl::SetWindowRotationAngle( int degree )
 {
+  mWindowRotationAngle = degree;
   ecore_wl_window_rotation_set( mEcoreWindow, degree );
 }
 
+int WindowBaseEcoreWl::GetWindowRotationAngle()
+{
+  return mWindowRotationAngle;
+}
+
 void WindowBaseEcoreWl::WindowRotationCompleted( int degree, int width, int height )
 {
   ecore_wl_window_rotation_change_done_send( mEcoreWindow );
@@ -2134,6 +2153,17 @@ void WindowBaseEcoreWl::CreateWindow( PositionSize positionSize )
   }
 }
 
+void WindowBaseEcoreWl::SetParent( WindowBase* parentWinBase )
+{
+  Ecore_Wl_Window* ecoreParent = NULL;
+  if( parentWinBase )
+  {
+    WindowBaseEcoreWl* winBaseEcore = static_cast<WindowBaseEcoreWl*>( parentWinBase );
+    ecoreParent = winBaseEcore->mEcoreWindow;
+  }
+  ecore_wl_window_parent_set( mEcoreWindow, ecoreParent );
+}
+
 } // namespace Adaptor
 
 } // namespace Internal