X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fevent%2Frender-tasks%2Frender-task-impl.cpp;h=a64d4eaad524d6d996e3c48e6422f4f9bab5216e;hb=4bd2fbea750e7dc85627868d8d276cc416b01b5a;hp=eea053c66636c22676d8a6d6e74acc66fb5a9db1;hpb=c6b1508769b8710d7dce5241aa18c83b25d6fa3f;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/event/render-tasks/render-task-impl.cpp b/dali/internal/event/render-tasks/render-task-impl.cpp index eea053c..a64d4ea 100644 --- a/dali/internal/event/render-tasks/render-task-impl.cpp +++ b/dali/internal/event/render-tasks/render-task-impl.cpp @@ -18,6 +18,9 @@ // CLASS HEADER #include +// EXTERNAL INCLUDES +#include // for strcmp + // INTERNAL INCLUDES #include #include @@ -28,6 +31,7 @@ #include #include #include +#include #include #if defined(DEBUG_ENABLED) @@ -74,6 +78,11 @@ RenderTask* RenderTask::New( bool isSystemLevel ) void RenderTask::SetSourceActor( Actor* actor ) { + const Stage* stage = Stage::GetCurrent(); + if ( stage ) + { + stage->GetRenderTaskList().SetExclusive( this, mExclusive ); + } mSourceConnector.SetActor( actor ); } @@ -88,6 +97,12 @@ void RenderTask::SetExclusive( bool exclusive ) { mExclusive = exclusive; + const Stage* stage = Stage::GetCurrent(); + if ( stage ) + { + stage->GetRenderTaskList().SetExclusive( this, exclusive ); + } + if ( mSceneObject ) { // mSceneObject is being used in a separate thread; queue a message to set the value @@ -221,10 +236,14 @@ void RenderTask::GetViewport( Viewport& viewPort ) const } 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 @@ -352,32 +371,35 @@ bool RenderTask::TranslateCoordinates( Vector2& screenCoords ) const { CameraActor* localCamera = GetCameraActor(); StagePtr stage = Stage::GetCurrent(); - CameraActor& defaultCamera = stage->GetDefaultCameraActor(); - if( localCamera ) + if( stage ) { - Viewport viewport; - Vector2 size( stage->GetSize() ); - viewport.x = viewport.y = 0; - viewport.width = size.width; - viewport.height = size.height; - - float localX, localY; - inside = mMappingConnector.mActor->ScreenToLocal(defaultCamera.GetViewMatrix(), defaultCamera.GetProjectionMatrix(), viewport, localX, localY, screenCoords.x, screenCoords.y); - Vector3 actorSize = mMappingConnector.mActor->GetCurrentSize(); - if( inside && localX >= 0.f && localX <= actorSize.x && localY >= 0.f && localY <= actorSize.y) + CameraActor& defaultCamera = stage->GetDefaultCameraActor(); + if( localCamera ) { - screenCoords.x = localX; - screenCoords.y = localY; + Viewport viewport; + Vector2 size( stage->GetSize() ); + viewport.x = viewport.y = 0; + viewport.width = size.width; + viewport.height = size.height; + + float localX, localY; + inside = mMappingConnector.mActor->ScreenToLocal(defaultCamera.GetViewMatrix(), defaultCamera.GetProjectionMatrix(), viewport, localX, localY, screenCoords.x, screenCoords.y); + Vector3 actorSize = mMappingConnector.mActor->GetCurrentSize(); + if( inside && localX >= 0.f && localX <= actorSize.x && localY >= 0.f && localY <= actorSize.y) + { + screenCoords.x = localX; + screenCoords.y = localY; + } + else + { + inside = false; + } } else { inside = false; } } - else - { - inside = false; - } } else if ( mFrameBufferImage && mScreenToFrameBufferFunction ) { @@ -450,11 +472,11 @@ unsigned int RenderTask::GetDefaultPropertyCount() const 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 ); } } @@ -755,6 +777,15 @@ void RenderTask::Connector::SceneObjectRemoved( Object& object ) void RenderTask::Connector::ObjectDestroyed( Object& object ) { + if ( SOURCE_CONNECTOR == mType ) + { + const Stage* stage = Stage::GetCurrent(); + if ( stage ) + { + stage->GetRenderTaskList().SetExclusive( &mRenderTask, false ); + } + } + mActor = NULL; UpdateRenderTask();