{
namespace Internal
{
-class Context;
-
namespace SceneGraph
{
class RenderInstructionContainer;
/**
* Creates a scene object in the GPU.
- * @param[in] context The GL context
* @param[in] graphicsController The graphics controller
* @param[in] depthBufferAvailable True if there is a depth buffer
* @param[in] stencilBufferAvailable True if there is a stencil buffer
*/
- void Initialize(Context& context, Graphics::Controller& graphicsController, Integration::DepthBufferAvailable depthBufferAvailable, Integration::StencilBufferAvailable stencilBufferAvailable);
-
- /**
- * Gets the context holding the GL state of rendering for the scene
- * @return the context
- */
- Context* GetContext();
+ void Initialize(Graphics::Controller& graphicsController, Integration::DepthBufferAvailable depthBufferAvailable, Integration::StencilBufferAvailable stencilBufferAvailable);
/**
* Gets the render instructions for the scene
/**
* Set the surface orientation when surface is rotated.
*
- * @param[in] scene The rotated scene.
* @param[in] orientation The orientation value representing the surface.
*/
void SetSurfaceOrientation(int32_t orientation);
bool IsSurfaceRectChanged();
/**
+ * @brief Set the internal flag to acknowledge surface rotation.
+ */
+ void SetRotationCompletedAcknowledgement();
+
+ /**
+ * @brief Query wheter is set to acknowledge for completing surface rotation.
+ * @return true it should be acknowledged.
+ */
+ bool IsRotationCompletedAcknowledgementSet();
+
+ /**
* Set the render target of the surface
*
* @param[in] renderTarget The render target.
}
private:
- Context* mContext; ///< The context holding the GL state of rendering for the scene, not owned
-
// Render instructions describe what should be rendered during RenderManager::RenderScene()
// Update manager updates instructions for the next frame while we render the current one
Rect<int32_t> mSurfaceRect; ///< The rectangle of surface which is related ot this scene.
int32_t mSurfaceOrientation; ///< The orientation of surface which is related of this scene
bool mSurfaceRectChanged; ///< The flag of surface's rectangle is changed when is resized, moved or rotated.
+ bool mRotationCompletedAcknowledgement; ///< The flag of sending the acknowledgement to complete window rotation.
// Render pass and render target
new(slot) LocalType(&scene, &Scene::SetSurfaceOrientation, orientation);
}
+inline void SetRotationCompletedAcknowledgementMessage(EventThreadServices& eventThreadServices, const Scene& scene)
+{
+ using LocalType = Message<Scene>;
+
+ // 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(&scene, &Scene::SetRotationCompletedAcknowledgement);
+}
+
inline void SetSurfaceRenderTargetMessage(EventThreadServices& eventThreadServices, const Scene& scene, Graphics::RenderTarget* renderTarget)
{
using LocalType = MessageValue1<Scene, Graphics::RenderTarget*>;