X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Fintegration-api%2Fcore.h;h=9645475ae3c36cad44f97e823b4fe5d7c8d9879b;hb=48c3c887198103127c3128ce9e10f3aa71d0fe08;hp=d9d533251695ecde27384f5d1e62046a9678b11d;hpb=8138633a6f77dea18ece6bb2edd103f81181542a;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/integration-api/core.h b/dali/integration-api/core.h index d9d5332..9645475 100644 --- a/dali/integration-api/core.h +++ b/dali/integration-api/core.h @@ -21,6 +21,8 @@ // EXTERNAL INCLUDES #include #include +#include +#include namespace Dali { @@ -43,22 +45,24 @@ class SystemOverlay; struct Event; struct TouchData; + /** * The reasons why further updates are required. */ -namespace KeepUpdating DALI_IMPORT_API +namespace KeepUpdating +{ +enum Reasons { - extern const unsigned int NOT_REQUESTED; ///< Zero means that no further updates are required - - // Bit-field values - extern const unsigned int STAGE_KEEP_RENDERING; ///< 0x01 - Stage::KeepRendering() is being used - extern const unsigned int INCOMING_MESSAGES; ///< 0x02 - Event-thread is sending messages to update-thread - extern const unsigned int ANIMATIONS_RUNNING; ///< 0x04 - Animations are ongoing - extern const unsigned int DYNAMICS_CHANGED; ///< 0x08 - A dynamics simulation is running - extern const unsigned int LOADING_RESOURCES; ///< 0x10 - Resources are being loaded - extern const unsigned int MONITORING_PERFORMANCE; ///< 0x20 - The --enable-performance-monitor option is being used - extern const unsigned int RENDER_TASK_SYNC; ///< 0x40 - A render task is waiting for render sync + NOT_REQUESTED = 0x00, ///< Zero means that no further updates are required + STAGE_KEEP_RENDERING = 0x01, ///< - Stage::KeepRendering() is being used + INCOMING_MESSAGES = 0x02, ///< - Event-thread is sending messages to update-thread + ANIMATIONS_RUNNING = 0x04, ///< - Animations are ongoing + DYNAMICS_CHANGED = 0x08, ///< - A dynamics simulation is running + LOADING_RESOURCES = 0x10, ///< - Resources are being loaded + MONITORING_PERFORMANCE = 0x20, ///< - The --enable-performance-monitor option is being used + RENDER_TASK_SYNC = 0x40 ///< - A render task is waiting for render sync }; +} /** * The status of the Core::Update operation. @@ -205,13 +209,17 @@ public: * @param[in] glAbstraction The interface providing OpenGL services. * @param[in] glSyncAbstraction The interface providing OpenGL sync objects. * @param[in] gestureManager The interface providing gesture manager services. + * @param[in] policy The data retention policy. This depends on application setting + * and platform support. Dali should honour this policy when deciding to discard + * intermediate resource data. * @return A newly allocated Core. */ static Core* New(RenderController& renderController, PlatformAbstraction& platformAbstraction, GlAbstraction& glAbstraction, GlSyncAbstraction& glSyncAbstraction, - GestureManager& gestureManager); + GestureManager& gestureManager, + ResourcePolicy::DataRetention policy); /** * Non-virtual destructor. Core is not intended as a base class. @@ -221,6 +229,11 @@ public: // GL Context Lifecycle /** + * Get the object that will notify the application/toolkit when context is lost/regained + */ + ContextNotifierInterface* GetContextNotifier(); + + /** * Notify the Core that the GL context has been created. * The context must be created before the Core can render. * Multi-threading note: this method should be called from the rendering thread only @@ -234,7 +247,18 @@ public: * Multi-threading note: this method should be called from the rendering thread only * @post The Core is unaware of any GL context. */ - void ContextToBeDestroyed(); + void ContextDestroyed(); + + /** + * Notify the Core that the GL context has been re-created, e.g. after ReplaceSurface + * or Context loss. + * + * In the case of ReplaceSurface, both ContextToBeDestroyed() and ContextCreated() will have + * been called on the render thread before this is called on the event thread. + * + * Multi-threading note: this method should be called from the main thread + */ + void RecoverFromContextLoss(); /** * Notify the Core that the GL surface has been resized.