Merge "Fix SVACE issue" into devel/master
authorAdeel Kazmi <adeel.kazmi@samsung.com>
Tue, 11 Feb 2020 08:30:17 +0000 (08:30 +0000)
committerGerrit Code Review <gerrit@review.ap-northeast-2.compute.internal>
Tue, 11 Feb 2020 08:30:17 +0000 (08:30 +0000)
17 files changed:
dali/devel-api/adaptor-framework/window-devel.cpp
dali/devel-api/adaptor-framework/window-devel.h
dali/internal/adaptor/common/adaptor-impl.cpp
dali/internal/adaptor/common/combined-update-render-controller.cpp
dali/internal/adaptor/common/combined-update-render-controller.h
dali/internal/adaptor/common/thread-controller-interface.h
dali/internal/system/common/environment-options.cpp
dali/internal/system/common/environment-options.h
dali/internal/system/common/environment-variables.h
dali/internal/system/common/thread-controller.cpp
dali/internal/system/common/thread-controller.h
dali/internal/system/tizen-wayland/tizen-wearable/capture-impl-tizen.cpp
dali/internal/window-system/common/window-impl.cpp
dali/internal/window-system/common/window-impl.h
dali/internal/window-system/common/window-render-surface.cpp
dali/public-api/dali-adaptor-version.cpp
packaging/dali-adaptor.spec

index f36a5fc..ad84d95 100644 (file)
@@ -100,6 +100,11 @@ Dali::Window::WindowOrientation GetCurrentOrientation( Window window )
   return GetImplementation( window ).GetCurrentOrientation();
 }
 
+void SetAvailableOrientations( Window window, const Dali::Vector<Dali::Window::WindowOrientation>& orientations )
+{
+  GetImplementation( window ).SetAvailableOrientations( orientations );
+}
+
 } // namespace DevelWindow
 
 } // namespace Dali
index 39bc90d..9418282 100644 (file)
@@ -208,6 +208,16 @@ DALI_ADAPTOR_API Window DownCast(  BaseHandle handle );
  */
 DALI_ADAPTOR_API Dali::Window::WindowOrientation GetCurrentOrientation( Window window );
 
+/**
+ * @brief Sets available orientations of the window.
+ *
+ * This API is for setting several orientations one time.
+ *
+ * @param[in] window The window instance
+ * @param[in] orientations The available orientation list to add
+ */
+DALI_ADAPTOR_API void SetAvailableOrientations( Window window, const Dali::Vector<Dali::Window::WindowOrientation>& orientations );
+
 } // namespace DevelWindow
 
 } // namespace Dali
index cbcc87a..d00a607 100755 (executable)
@@ -284,6 +284,22 @@ void Adaptor::Initialize( GraphicsFactory& graphicsFactory, Dali::Configuration:
   {
     Integration::SetPinchGestureMinimumDistance( mEnvironmentOptions->GetMinimumPinchDistance() );
   }
+  if( mEnvironmentOptions->GetMinimumPinchTouchEvents() >= 0 )
+  {
+    Integration::SetPinchGestureMinimumTouchEvents( mEnvironmentOptions->GetMinimumPinchTouchEvents() );
+  }
+  if( mEnvironmentOptions->GetMinimumPinchTouchEventsAfterStart() >= 0 )
+  {
+    Integration::SetPinchGestureMinimumTouchEventsAfterStart( mEnvironmentOptions->GetMinimumPinchTouchEventsAfterStart() );
+  }
+  if( mEnvironmentOptions->GetMinimumRotationTouchEvents() >= 0 )
+  {
+    Integration::SetRotationGestureMinimumTouchEvents( mEnvironmentOptions->GetMinimumRotationTouchEvents() );
+  }
+  if( mEnvironmentOptions->GetMinimumRotationTouchEventsAfterStart() >= 0 )
+  {
+    Integration::SetRotationGestureMinimumTouchEventsAfterStart( mEnvironmentOptions->GetMinimumRotationTouchEventsAfterStart() );
+  }
   if( mEnvironmentOptions->GetLongPressMinimumHoldingTime() >= 0 )
   {
     Integration::SetLongPressMinimumHoldingTime( mEnvironmentOptions->GetLongPressMinimumHoldingTime() );
@@ -610,6 +626,10 @@ bool Adaptor::AddWindow( Dali::Integration::SceneHolder childWindow, const std::
   // Add the new Window to the container - the order is not important
   mWindows.push_back( &windowImpl );
 
+  Dali::RenderSurfaceInterface* surface = windowImpl.GetSurface();
+
+  mThreadController->AddSurface( surface );
+
   mWindowCreatedSignal.Emit( childWindow );
 
   return true;
index 8be71f8..a41a613 100644 (file)
@@ -399,6 +399,17 @@ void CombinedUpdateRenderController::SetPreRenderCallback( CallbackBase* callbac
   mPreRenderCallback = callback;
 }
 
+void CombinedUpdateRenderController::AddSurface( Dali::RenderSurfaceInterface* surface )
+{
+  LOG_EVENT_TRACE;
+  LOG_EVENT( "Surface is added" );
+  if( mUpdateRenderThread )
+  {
+    // Set the ThreadSyncronizationInterface on the added surface
+    surface->SetThreadSynchronization( *this );
+  }
+}
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // EVENT THREAD
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -910,7 +921,6 @@ void CombinedUpdateRenderController::PostRenderWaitForCompletion()
   while( mPostRendering &&
          ! mNewSurface &&                // We should NOT wait if we're replacing the surface
          ! mDeletedSurface &&            // We should NOT wait if we're deleting the surface
-         ! mSurfaceResized &&            // We should NOT wait if we're resizing the surface
          ! mDestroyUpdateRenderThread )
   {
     mUpdateRenderThreadWaitCondition.Wait( lock );
index 03e511e..edaf83c 100644 (file)
@@ -151,6 +151,11 @@ public:
    */
   void SetPreRenderCallback( CallbackBase* callback ) override;
 
+  /**
+   * @copydoc ThreadControllerInterface::AddSurface()
+   */
+  virtual void AddSurface( Dali::RenderSurfaceInterface* surface );
+
 private:
 
   // Undefined copy constructor.
index 99317d6..6b9055b 100644 (file)
@@ -118,6 +118,12 @@ public:
    */
   virtual void SetPreRenderCallback( CallbackBase* callback ) = 0;
 
+  /**
+   * @brief Adds the new surface.
+   * @param surface new surface
+   */
+  virtual void AddSurface( Dali::RenderSurfaceInterface* surface ) = 0;
+
 protected:
 
   /**
index bab51d1..7fea428 100644 (file)
@@ -120,6 +120,10 @@ EnvironmentOptions::EnvironmentOptions()
   mPanMinimumDistance( -1 ),
   mPanMinimumEvents( -1 ),
   mPinchMinimumDistance( -1.0f ),
+  mPinchMinimumTouchEvents( -1 ),
+  mPinchMinimumTouchEventsAfterStart( -1 ),
+  mRotationMinimumTouchEvents( -1 ),
+  mRotationMinimumTouchEventsAfterStart( -1 ),
   mLongPressMinimumHoldingTime( -1 ),
   mGlesCallTime( 0 ),
   mMultiSamplingLevel( DEFAULT_MULTI_SAMPLING_LEVEL ),
@@ -290,6 +294,26 @@ float EnvironmentOptions::GetMinimumPinchDistance() const
   return mPinchMinimumDistance;
 }
 
+int EnvironmentOptions::GetMinimumPinchTouchEvents() const
+{
+  return mPinchMinimumTouchEvents;
+}
+
+int EnvironmentOptions::GetMinimumPinchTouchEventsAfterStart() const
+{
+  return mPinchMinimumTouchEventsAfterStart;
+}
+
+int EnvironmentOptions::GetMinimumRotationTouchEvents() const
+{
+  return mRotationMinimumTouchEvents;
+}
+
+int EnvironmentOptions::GetMinimumRotationTouchEventsAfterStart() const
+{
+  return mRotationMinimumTouchEventsAfterStart;
+}
+
 int EnvironmentOptions::GetLongPressMinimumHoldingTime() const
 {
   return mLongPressMinimumHoldingTime;
@@ -516,6 +540,30 @@ void EnvironmentOptions::ParseEnvironmentOptions()
     mPinchMinimumDistance = pinchMinimumDistance;
   }
 
+  int pinchMinimumTouchEvents = -1;
+  if( GetIntegerEnvironmentVariable( DALI_ENV_PINCH_MINIMUM_TOUCH_EVENTS, pinchMinimumTouchEvents ) )
+  {
+    mPinchMinimumTouchEvents = pinchMinimumTouchEvents;
+  }
+
+  int pinchMinimumTouchEventsAfterStart = -1;
+  if( GetIntegerEnvironmentVariable( DALI_ENV_PINCH_MINIMUM_TOUCH_EVENTS_AFTER_START, pinchMinimumTouchEventsAfterStart ) )
+  {
+    mPinchMinimumTouchEventsAfterStart = pinchMinimumTouchEventsAfterStart;
+  }
+
+  int rotationMinimumTouchEvents = -1;
+  if( GetIntegerEnvironmentVariable( DALI_ENV_ROTATION_MINIMUM_TOUCH_EVENTS, rotationMinimumTouchEvents ) )
+  {
+    mRotationMinimumTouchEvents = rotationMinimumTouchEvents;
+  }
+
+  int rotationMinimumTouchEventsAfterStart = -1;
+  if( GetIntegerEnvironmentVariable( DALI_ENV_ROTATION_MINIMUM_TOUCH_EVENTS_AFTER_START, rotationMinimumTouchEventsAfterStart ) )
+  {
+    mRotationMinimumTouchEventsAfterStart = rotationMinimumTouchEventsAfterStart;
+  }
+
   int longPressMinimumHoldingTime = -1;
   if( GetIntegerEnvironmentVariable( DALI_ENV_LONG_PRESS_MINIMUM_HOLDING_TIME, longPressMinimumHoldingTime ) )
   {
index d8e630a..f72ebdd 100644 (file)
@@ -220,6 +220,26 @@ public:
   float GetMinimumPinchDistance() const;
 
   /**
+   * @return The minimum touch events required before a pinch can be started (-1 means it's not set)
+   */
+  int GetMinimumPinchTouchEvents() const;
+
+  /**
+   * @return The minimum touch events required after a pinch started (-1 means it's not set)
+   */
+  int GetMinimumPinchTouchEventsAfterStart() const;
+
+  /**
+   * @return The minimum touch events required before a rotation can be started (-1 means it's not set)
+   */
+  int GetMinimumRotationTouchEvents() const;
+
+  /**
+   * @return The minimum touch events required after a rotation started (-1 means it's not set)
+   */
+  int GetMinimumRotationTouchEventsAfterStart() const;
+
+  /**
    * @return The minimum holding time required to be recognized as a long press gesture (milliseconds)
    */
   int GetLongPressMinimumHoldingTime() const;
@@ -352,6 +372,10 @@ private: // Data
   int mPanMinimumDistance;                        ///< minimum distance required before pan starts
   int mPanMinimumEvents;                          ///< minimum events required before pan starts
   float mPinchMinimumDistance;                    ///< minimum number of pixels moved before a pinch starts
+  int mPinchMinimumTouchEvents;                   ///< minimum events required before a pinch starts
+  int mPinchMinimumTouchEventsAfterStart;         ///< minimum events required after a pinch started
+  int mRotationMinimumTouchEvents;                ///< minimum events required before a rotation starts
+  int mRotationMinimumTouchEventsAfterStart;      ///< minimum events required after a rotation started
   int mLongPressMinimumHoldingTime;               ///< minimum holding time required to be recognized as a long press gesture (millisecond)
   int mGlesCallTime;                              ///< time in seconds between status updates
   int mMultiSamplingLevel;                        ///< The number of samples required in multisample buffers
index 013417e..ca1a9c8 100644 (file)
@@ -84,7 +84,14 @@ namespace Adaptor
 #define DALI_ENV_PAN_MINIMUM_DISTANCE                 "DALI_PAN_MINIMUM_DISTANCE"
 #define DALI_ENV_PAN_MINIMUM_EVENTS                   "DALI_PAN_MINIMUM_EVENTS"
 
-#define DALI_ENV_PINCH_MINIMUM_DISTANCE               "DALI_PINCH_MINIMUM_DISTANCE"
+// Pinch-Gesture
+#define DALI_ENV_PINCH_MINIMUM_DISTANCE                     "DALI_PINCH_MINIMUM_DISTANCE"
+#define DALI_ENV_PINCH_MINIMUM_TOUCH_EVENTS                 "DALI_PINCH_MINIMUM_TOUCH_EVENTS"
+#define DALI_ENV_PINCH_MINIMUM_TOUCH_EVENTS_AFTER_START     "DALI_PINCH_MINIMUM_TOUCH_EVENTS_AFTER_START"
+
+// Rotation-Gesture
+#define DALI_ENV_ROTATION_MINIMUM_TOUCH_EVENTS              "DALI_ROTATION_MINIMUM_TOUCH_EVENTS"
+#define DALI_ENV_ROTATION_MINIMUM_TOUCH_EVENTS_AFTER_START  "DALI_ROTATION_MINIMUM_TOUCH_EVENTS_AFTER_START"
 
 /**
  * The minimum holding time required to be recognized as a long press gesture (milliseconds)
index fbe90dc..a9054ec 100644 (file)
@@ -115,6 +115,11 @@ void ThreadController::SetPreRenderCallback( CallbackBase* callback )
   mThreadControllerInterface->SetPreRenderCallback( callback );
 }
 
+void ThreadController::AddSurface( Dali::RenderSurfaceInterface* newSurface )
+{
+  mThreadControllerInterface->AddSurface( newSurface );
+}
+
 } // namespace Adaptor
 
 } // namespace Internal
index e1f1c84..c4f3961 100644 (file)
@@ -137,6 +137,13 @@ public:
    */
   void SetPreRenderCallback( CallbackBase* callback );
 
+  /**
+   * @brief Adds the new surface.
+   *
+   * @param surface new surface
+   */
+  void AddSurface( Dali::RenderSurfaceInterface* surface );
+
 private:
 
   // Undefined copy constructor.
index 0e896c1..0c9487e 100755 (executable)
@@ -263,14 +263,9 @@ void Capture::UnsetRenderTask()
   mCameraActor.Unparent();
   mCameraActor.Reset();
 
-  DALI_ASSERT_ALWAYS(mRenderTask && "RenderTask is NULL.");
+  DALI_ASSERT_ALWAYS( mRenderTask && "RenderTask is NULL." );
 
   Dali::RenderTaskList taskList = Dali::Stage::GetCurrent().GetRenderTaskList();
-  Dali::RenderTask firstTask = taskList.GetTask( 0u );
-
-  // Stop rendering via frame-buffers as empty handle is used to clear target
-  firstTask.SetFrameBuffer( Dali::FrameBuffer() );
-
   taskList.RemoveTask( mRenderTask );
   mRenderTask.Reset();
 }
index b505b22..be836c1 100644 (file)
@@ -872,6 +872,38 @@ Dali::Window::WindowOrientation Window::GetCurrentOrientation() const
   return ConvertToOrientation( mRotationAngle );
 }
 
+void Window::SetAvailableOrientations( const Dali::Vector<Dali::Window::WindowOrientation>& orientations )
+{
+  Dali::Vector<float>::SizeType count = orientations.Count();
+  for( Dali::Vector<float>::SizeType index = 0; index < count; ++index )
+  {
+    if( IsOrientationAvailable( orientations[index] ) == false )
+    {
+      DALI_LOG_ERROR("Window::SetAvailableOrientations, invalid orientation: %d\n", orientations[index]);
+      continue;
+    }
+
+    bool found = false;
+    int convertedAngle = ConvertToAngle( orientations[index] );
+
+    for( std::size_t i = 0; i < mAvailableAngles.size(); i++ )
+    {
+      if( mAvailableAngles[i] == convertedAngle )
+      {
+        found = true;
+        break;
+      }
+    }
+
+    if( !found )
+    {
+      DALI_LOG_RELEASE_INFO( "Window (%p), WinId (%d), SetAvailableOrientations: %d\n", this, mNativeWindowId, convertedAngle );
+      mAvailableAngles.push_back( convertedAngle );
+    }
+  }
+  SetAvailableAnlges( mAvailableAngles );
+}
+
 } // Adaptor
 
 } // Internal
index 1dd9ca6..0705340 100644 (file)
@@ -23,6 +23,7 @@
 #include <dali/public-api/object/base-object.h>
 #include <dali/public-api/actors/layer.h>
 #include <dali/public-api/render-tasks/render-task-list.h>
+#include <dali/public-api/object/property-array.h>
 
 // INTERNAL INCLUDES
 #include <dali/public-api/adaptor-framework/window.h>
@@ -342,6 +343,11 @@ public:
    */
   Dali::Window::WindowOrientation GetCurrentOrientation() const;
 
+  /**
+   * @copydoc Dali::DevelWindow::SetAvailableOrientations()
+   */
+  void SetAvailableOrientations( const Dali::Vector<Dali::Window::WindowOrientation>& orientations );
+
 public: // Dali::Internal::Adaptor::SceneHolder
 
   /**
index 2561bb2..a5402f5 100644 (file)
@@ -415,7 +415,13 @@ void WindowRenderSurface::PostRender( bool renderToFbo, bool replacingSurface, b
       {
         if( !mRotationFinished )
         {
-          DALI_LOG_INFO( gWindowRenderSurfaceLogFilter, Debug::Verbose, "WindowRenderSurface::PostRender: Trigger rotation event\n" );
+          if( mThreadSynchronization )
+          {
+            // Enable PostRender flag
+            mThreadSynchronization->PostRenderStarted();
+          }
+
+          DALI_LOG_RELEASE_INFO("WindowRenderSurface::PostRender: Trigger rotation event\n" );
 
           mRotationTrigger->Trigger();
 
index 2b40536..7a7c44e 100644 (file)
@@ -28,7 +28,7 @@ namespace Dali
 
 const unsigned int ADAPTOR_MAJOR_VERSION = 1;
 const unsigned int ADAPTOR_MINOR_VERSION = 4;
-const unsigned int ADAPTOR_MICRO_VERSION = 56;
+const unsigned int ADAPTOR_MICRO_VERSION = 57;
 const char * const ADAPTOR_BUILD_DATE    = __DATE__ " " __TIME__;
 
 #ifdef DEBUG_ENABLED
index 4452783..5610986 100644 (file)
@@ -17,7 +17,7 @@
 
 Name:       dali-adaptor
 Summary:    The DALi Tizen Adaptor
-Version:    1.4.56
+Version:    1.4.57
 Release:    1
 Group:      System/Libraries
 License:    Apache-2.0 and BSD-3-Clause and MIT