*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
DALI_PROPERTY( "viewportPosition", VECTOR2, true, true, true, Dali::RenderTask::Property::VIEWPORT_POSITION )
DALI_PROPERTY( "viewportSize", VECTOR2, true, true, true, Dali::RenderTask::Property::VIEWPORT_SIZE )
DALI_PROPERTY( "clearColor", VECTOR4, true, true, true, Dali::RenderTask::Property::CLEAR_COLOR )
DALI_PROPERTY( "viewportPosition", VECTOR2, true, true, true, Dali::RenderTask::Property::VIEWPORT_POSITION )
DALI_PROPERTY( "viewportSize", VECTOR2, true, true, true, Dali::RenderTask::Property::VIEWPORT_SIZE )
DALI_PROPERTY( "clearColor", VECTOR4, true, true, true, Dali::RenderTask::Property::CLEAR_COLOR )
- unsigned int resourceId = 0;
- if(mFrameBufferImage)
- {
- GetImplementation(mFrameBufferImage).Connect();
+void RenderTask::SetFrameBuffer( FrameBufferPtr frameBuffer )
+{
+ mFrameBuffer = frameBuffer;
+ Render::FrameBuffer* renderFrameBufferPtr( NULL );
+ if( frameBuffer )
+ {
+ renderFrameBufferPtr = mFrameBuffer->GetRenderObject();
+ }
- // mSceneObject is being used in a separate thread; queue a message to set the value
- SetFrameBufferIdMessage( GetEventThreadServices(), *mSceneObject, resourceId );
- }
- else
- {
- // update target frame buffer
- mFrameBufferImage = image;
- }
- }
+FrameBuffer* RenderTask::GetFrameBuffer() const
+{
+ return mFrameBuffer.Get();
+void RenderTask::SetSyncRequired( bool requiresSync )
+{
+ if( mRequiresSync != requiresSync )
+ {
+ mRequiresSync = requiresSync;
+
+ if( mSceneObject )
+ {
+ // mSceneObject is being used in a separate thread; queue a message to set the value
+ SetSyncRequiredMessage( GetEventThreadServices(), *mSceneObject, requiresSync );
+ }
+ }
+}
+
+bool RenderTask::IsSyncRequired() const
+{
+ return mRequiresSync;
+}
+
// Keep the raw-pointer until DiscardSceneObject is called
mSceneObject = SceneGraph::RenderTask::New();
// Keep the raw-pointer until DiscardSceneObject is called
mSceneObject = SceneGraph::RenderTask::New();
- // if we have a frame buffer we need to track connection status then send a message to set the frame buffer id in case it has changed since last time we were on stage
- unsigned int resourceId = 0;
- if(mFrameBufferImage)
- {
- GetImplementation(mFrameBufferImage).Connect();
-
- resourceId = GetImplementation( mFrameBufferImage ).GetResourceId();
- }
-
- // mSceneObject is being used in a separate thread; queue a message to set the value
- SetFrameBufferIdMessage( GetEventThreadServices(), *mSceneObject, resourceId );
-
// Send messages to set other properties that may have changed since last time we were on stage
SetExclusiveMessage( GetEventThreadServices(), *mSceneObject, mExclusive );
SetClearColorMessage( GetEventThreadServices(), *mSceneObject, mClearColor );
SetClearEnabledMessage( GetEventThreadServices(), *mSceneObject, mClearEnabled );
SetCullModeMessage( GetEventThreadServices(), *mSceneObject, mCullMode );
SetRefreshRateMessage( GetEventThreadServices(), *mSceneObject, mRefreshRate );
// Send messages to set other properties that may have changed since last time we were on stage
SetExclusiveMessage( GetEventThreadServices(), *mSceneObject, mExclusive );
SetClearColorMessage( GetEventThreadServices(), *mSceneObject, mClearColor );
SetClearEnabledMessage( GetEventThreadServices(), *mSceneObject, mClearEnabled );
SetCullModeMessage( GetEventThreadServices(), *mSceneObject, mCullMode );
SetRefreshRateMessage( GetEventThreadServices(), *mSceneObject, mRefreshRate );
+ value = mViewportPosition;
+ break;
+ }
+ case Dali::RenderTask::Property::VIEWPORT_SIZE:
+ {
+ value = mViewportSize;
+ break;
+ }
+ case Dali::RenderTask::Property::CLEAR_COLOR:
+ {
+ value = mClearColor;
+ break;
+ }
+ case Dali::RenderTask::Property::REQUIRES_SYNC:
+ {
+ value = IsSyncRequired();
+ break;
+ }
+
+ default:
+ {
+ DALI_ASSERT_ALWAYS(false && "RenderTask property index out of range"); // should not come here
+ break;
+ }
+ }
+
+ return value;
+}
+
+Property::Value RenderTask::GetDefaultPropertyCurrentValue( Property::Index index ) const
+{
+ Property::Value value;
+
+ switch ( index )
+ {
+
+ case Dali::RenderTask::Property::VIEWPORT_POSITION:
+ {
+void RenderTask::OnNotifyDefaultPropertyAnimation( Animation& animation, Property::Index index, const Property::Value& value )
+{
+ switch ( index )
+ {
+ case Dali::RenderTask::Property::VIEWPORT_POSITION:
+ {
+ value.Get( mViewportPosition );
+ break;
+ }
+ case Dali::RenderTask::Property::VIEWPORT_SIZE:
+ {
+ value.Get( mViewportSize );
+ break;
+ }
+ case Dali::RenderTask::Property::CLEAR_COLOR:
+ {
+ value.Get( mClearColor );
+ break;
+ }
+ case Dali::RenderTask::Property::REQUIRES_SYNC:
+ default:
+ {
+ // Nothing to do as not animatable
+ break;
+ }
+ }
+}
+
bool RenderTask::DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor )
{
bool connected( true );
bool RenderTask::DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor )
{
bool connected( true );
mCameraConnector( Connector::CAMERA_CONNECTOR, *this ),
mMappingConnector( Connector::MAPPING_CONNECTOR, *this ),
mClearColor( Dali::RenderTask::DEFAULT_CLEAR_COLOR ),
mCameraConnector( Connector::CAMERA_CONNECTOR, *this ),
mMappingConnector( Connector::MAPPING_CONNECTOR, *this ),
mClearColor( Dali::RenderTask::DEFAULT_CLEAR_COLOR ),
mRefreshRate( Dali::RenderTask::DEFAULT_REFRESH_RATE ),
mRefreshOnceCounter( 0u ),
mScreenToFrameBufferFunction( Dali::RenderTask::DEFAULT_SCREEN_TO_FRAMEBUFFER_FUNCTION ),
mRefreshRate( Dali::RenderTask::DEFAULT_REFRESH_RATE ),
mRefreshOnceCounter( 0u ),
mScreenToFrameBufferFunction( Dali::RenderTask::DEFAULT_SCREEN_TO_FRAMEBUFFER_FUNCTION ),
mInputEnabled( Dali::RenderTask::DEFAULT_INPUT_ENABLED ),
mClearEnabled( Dali::RenderTask::DEFAULT_CLEAR_ENABLED ),
mCullMode( Dali::RenderTask::DEFAULT_CULL_MODE ),
mInputEnabled( Dali::RenderTask::DEFAULT_INPUT_ENABLED ),
mClearEnabled( Dali::RenderTask::DEFAULT_CLEAR_ENABLED ),
mCullMode( Dali::RenderTask::DEFAULT_CULL_MODE ),
{
DALI_LOG_INFO(gLogRender, Debug::General, "RenderTask::RenderTask(this:%p)\n", this);
}
{
DALI_LOG_INFO(gLogRender, Debug::General, "RenderTask::RenderTask(this:%p)\n", this);
}
RenderTask::Connector::Connector( Type type, RenderTask& renderTask )
: mType( type ),
mRenderTask( renderTask ),
RenderTask::Connector::Connector( Type type, RenderTask& renderTask )
: mType( type ),
mRenderTask( renderTask ),
- SetCameraNodeMessage( mRenderTask.GetEventThreadServices(), *(mRenderTask.mSceneObject), node );
+ SetCameraMessage( mRenderTask.GetEventThreadServices(), *(mRenderTask.mSceneObject), node, mCamera );