#include <dali/internal/event/rendering/texture-impl.h>
#include <dali/internal/render/renderers/render-texture.h> // For OwnerPointer<Render::Texture>
#include <dali/internal/render/renderers/render-vertex-buffer.h>
-#include <dali/internal/render/shaders/scene-graph-shader.h> // for OwnerPointer< Shader >
+#include <dali/internal/render/shaders/render-shader.h> // for OwnerPointer< Shader >
#include <dali/internal/update/animation/scene-graph-animation.h>
+#include <dali/internal/update/common/node-resetter.h>
#include <dali/internal/update/common/property-resetter.h>
#include <dali/internal/update/common/scene-graph-buffers.h>
#include <dali/internal/update/common/scene-graph-property-notification.h>
namespace Integration
{
-class GlSyncAbstraction;
class RenderController;
} // namespace Integration
*/
void AddPropertyResetter(OwnerPointer<PropertyResetterBase>& propertyResetter);
+ /**
+ * Add a node resetter. UpdateManager takes ownership of the object.
+ * It will be killed by UpdateManager when the node is disconnected from the scene graph;
+ * or when the node is destroyed.
+ */
+ void AddNodeResetter(OwnerPointer<NodeResetter>& nodeResetter);
+
// Property Notification
/**
*/
void RemoveRenderer(Renderer* renderer);
+ /**
+ * Attach a renderer to node
+ * @param renderer to attach
+ */
+ void AttachRenderer(Node* node, Renderer* renderer);
+
// Gestures
/**
new(slot) LocalType(&manager, &UpdateManager::RemoveRenderer, const_cast<Renderer*>(&object));
}
+inline void AttachRendererMessage(UpdateManager& manager, const Node& node, const Renderer& renderer)
+{
+ using LocalType = MessageValue2<UpdateManager, Node*, Renderer*>;
+
+ // Reserve some memory inside the message queue
+ uint32_t* slot = manager.ReserveMessageSlot(sizeof(LocalType));
+ // Construct message in the message queue memory; note that delete should not be called on the return value
+ new(slot) LocalType(&manager, &UpdateManager::AttachRenderer, const_cast<Node*>(&node), const_cast<Renderer*>(&renderer));
+}
+
// The render thread can safely change the Shader
inline void AddTextureSetMessage(UpdateManager& manager, OwnerPointer<TextureSet>& textureSet)
{