uint32_t index = static_cast<uint32_t>(mRenderers->size()); // 4,294,967,295 renderers per actor
RendererPtr rendererPtr = RendererPtr(&renderer);
mRenderers->push_back(rendererPtr);
- AttachRendererMessage(GetEventThreadServices(), GetNode(), renderer.GetRendererSceneObject());
+ AttachRendererMessage(GetEventThreadServices().GetUpdateManager(), GetNode(), renderer.GetRendererSceneObject());
return index;
}
renderer->ConnectToSceneGraph(*mImpl->sceneController, mSceneGraphBuffers.GetUpdateBufferIndex());
mImpl->renderers.PushBack(renderer.Release());
- mImpl->renderersAdded = true;
}
void UpdateManager::RemoveRenderer(Renderer* renderer)
renderer->DisconnectFromSceneGraph(*mImpl->sceneController, mSceneGraphBuffers.GetUpdateBufferIndex());
}
+void UpdateManager::AttachRenderer(Node* node, Renderer* renderer)
+{
+ node->AddRenderer(renderer);
+ mImpl->renderersAdded = true;
+}
+
void UpdateManager::SetPanGestureProcessor(PanGesture* panGestureProcessor)
{
DALI_ASSERT_DEBUG(NULL != panGestureProcessor);
*/
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)
{
new(slot) LocalType(&node, &Node::SetDrawMode, drawMode);
}
-inline void AttachRendererMessage(EventThreadServices& eventThreadServices, const Node& node, const Renderer& renderer)
-{
- using LocalType = MessageValue1<Node, Renderer*>;
-
- // Reserve some memory inside the message queue
- uint32_t* slot = eventThreadServices.ReserveMessageSlot(sizeof(LocalType));
-
- // Construct message in the message queue memory; note that delete should not be called on the return value
- new(slot) LocalType(&node, &Node::AddRenderer, const_cast<Renderer*>(&renderer));
-}
-
inline void DetachRendererMessage(EventThreadServices& eventThreadServices, const Node& node, const Renderer& renderer)
{
using LocalType = MessageValue1<Node, const Renderer*>;