1 #ifndef __DALI_INTERNAL_SCENE_GRAPH_BUFFERS_H__
2 #define __DALI_INTERNAL_SCENE_GRAPH_BUFFERS_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/common/buffer-index.h>
35 * Node values (position etc.) are double-buffered. A SceneGraphBuffers object
36 * can be used to keep track of which buffers are being written or read.
38 class SceneGraphBuffers
42 static BufferIndex INITIAL_EVENT_BUFFER_INDEX; // 0
43 static BufferIndex INITIAL_UPDATE_BUFFER_INDEX; // 1
46 * Create a SceneGraphBuffers object.
51 * Non-virtual destructor; not intended as a base class.
56 * Retrieve the current event-buffer index.
57 * @return The buffer index.
59 BufferIndex GetEventBufferIndex() const { return mEventBufferIndex; }
62 * Retrieve the current update-buffer index.
63 * @return The buffer index.
65 BufferIndex GetUpdateBufferIndex() const { return mUpdateBufferIndex; }
68 * Swap the Event & Update buffer indices.
75 SceneGraphBuffers(const SceneGraphBuffers&);
78 SceneGraphBuffers& operator=(const SceneGraphBuffers& rhs);
81 std::atomic<BufferIndex> mEventBufferIndex; ///< 0 or 1 (opposite of mUpdateBufferIndex)
82 BufferIndex mUpdateBufferIndex; ///< 0 or 1 (opposite of mEventBufferIndex)
85 } // namespace SceneGraph
87 } // namespace Internal
91 #endif // __DALI_INTERNAL_SCENE_GRAPH_BUFFERS_H__