[3.0] Support screen rotation
[platform/core/uifw/dali-adaptor.git] / adaptors / base / single-threaded / single-thread-controller.cpp
index f0c3398..87ae4a7 100644 (file)
@@ -25,6 +25,7 @@
 // INTERNAL INCLUDES
 #include <base/interfaces/adaptor-internal-services.h>
 #include <base/environment-options.h>
+#include <base/time-service.h>
 
 namespace Dali
 {
@@ -41,8 +42,7 @@ const unsigned int MILLISECONDS_PER_FRAME = 17u;
 const float SECONDS_PER_FRAME = MILLISECONDS_PER_FRAME * 0.001f;
 
 const unsigned int NANOSECONDS_PER_MICROSECOND( 1000u );
-const unsigned int MICROSECONDS_PER_SECOND( 1000000u );
-const float        MICROSECONDS_TO_SECONDS( 0.000001f );
+const float        NANOSECONDS_TO_SECONDS( 1e-9f );
 
 #if defined(DEBUG_ENABLED)
 Integration::Log::Filter* gLogFilter = Integration::Log::Filter::New(Debug::NoLogging, false, "LOG_THREAD_SYNC");
@@ -58,11 +58,10 @@ SingleThreadController::SingleThreadController( AdaptorInternalServices& adaptor
   mUpdateStatusLogger( environmentOptions ),
   mRenderHelper( adaptorInterfaces ),
   mCore( adaptorInterfaces.GetCore()),
-  mPlatformAbstraction( adaptorInterfaces.GetPlatformAbstractionInterface() ),
   mPerformanceInterface( adaptorInterfaces.GetPerformanceInterface() ),
   mLastUpdateRenderTime( 0 ),
   mSystemTime( 0 ),
-  mRefreshRate( 1 ),
+  mRefreshRate( environmentOptions.GetRenderRefreshRate() ),
   mState( State::STOPPED ),
   mUpdatingAndRendering( false ),
   mStopRequestedWhileRendering( false )
@@ -180,10 +179,7 @@ void SingleThreadController::RequestUpdateOnce()
     Integration::RenderStatus renderStatus;
     mRenderHelper.PreRender();
     mCore.Render( renderStatus );
-    if( renderStatus.HasRendered() )
-    {
-      mRenderHelper.PostRender();
-    }
+    mRenderHelper.PostRender();
   }
 }
 
@@ -193,6 +189,11 @@ void SingleThreadController::ReplaceSurface( RenderSurface* newSurface )
   mRenderHelper.ReplaceSurface( newSurface );
 }
 
+void SingleThreadController::ResizeSurface()
+{
+  DALI_LOG_ERROR( "SingleThreadController::ResizeSurface: Not supported\n" );
+}
+
 void SingleThreadController::SetRenderRefreshRate( unsigned int refreshRate )
 {
   if ( refreshRate != mRefreshRate )
@@ -269,10 +270,7 @@ void SingleThreadController::UpdateRender( bool incrementTime )
     mCore.Render( renderStatus );
     AddPerformanceMarker( PerformanceInterface::RENDER_END );
 
-    if( renderStatus.HasRendered() )
-    {
-      mRenderHelper.PostRender();
-    }
+    mRenderHelper.PostRender();
 
     if( ! keepUpdatingStatus &&
         ! renderStatus.NeedsUpdate() )
@@ -293,18 +291,13 @@ float SingleThreadController::UpdateTimeSinceLastRender()
   // No need calculating if FPS tracking is NOT enabled
   if( mFpsTracker.Enabled() )
   {
-    uint64_t seconds = 0;
-    uint64_t microSeconds = 0;
-
-    mPlatformAbstraction.GetTimeNanoseconds( seconds, microSeconds );
-    microSeconds /= NANOSECONDS_PER_MICROSECOND;
-
-    uint64_t currentTime = ( seconds * MICROSECONDS_PER_SECOND ) + microSeconds;
+    uint64_t currentTime = 0;
+    TimeService::GetNanoseconds( currentTime );
 
     uint64_t delta = currentTime - mSystemTime;
     mSystemTime = currentTime;
 
-    timeSinceLastRender = delta * MICROSECONDS_TO_SECONDS;
+    timeSinceLastRender = delta * NANOSECONDS_TO_SECONDS;
   }
 
   return timeSinceLastRender;