// CLASS HEADER
#include <dali/internal/event/render-tasks/render-task-impl.h>
+// EXTERNAL INCLUDES
+#include <cstring> // for strcmp
+
// INTERNAL INCLUDES
#include <dali/public-api/common/dali-common.h>
#include <dali/public-api/object/type-registry.h>
-#include <dali/internal/common/event-to-update.h>
+#include <dali/internal/event/common/event-thread-services.h>
#include <dali/internal/event/actors/actor-impl.h>
#include <dali/internal/event/actors/camera-actor-impl.h>
#include <dali/internal/event/common/property-helper.h>
#include <dali/internal/event/common/stage-impl.h>
-#include <dali/internal/event/common/thread-local-storage.h>
#include <dali/internal/event/images/frame-buffer-image-impl.h>
#include <dali/internal/update/nodes/node.h>
#include <dali/internal/update/render-tasks/scene-graph-render-task.h>
// Name Type writable animatable constraint-input enum for index-checking
DALI_PROPERTY_TABLE_BEGIN
-DALI_PROPERTY( "viewport-position", VECTOR2, true, true, true, Dali::RenderTask::Property::ViewportPosition )
-DALI_PROPERTY( "viewport-size", VECTOR2, true, true, true, Dali::RenderTask::Property::ViewportSize )
-DALI_PROPERTY( "clear-color", VECTOR4, true, true, true, Dali::RenderTask::Property::ClearColor )
-DALI_PROPERTY_TABLE_END( DEFAULT_DERIVED_HANDLE_PROPERTY_START_INDEX )
+DALI_PROPERTY( "viewport-position", VECTOR2, true, true, true, Dali::RenderTask::Property::VIEWPORT_POSITION )
+DALI_PROPERTY( "viewport-size", VECTOR2, true, true, true, Dali::RenderTask::Property::VIEWPORT_SIZE )
+DALI_PROPERTY( "clear-color", VECTOR4, true, true, true, Dali::RenderTask::Property::CLEAR_COLOR )
+DALI_PROPERTY_TABLE_END( DEFAULT_OBJECT_PROPERTY_START_INDEX )
// Signals
RenderTask* RenderTask::New( bool isSystemLevel )
{
- RenderTask* task( new RenderTask( ThreadLocalStorage::Get().GetEventToUpdate(), isSystemLevel ) );
+ RenderTask* task( new RenderTask( isSystemLevel ) );
return task;
}
if ( mSceneObject )
{
// mSceneObject is being used in a separate thread; queue a message to set the value
- SetExclusiveMessage( mEventToUpdate, *mSceneObject, mExclusive );
+ SetExclusiveMessage( GetEventThreadServices(), *mSceneObject, mExclusive );
}
}
}
}
// mSceneObject is being used in a separate thread; queue a message to set the value
- SetFrameBufferIdMessage( mEventToUpdate, *mSceneObject, resourceId );
+ SetFrameBufferIdMessage( GetEventThreadServices(), *mSceneObject, resourceId );
}
else
{
void RenderTask::SetViewportPosition(const Vector2& value)
{
- StagePtr stage = Stage::GetCurrent();
- BakeViewportPositionMessage( stage->GetUpdateInterface(), *mSceneObject, value );
+ BakeViewportPositionMessage( GetEventThreadServices(), *mSceneObject, value );
}
Vector2 RenderTask::GetCurrentViewportPosition() const
{
- StagePtr stage = Stage::GetCurrent();
- return mSceneObject->GetViewportPosition(stage->GetEventBufferIndex());
+ return mSceneObject->GetViewportPosition( GetEventThreadServices().GetEventBufferIndex() );
}
void RenderTask::SetViewportSize(const Vector2& value)
{
- StagePtr stage = Stage::GetCurrent();
- BakeViewportSizeMessage( stage->GetUpdateInterface(), *mSceneObject, value );
+ BakeViewportSizeMessage( GetEventThreadServices(), *mSceneObject, value );
}
Vector2 RenderTask::GetCurrentViewportSize() const
{
- StagePtr stage = Stage::GetCurrent();
- return mSceneObject->GetViewportSize(stage->GetEventBufferIndex());
+ return mSceneObject->GetViewportSize( GetEventThreadServices().GetEventBufferIndex() );
}
void RenderTask::SetViewport( const Viewport& viewport )
void RenderTask::GetViewport( Viewport& viewPort ) const
{
- BufferIndex bufferIndex = Stage::GetCurrent()->GetEventBufferIndex();
+ BufferIndex bufferIndex = GetEventThreadServices().GetEventBufferIndex();
if(!mSceneObject->GetViewportEnabled( bufferIndex ))
{
}
else
{
- Vector2 size( Stage::GetCurrent()->GetSize() );
- viewPort.x = viewPort.y = 0;
- viewPort.width = size.width;
- viewPort.height = size.height;
+ Internal::Stage* stage = Internal::Stage::GetCurrent();
+ if ( stage )
+ {
+ Vector2 size( stage->GetSize() );
+ viewPort.x = viewPort.y = 0;
+ viewPort.width = size.width;
+ viewPort.height = size.height;
+ }
}
}
else
if ( mSceneObject )
{
// mSceneObject is being used in a separate thread; queue a message to set the value
- StagePtr stage = Stage::GetCurrent();
- BakeClearColorMessage( stage->GetUpdateInterface(), *mSceneObject, color );
+ BakeClearColorMessage( GetEventThreadServices(), *mSceneObject, color );
}
}
}
const Vector4& RenderTask::GetClearColor() const
{
- StagePtr stage = Stage::GetCurrent();
- return mSceneObject->GetClearColor(stage->GetEventBufferIndex());
+ return mSceneObject->GetClearColor( GetEventThreadServices().GetEventBufferIndex() );
}
void RenderTask::SetClearEnabled( bool enabled )
if ( mSceneObject )
{
// mSceneObject is being used in a separate thread; queue a message to set the value
- SetClearEnabledMessage( mEventToUpdate, *mSceneObject, mClearEnabled );
+ SetClearEnabledMessage( GetEventThreadServices(), *mSceneObject, mClearEnabled );
}
}
}
if ( mSceneObject )
{
// mSceneObject is being used in a separate thread; queue a message to set the value
- SetCullModeMessage( mEventToUpdate, *mSceneObject, mCullMode );
+ SetCullModeMessage( GetEventThreadServices(), *mSceneObject, mCullMode );
}
}
}
if ( mSceneObject )
{
// mSceneObject is being used in a separate thread; queue a message to set the value
- SetRefreshRateMessage( mEventToUpdate, *mSceneObject, refreshRate );
+ SetRefreshRateMessage( GetEventThreadServices(), *mSceneObject, refreshRate );
}
}
}
// mSceneObject is being used in a separate thread; queue a message to set the value
- SetFrameBufferIdMessage( mEventToUpdate, *mSceneObject, resourceId );
+ SetFrameBufferIdMessage( GetEventThreadServices(), *mSceneObject, resourceId );
// Send messages to set other properties that may have changed since last time we were on stage
- SetExclusiveMessage( mEventToUpdate, *mSceneObject, mExclusive );
- SetClearColorMessage( mEventToUpdate, *mSceneObject, mClearColor );
- SetClearEnabledMessage( mEventToUpdate, *mSceneObject, mClearEnabled );
- SetCullModeMessage( mEventToUpdate, *mSceneObject, mCullMode );
- SetRefreshRateMessage( mEventToUpdate, *mSceneObject, mRefreshRate );
+ SetExclusiveMessage( GetEventThreadServices(), *mSceneObject, mExclusive );
+ SetClearColorMessage( GetEventThreadServices(), *mSceneObject, mClearColor );
+ SetClearEnabledMessage( GetEventThreadServices(), *mSceneObject, mClearEnabled );
+ SetCullModeMessage( GetEventThreadServices(), *mSceneObject, mCullMode );
+ SetRefreshRateMessage( GetEventThreadServices(), *mSceneObject, mRefreshRate );
// Caller takes ownership
return mSceneObject;
void RenderTask::GetDefaultPropertyIndices( Property::IndexContainer& indices ) const
{
- indices.reserve( DEFAULT_PROPERTY_COUNT );
+ indices.Reserve( DEFAULT_PROPERTY_COUNT );
for ( int i = 0; i < DEFAULT_PROPERTY_COUNT; ++i )
{
- indices.push_back( i );
+ indices.PushBack( i );
}
}
{
switch ( index )
{
- case Dali::RenderTask::Property::ViewportPosition:
+ case Dali::RenderTask::Property::VIEWPORT_POSITION:
{
SetViewportPosition( property.Get<Vector2>() );
break;
}
- case Dali::RenderTask::Property::ViewportSize:
+ case Dali::RenderTask::Property::VIEWPORT_SIZE:
{
SetViewportSize( property.Get<Vector2>() );
break;
}
- case Dali::RenderTask::Property::ClearColor:
+ case Dali::RenderTask::Property::CLEAR_COLOR:
{
SetClearColor( property.Get<Vector4>() );
break;
switch ( index )
{
- case Dali::RenderTask::Property::ViewportPosition:
+ case Dali::RenderTask::Property::VIEWPORT_POSITION:
{
value = GetCurrentViewportPosition();
break;
}
- case Dali::RenderTask::Property::ViewportSize:
+ case Dali::RenderTask::Property::VIEWPORT_SIZE:
{
value = GetCurrentViewportSize();
break;
}
- case Dali::RenderTask::Property::ClearColor:
+ case Dali::RenderTask::Property::CLEAR_COLOR:
{
value = GetClearColor();
break;
{
switch ( index )
{
- case Dali::RenderTask::Property::ViewportPosition:
+ case Dali::RenderTask::Property::VIEWPORT_POSITION:
property = &mSceneObject->mViewportPosition;
break;
- case Dali::RenderTask::Property::ViewportSize:
+ case Dali::RenderTask::Property::VIEWPORT_SIZE:
property = &mSceneObject->mViewportSize;
break;
- case Dali::RenderTask::Property::ClearColor:
+ case Dali::RenderTask::Property::CLEAR_COLOR:
property = &mSceneObject->mClearColor;
break;
{
switch ( index )
{
- case Dali::RenderTask::Property::ViewportPosition:
+ case Dali::RenderTask::Property::VIEWPORT_POSITION:
property = &mSceneObject->mViewportPosition;
break;
- case Dali::RenderTask::Property::ViewportSize:
+ case Dali::RenderTask::Property::VIEWPORT_SIZE:
property = &mSceneObject->mViewportSize;
break;
- case Dali::RenderTask::Property::ClearColor:
+ case Dali::RenderTask::Property::CLEAR_COLOR:
property = &mSceneObject->mViewportSize;
break;
return connected;
}
-RenderTask::RenderTask( EventToUpdate& eventToUpdate, bool isSystemLevel )
-: mEventToUpdate( eventToUpdate ),
- mSceneObject( NULL ),
+RenderTask::RenderTask( bool isSystemLevel )
+: mSceneObject( NULL ),
mSourceConnector( Connector::SOURCE_CONNECTOR, *this ),
mCameraConnector( Connector::CAMERA_CONNECTOR, *this ),
mMappingConnector( Connector::MAPPING_CONNECTOR, *this ),
//the mapping node is not used in the scene graph
if ( SOURCE_CONNECTOR == mType )
{
- SetSourceNodeMessage( mRenderTask.mEventToUpdate, *(mRenderTask.mSceneObject), node );
+ SetSourceNodeMessage( mRenderTask.GetEventThreadServices(), *(mRenderTask.mSceneObject), node );
}
else if( CAMERA_CONNECTOR == mType )
{
- SetCameraNodeMessage( mRenderTask.mEventToUpdate, *(mRenderTask.mSceneObject), node );
+ SetCameraNodeMessage( mRenderTask.GetEventThreadServices(), *(mRenderTask.mSceneObject), node );
}
}
}