void RenderTaskList::RemoveTask( Dali::RenderTask task ) { for ( RenderTaskContainer::iterator iter = mTasks.begin(); mTasks.end() != iter; ++iter ) { if ( *iter == task ) { if ( mSceneObject ) { RenderTask& taskImpl = GetImplementation( task ); SceneGraph::RenderTask* sceneObject = taskImpl.GetRenderTaskSceneObject(); DALI_ASSERT_DEBUG( NULL != sceneObject ); // Send a message to remove the scene-graph RenderTask RemoveTaskMessage( mEventToUpdate, *mSceneObject, *sceneObject ); // The scene-graph RenderTask will be destroyed soon; discard the raw-pointer taskImpl.DiscardSceneObject(); } mTasks.erase( iter ); break; // we're finished } } }
void RenderTaskList::RemoveTask( Dali::RenderTask task ) { for ( RenderTaskContainer::iterator iter = mTasks.begin(); mTasks.end() != iter; ++iter ) { if ( *iter == task ) { RenderTask& taskImpl = GetImplementation( task ); if ( mSceneObject ) { SceneGraph::RenderTask* sceneObject = taskImpl.GetRenderTaskSceneObject(); DALI_ASSERT_DEBUG( NULL != sceneObject ); // Send a message to remove the scene-graph RenderTask RemoveTaskMessage( mEventThreadServices, *mSceneObject, *sceneObject ); // The scene-graph RenderTask will be destroyed soon; discard the raw-pointer taskImpl.DiscardSceneObject(); } mTasks.erase( iter ); for ( Vector< Exclusive >::Iterator exclusiveIt = mExclusives.Begin(); exclusiveIt != mExclusives.End(); ++exclusiveIt ) { if ( exclusiveIt->renderTaskPtr == &taskImpl ) { mExclusives.Erase( exclusiveIt ); break; } } break; // we're finished } } }