[Tizen] Revert "Remove StereoMode"
[platform/core/uifw/dali-core.git] / dali / internal / event / common / stage-impl.h
index 52d68ee..a6aa52e 100644 (file)
@@ -1,8 +1,8 @@
-#ifndef __DALI_INTERNAL_STAGE_H__
-#define __DALI_INTERNAL_STAGE_H__
+#ifndef DALI_INTERNAL_STAGE_H
+#define DALI_INTERNAL_STAGE_H
 
 /*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -45,6 +45,7 @@ struct Vector2;
 namespace Integration
 {
 class SystemOverlay;
+class RenderController;
 }
 
 namespace Internal
@@ -76,16 +77,19 @@ public:
    * @param[in] propertyNotificationManager
    * @param[in] updateManager
    * @param[in] notificationManager
+   * @param[in] renderController
    */
   static StagePtr New( AnimationPlaylist& playlist,
                        PropertyNotificationManager& propertyNotificationManager,
                        SceneGraph::UpdateManager& updateManager,
-                       NotificationManager& notificationManager );
+                       NotificationManager& notificationManager,
+                       Integration::RenderController& renderController );
 
   /**
    * Initialize the stage.
+   * @param[in] renderToFbo Whether to render into a Frame Buffer Object.
    */
-  void Initialize();
+  void Initialize( bool renderToFbo );
 
   /**
    * Uninitialize the stage.
@@ -152,7 +156,7 @@ public:
    * initial size is zero before it is assigned
    * @param[in] margin margin size
    */
-  void SetTopMargin( unsigned int margin );
+  void SetTopMargin( uint32_t margin );
 
   /**
    * Returns the size of the Stage in pixels as a Vector.
@@ -194,12 +198,12 @@ public:
   /**
    * @copydoc Dali::Stage::GetLayerCount()
    */
-  unsigned int GetLayerCount() const;
+  uint32_t GetLayerCount() const;
 
   /**
    * @copydoc Dali::Stage::GetLayer()
    */
-  Dali::Layer GetLayer( unsigned int depth ) const;
+  Dali::Layer GetLayer( uint32_t depth ) const;
 
   /**
    * @copydoc Dali::Stage::GetRootLayer()
@@ -302,6 +306,16 @@ public:
   void KeepRendering( float durationSeconds );
 
   /**
+   * @copydoc Dali::DevelStage::SetRenderingBehavior()
+   */
+  void SetRenderingBehavior( DevelStage::Rendering renderingBehavior );
+
+  /**
+   * @copydoc Dali::DevelStage::GetRenderingBehavior()
+   */
+  DevelStage::Rendering GetRenderingBehavior() const;
+
+  /**
    * Used by the EventProcessor to emit key event signals.
    * @param[in] event The key event.
    */
@@ -385,6 +399,16 @@ public:
   Dali::DevelStage::KeyEventGeneratedSignalType& KeyEventGeneratedSignal();
 
   /**
+   * @copydoc Dali::DevelStage::AddFrameCallback()
+   */
+  void AddFrameCallback( FrameCallbackInterface& frameCallback, Actor& rootActor );
+
+  /**
+   * @copydoc Dali::DevelStage::RemoveFrameCallback()
+   */
+  void RemoveFrameCallback( FrameCallbackInterface& frameCallback );
+
+  /**
    * Connects a callback function with the object's signals.
    * @param[in] object The object providing the signal.
    * @param[in] tracker Used to disconnect the signal.
@@ -425,9 +449,14 @@ public: // Implementation of EventThreadServices
   virtual SceneGraph::UpdateManager& GetUpdateManager();
 
   /**
+   * @copydoc EventThreadServices::GetRenderController
+   */
+  virtual Integration::RenderController& GetRenderController();
+
+  /**
    * @copydoc EventThreadServices::ReserveMessageSlot
    */
-  virtual unsigned int* ReserveMessageSlot( std::size_t size, bool updateScene );
+  virtual uint32_t* ReserveMessageSlot( uint32_t size, bool updateScene );
 
   /**
    * @copydoc EventThreadServices::GetEventBufferIndex
@@ -435,6 +464,16 @@ public: // Implementation of EventThreadServices
   virtual BufferIndex GetEventBufferIndex() const;
 
   /**
+   * @copydoc EventThreadServices::ForceNextUpdate
+   */
+  virtual void ForceNextUpdate();
+
+  /**
+   * @copydoc EventThreadServices::IsNextUpdateForced
+   */
+  virtual bool IsNextUpdateForced();
+
+  /**
    * Request that the depth tree is rebuilt
    */
   void RequestRebuildDepthTree();
@@ -453,7 +492,8 @@ private:
   Stage( AnimationPlaylist& playlist,
          PropertyNotificationManager& propertyNotificationManager,
          SceneGraph::UpdateManager& updateManager,
-         NotificationManager& notificationManager );
+         NotificationManager& notificationManager,
+         Integration::RenderController& renderController );
 
   /**
    * A reference counted object may only be deleted by calling Unreference()
@@ -471,6 +511,8 @@ private:
 
   NotificationManager& mNotificationManager;
 
+  Integration::RenderController& mRenderController;
+
   // The stage-size may be less than surface-size (reduced by top-margin)
   Vector2 mSize;
   Vector2 mSurfaceSize;
@@ -488,7 +530,7 @@ private:
   ViewMode mViewMode;
   float mStereoBase;
 
-  unsigned int mTopMargin;
+  uint32_t mTopMargin;
   Vector2 mDpi;
 
   // The object registry
@@ -514,7 +556,6 @@ private:
   // The touched signals
   Dali::Stage::TouchedSignalType                  mTouchedSignal;
   Dali::Stage::TouchSignalType                    mTouchSignal;
-  bool mDepthTreeDirty; ///< True if the depth tree needs recalculating
 
   // The wheel event signal
   Dali::Stage::WheelEventSignalType               mWheelEventSignal;
@@ -523,6 +564,12 @@ private:
   Dali::Stage::ContextStatusSignal mContextRegainedSignal;
 
   Dali::Stage::SceneCreatedSignalType mSceneCreatedSignal;
+
+  DevelStage::Rendering mRenderingBehavior; ///< The rendering behavior
+
+  bool mDepthTreeDirty:1;  ///< True if the depth tree needs recalculating
+  bool mForceNextUpdate:1; ///< True if the next rendering is really required.
+  bool mRenderToFbo:1;     ///< Whether to render to a Frame Buffer Object.
 };
 
 } // namespace Internal
@@ -549,4 +596,4 @@ inline const Internal::Stage& GetImplementation(const Dali::Stage& stage)
 
 } // namespace Dali
 
-#endif // __DALI_INTERNAL_STAGE_H__
+#endif // DALI_INTERNAL_STAGE_H