1 #ifndef __DALI_INTERNAL_SCENE_GRAPH_RENDER_MESSAGE_DISPATCHER_H__
2 #define __DALI_INTERNAL_SCENE_GRAPH_RENDER_MESSAGE_DISPATCHER_H__
5 * Copyright (c) 2014 Samsung Electronics Co., Ltd.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
22 #include <dali/internal/update/common/scene-graph-buffers.h>
23 #include <dali/internal/render/gl-resources/gpu-buffer.h>
36 class NodeDataProvider;
41 class PropertyBufferDataProvider;
43 * A utility class for sending messages to the render-thread.
45 class RenderMessageDispatcher
52 RenderMessageDispatcher( RenderManager& renderManager, RenderQueue& renderQueue, const SceneGraphBuffers& buffers );
57 virtual ~RenderMessageDispatcher();
61 * @param[in] renderer The renderer to add.
62 * @post renderer ownership is transferred.
64 void AddRenderer( Renderer& renderer );
68 * @param[in] renderer The renderer to remove.
69 * @post renderer will be destroyed in the next Render.
71 void RemoveRenderer( Renderer& renderer );
74 * Add an image renderer in the render-thread.
75 * @param[in] renderer The renderer to add.
77 void AddImageRenderer( ImageRenderer* renderer, NodeDataProvider* dataProvider );
80 * Remove an image renderer in the render-thread.
81 * @param[in] renderer The renderer to remove.
83 void RemoveImageRenderer( ImageRenderer* renderer );
87 * @param[in] renderGeometry The geometry to add.
88 * @post RenderGeometry ownership is transferred.
90 void AddGeometry( RenderGeometry& renderGeometry );
94 * @param[in] renderGeometry The geometry to remove.
95 * @post RenderGeometry will be destroyed in the next Render.
97 void RemoveGeometry( RenderGeometry& renderGeometry );
100 * Add a PropertyBuffer.
101 * @param[in] renderGeometry The geometry
102 * @param[in] propertyBuffer The PropertyBuffer
103 * @param[in] target Specifies the type of the buffer
104 * @param[in] usage Specifies how will the buffer be used
106 void AddPropertyBuffer( RenderGeometry& renderGeometry, PropertyBufferDataProvider* propertyBuffer, GpuBuffer::Target target, GpuBuffer::Usage usage );
109 * Remove a PropertyBuffer.
110 * @param[in] renderGeometry The geometry
111 * @param[in] propertyBuffer The PropertyBuffer
112 * @post PropertyBuffer will be destroyed in the next Render.
114 void RemovePropertyBuffer( RenderGeometry& renderGeometry, PropertyBufferDataProvider* propertyBuffer );
117 * Add a Render tracker.
118 * @param[in] renderTracker The render tracker to add.
119 * @post ownership is transferred
121 void AddRenderTracker( RenderTracker& renderTracker );
124 * Remove a Render tracker.
125 * @param[in] renderTracker The render tracker to add.
126 * @post render tracker will be destroyed in the next Render pass.
128 void RemoveRenderTracker( RenderTracker& renderTracker );
132 RenderManager& mRenderManager;
133 RenderQueue& mRenderQueue;
135 const SceneGraphBuffers& mBuffers;
138 } // namespace SceneGraph
140 } // namespace Internal
144 #endif // __DALI_INTERNAL_SCENE_GRAPH_RENDERER_DISPATCHER_H__