X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fupdate%2Fmanager%2Fupdate-manager.cpp;h=87b632fa0528a20526c69d42914ec2b5596a36cd;hb=1eb0148fe7c5dbd58d8e3bf364cbab9e65167609;hp=571e8b34b8099951d8585db4610b8c5e73aaec0e;hpb=cb6fa8e41c0f1cde73b479174f43e695645fefc1;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 old mode 100644 new mode 100755 index 571e8b3..87b632f --- 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; } } @@ -426,6 +432,8 @@ void UpdateManager::ConnectNode( Node* parent, Node* node ) parent->ConnectChild( node ); + parent->SetPropertyDirty( true ); + // Inform the frame-callback-processor, if set, about the node-hierarchy changing if( mImpl->frameCallbackProcessor ) { @@ -693,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();