mSize(), // Don't set the proper value here, this will be set when the surface is set later
mDpi(),
mBackgroundColor( DEFAULT_BACKGROUND_COLOR ),
- mSurfaceOrientation( 0 ),
mDepthTreeDirty( false ),
mEventProcessor( *this, ThreadLocalStorage::GetInternal()->GetGestureEventProcessor() )
{
// Create the list of render-tasks
mRenderTaskList = RenderTaskList::New();
- // Create the default render-task
- mRenderTaskList->CreateTask( mRootLayer.Get(), mDefaultCamera.Get() );
+ // Create the default render-task and ensure clear is enabled on it to show the background color
+ RenderTaskPtr renderTask = mRenderTaskList->CreateTask( mRootLayer.Get(), mDefaultCamera.Get() );
+ renderTask->SetClearEnabled(true);
- SurfaceResized( size.width, size.height, mSurfaceOrientation, false );
+ SurfaceResized( size.width, size.height );
// Create scene graph object
mSceneObject = new SceneGraph::Scene();
return *mRootLayer;
}
-void Scene::SurfaceResized( float width, float height, int orientation, bool forceUpdate )
+void Scene::SurfaceResized( float width, float height )
{
- if( ( fabsf( mSize.width - width ) > Math::MACHINE_EPSILON_1 ) || ( fabsf( mSize.height - height ) > Math::MACHINE_EPSILON_1 )
- || ( orientation != mSurfaceOrientation ) || ( forceUpdate ) )
+ if( ( fabsf( mSize.width - width ) > Math::MACHINE_EPSILON_1 ) || ( fabsf( mSize.height - height ) > Math::MACHINE_EPSILON_1 ) )
{
Rect< int32_t > newSize( 0, 0, static_cast< int32_t >( width ), static_cast< int32_t >( height ) ); // truncated
mSize.width = width;
mSize.height = height;
- mSurfaceOrientation = orientation;
// Calculates the aspect ratio, near and far clipping planes, field of view and camera Z position.
mDefaultCamera->SetPerspectiveProjection( mSize );
- mDefaultCamera->RotateProjection( mSurfaceOrientation );
mRootLayer->SetSize( mSize.width, mSize.height );
ThreadLocalStorage* tls = ThreadLocalStorage::GetInternal();
SceneGraph::UpdateManager& updateManager = tls->GetUpdateManager();
SetDefaultSurfaceRectMessage( updateManager, newSize );
- SetDefaultSurfaceOrientationMessage( updateManager, mSurfaceOrientation );
// set default render-task viewport parameters
RenderTaskPtr defaultRenderTask = mRenderTaskList->GetTask( 0u );
}
}
-void Scene::EmitTouchedSignal( const TouchEvent& touchEvent, const Dali::TouchData& touch )
+void Scene::EmitTouchedSignal( const Dali::TouchEvent& touch )
{
Dali::Integration::Scene handle( this );
- if ( !mTouchedSignal.Empty() )
- {
- mTouchedSignal.Emit( touchEvent );
- }
if ( !mTouchSignal.Empty() )
{
mTouchSignal.Emit( touch );
}
}
-void Scene::EmitWheelEventSignal(const WheelEvent& event)
+void Scene::EmitWheelEventSignal(const Dali::WheelEvent& event)
{
if ( !mWheelEventSignal.Empty() )
{
}
}
+void Scene::AddFrameRenderedCallback( std::unique_ptr< CallbackBase > callback, int32_t frameId )
+{
+ ThreadLocalStorage* tls = ThreadLocalStorage::GetInternal();
+ AddFrameRenderedCallbackMessage( tls->GetEventThreadServices(), *mSceneObject, callback.release(), frameId );
+}
+
+void Scene::AddFramePresentedCallback( std::unique_ptr< CallbackBase > callback, int32_t frameId )
+{
+ ThreadLocalStorage* tls = ThreadLocalStorage::GetInternal();
+ AddFramePresentedCallbackMessage( tls->GetEventThreadServices(), *mSceneObject, callback.release(), frameId );
+}
+
+void Scene::GetFrameRenderedCallback( Dali::Integration::Scene::FrameCallbackContainer& callbacks )
+{
+ mSceneObject->GetFrameRenderedCallback( callbacks );
+}
+
+void Scene::GetFramePresentedCallback( Dali::Integration::Scene::FrameCallbackContainer& callbacks )
+{
+ mSceneObject->GetFramePresentedCallback( callbacks );
+}
+
Integration::Scene::KeyEventSignalType& Scene::KeyEventSignal()
{
return mKeyEventSignal;
return mEventProcessingFinishedSignal;
}
-Scene::TouchedSignalType& Scene::TouchedSignal()
-{
- return mTouchedSignal;
-}
-
Integration::Scene::TouchSignalType& Scene::TouchSignal()
{
return mTouchSignal;