X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fupdate%2Fmanager%2Fupdate-manager.cpp;h=87b632fa0528a20526c69d42914ec2b5596a36cd;hb=1eb0148fe7c5dbd58d8e3bf364cbab9e65167609;hp=4d1842ed265d8def4ea0055a3499a763f8e84a24;hpb=d89adac18b34e8aff2f0b78dc4c0240100aaa282;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/update/manager/update-manager.cpp b/dali/internal/update/manager/update-manager.cpp index 4d1842e..87b632f 100755 --- a/dali/internal/update/manager/update-manager.cpp +++ b/dali/internal/update/manager/update-manager.cpp @@ -183,7 +183,8 @@ struct UpdateManager::Impl RenderManager& renderManager, RenderQueue& renderQueue, SceneGraphBuffers& sceneGraphBuffers, - RenderTaskProcessor& renderTaskProcessor ) + RenderTaskProcessor& renderTaskProcessor, + bool partialUpdateAvailable ) : renderMessageDispatcher( renderManager, renderQueue, sceneGraphBuffers ), notificationManager( notificationManager ), transformManager(), @@ -212,7 +213,8 @@ struct UpdateManager::Impl previousUpdateScene( false ), renderTaskWaiting( false ), renderersAdded( false ), - surfaceRectChanged( false ) + surfaceRectChanged( false ), + partialUpdateAvailable( partialUpdateAvailable ) { sceneController = new SceneControllerImpl( renderMessageDispatcher, renderQueue, discardQueue ); @@ -322,6 +324,7 @@ struct UpdateManager::Impl bool renderTaskWaiting; ///< A REFRESH_ONCE render task is waiting to be rendered bool renderersAdded; ///< Flag to keep track when renderers have been added to avoid unnecessary processing bool surfaceRectChanged; ///< True if the default surface rect is changed + bool partialUpdateAvailable; ///< Whether the partial update is available private: @@ -336,7 +339,8 @@ UpdateManager::UpdateManager( NotificationManager& notificationManager, RenderController& controller, RenderManager& renderManager, RenderQueue& renderQueue, - RenderTaskProcessor& renderTaskProcessor ) + RenderTaskProcessor& renderTaskProcessor, + bool partialUpdateAvailable ) : mImpl(NULL) { mImpl = new Impl( notificationManager, @@ -347,7 +351,8 @@ UpdateManager::UpdateManager( NotificationManager& notificationManager, renderManager, renderQueue, mSceneGraphBuffers, - renderTaskProcessor ); + renderTaskProcessor, + partialUpdateAvailable ); } @@ -411,6 +416,7 @@ void UpdateManager::AddNode( OwnerPointer& node ) { mImpl->nodes.Insert((iter+1), rawNode ); rawNode->CreateTransform( &mImpl->transformManager ); + rawNode->SetPartialUpdateAvailable( mImpl->partialUpdateAvailable ); return; } } @@ -635,8 +641,6 @@ void UpdateManager::RemoveRenderer( Renderer* renderer ) { DALI_LOG_INFO( gLogFilter, Debug::General, "[%x] RemoveRenderer\n", renderer ); - renderer->SetDirty( true ); - // Find the renderer and destroy it EraseUsingDiscardQueue( mImpl->renderers, renderer, mImpl->discardQueue, mSceneGraphBuffers.GetUpdateBufferIndex() ); // Need to remove the render object as well @@ -697,6 +701,13 @@ void UpdateManager::ResetProperties( BufferIndex bufferIndex ) mImpl->propertyResetters.EraseObject( elementPtr ); } + // Clear all root nodes dirty flags + for( auto& scene : mImpl->scenes ) + { + auto root = scene->root; + root->ResetDirtyFlags( bufferIndex ); + } + // Clear node dirty flags Vector::Iterator iter = mImpl->nodes.Begin()+1; Vector::Iterator endIter = mImpl->nodes.End();