projects
/
platform
/
core
/
uifw
/
dali-core.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[Tizen] Implement partial update
[platform/core/uifw/dali-core.git]
/
dali
/
internal
/
update
/
manager
/
update-manager.cpp
diff --git
a/dali/internal/update/manager/update-manager.cpp
b/dali/internal/update/manager/update-manager.cpp
old mode 100644
(file)
new mode 100755
(executable)
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,
RenderManager& renderManager,
RenderQueue& renderQueue,
SceneGraphBuffers& sceneGraphBuffers,
- RenderTaskProcessor& renderTaskProcessor )
+ RenderTaskProcessor& renderTaskProcessor,
+ bool partialUpdateAvailable )
: renderMessageDispatcher( renderManager, renderQueue, sceneGraphBuffers ),
notificationManager( notificationManager ),
transformManager(),
: renderMessageDispatcher( renderManager, renderQueue, sceneGraphBuffers ),
notificationManager( notificationManager ),
transformManager(),
@@
-212,7
+213,8
@@
struct UpdateManager::Impl
previousUpdateScene( false ),
renderTaskWaiting( false ),
renderersAdded( false ),
previousUpdateScene( false ),
renderTaskWaiting( false ),
renderersAdded( false ),
- surfaceRectChanged( false )
+ surfaceRectChanged( false ),
+ partialUpdateAvailable( partialUpdateAvailable )
{
sceneController = new SceneControllerImpl( renderMessageDispatcher, renderQueue, discardQueue );
{
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 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:
private:
@@
-336,7
+339,8
@@
UpdateManager::UpdateManager( NotificationManager& notificationManager,
RenderController& controller,
RenderManager& renderManager,
RenderQueue& renderQueue,
RenderController& controller,
RenderManager& renderManager,
RenderQueue& renderQueue,
- RenderTaskProcessor& renderTaskProcessor )
+ RenderTaskProcessor& renderTaskProcessor,
+ bool partialUpdateAvailable )
: mImpl(NULL)
{
mImpl = new Impl( notificationManager,
: mImpl(NULL)
{
mImpl = new Impl( notificationManager,
@@
-347,7
+351,8
@@
UpdateManager::UpdateManager( NotificationManager& notificationManager,
renderManager,
renderQueue,
mSceneGraphBuffers,
renderManager,
renderQueue,
mSceneGraphBuffers,
- renderTaskProcessor );
+ renderTaskProcessor,
+ partialUpdateAvailable );
}
}
@@
-411,6
+416,7
@@
void UpdateManager::AddNode( OwnerPointer<Node>& node )
{
mImpl->nodes.Insert((iter+1), rawNode );
rawNode->CreateTransform( &mImpl->transformManager );
{
mImpl->nodes.Insert((iter+1), rawNode );
rawNode->CreateTransform( &mImpl->transformManager );
+ rawNode->SetPartialUpdateAvailable( mImpl->partialUpdateAvailable );
return;
}
}
return;
}
}
@@
-426,6
+432,8
@@
void UpdateManager::ConnectNode( Node* parent, Node* node )
parent->ConnectChild( node );
parent->ConnectChild( node );
+ parent->SetPropertyDirty( true );
+
// Inform the frame-callback-processor, if set, about the node-hierarchy changing
if( mImpl->frameCallbackProcessor )
{
// 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 );
}
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<Node*>::Iterator iter = mImpl->nodes.Begin()+1;
Vector<Node*>::Iterator endIter = mImpl->nodes.End();
// Clear node dirty flags
Vector<Node*>::Iterator iter = mImpl->nodes.Begin()+1;
Vector<Node*>::Iterator endIter = mImpl->nodes.End();