/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2016 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.
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( "requiresSync", BOOLEAN, true, false, false, Dali::RenderTask::Property::REQUIRES_SYNC )
DALI_PROPERTY_TABLE_END( DEFAULT_OBJECT_PROPERTY_START_INDEX )
// Signals
void RenderTask::SetCameraActor( CameraActor* cameraActor )
{
+ if( cameraActor )
+ {
+ mCameraConnector.mCamera = cameraActor->GetCamera();
+ }
+ else
+ {
+ mCameraConnector.mCamera = NULL;
+ }
mCameraConnector.SetActor( cameraActor );
}
}
}
+void RenderTask::SetFrameBuffer( Dali::FrameBuffer frameBuffer )
+{
+ if( frameBuffer )
+ {
+ mFrameBuffer = Internal::FrameBufferPtr( &GetImplementation( frameBuffer ) );
+ SetFrameBufferMessage( GetEventThreadServices(), *mSceneObject, mFrameBuffer->GetRenderObject() );
+ }
+ else
+ {
+ mFrameBuffer.Reset();
+ SetFrameBufferMessage( GetEventThreadServices(), *mSceneObject, NULL );
+ }
+}
+
+FrameBuffer* RenderTask::GetFrameBuffer() const
+{
+ return mFrameBuffer.Get();
+}
+
Dali::FrameBufferImage RenderTask::GetTargetFrameBuffer() const
{
return mFrameBufferImage;
return mSceneObject->GetClearColor( GetEventThreadServices().GetEventBufferIndex() );
}
+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;
+}
+
void RenderTask::SetClearEnabled( bool enabled )
{
if ( mClearEnabled != enabled )
CameraActor* cam = GetCameraActor();
Vector4 pos(position);
- pos.w = 1.0;
+ pos.w = 1.f;
Vector4 viewportPosition;
SetClearColor( property.Get<Vector4>() );
break;
}
+ case Dali::RenderTask::Property::REQUIRES_SYNC:
+ {
+ SetSyncRequired( property.Get<bool>() );
+ break;
+ }
default:
{
// nothing to do
value = GetClearColor();
break;
}
+ case Dali::RenderTask::Property::REQUIRES_SYNC:
+ {
+ value = IsSyncRequired();
+ break;
+ }
default:
{
break;
case Dali::RenderTask::Property::CLEAR_COLOR:
- property = &mSceneObject->mViewportSize;
+ property = &mSceneObject->mClearColor;
break;
default:
mInputEnabled( Dali::RenderTask::DEFAULT_INPUT_ENABLED ),
mClearEnabled( Dali::RenderTask::DEFAULT_CLEAR_ENABLED ),
mCullMode( Dali::RenderTask::DEFAULT_CULL_MODE ),
- mIsSystemLevel( isSystemLevel )
+ mIsSystemLevel( isSystemLevel ),
+ mRequiresSync( false )
{
DALI_LOG_INFO(gLogRender, Debug::General, "RenderTask::RenderTask(this:%p)\n", this);
}
RenderTask::Connector::Connector( Type type, RenderTask& renderTask )
: mType( type ),
mRenderTask( renderTask ),
- mActor( NULL )
+ mActor( NULL ),
+ mCamera( NULL )
{
}
}
mActor = NULL;
+ mCamera = NULL; // only meaningful for the camera connector but no simple way to distinguish
UpdateRenderTask();
}
}
else if( CAMERA_CONNECTOR == mType )
{
- SetCameraNodeMessage( mRenderTask.GetEventThreadServices(), *(mRenderTask.mSceneObject), node );
+ SetCameraMessage( mRenderTask.GetEventThreadServices(), *(mRenderTask.mSceneObject), node, mCamera );
}
}
}