Revert "Remove EGL surface in the update thread"
[platform/core/uifw/dali-adaptor.git] / dali / internal / adaptor / common / thread-controller-interface.h
index 751dceb..94276ff 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_INTERNAL_THREAD_CONTROLLER_INTERFACE_H
 
 /*
- * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2020 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.
@@ -31,6 +31,12 @@ namespace Internal
 namespace Adaptor
 {
 
+enum class UpdateMode
+{
+  NORMAL,                     ///< Update and render
+  SKIP_RENDER                 ///< Update and resource upload but no rendering
+};
+
 /**
  * Interface Class for all controlling threads.
  */
@@ -75,9 +81,10 @@ public:
 
   /**
    * Called by the adaptor when core requires one update
-   * If Adaptor is paused, we do one update and return to pause
+   * If Adaptor is paused, we do one update/render and return to pause
+   * @param updateMode The update mode (i.e. i.e. either update & render or skip rendering)
    */
-  virtual void RequestUpdateOnce() = 0;
+  virtual void RequestUpdateOnce( UpdateMode updateMode ) = 0;
 
   /**
    * Replaces the surface.
@@ -86,15 +93,14 @@ public:
   virtual void ReplaceSurface( Dali::RenderSurfaceInterface* surface ) = 0;
 
   /**
-   * Deletes the surface.
-   * @param[in] surface The surface to be deleted
+   * Resize the surface.
    */
-  virtual void DeleteSurface( Dali::RenderSurfaceInterface* surface ) = 0;
+  virtual void ResizeSurface() = 0;
 
   /**
-   * Resize the surface.
+   * Wait until the graphics is initialised.
    */
-  virtual void ResizeSurface() = 0;
+  virtual void WaitForGraphicsInitialization() = 0;
 
   /**
    * @copydoc Dali::Adaptor::SetRenderRefreshRate()
@@ -106,6 +112,17 @@ public:
    */
   virtual void SetPreRenderCallback( CallbackBase* callback ) = 0;
 
+  /**
+   * @brief Adds the new surface.
+   * @param surface new surface
+   */
+  virtual void AddSurface( Dali::RenderSurfaceInterface* surface ) = 0;
+
+  /**
+   * @copydoc Dali::Adaptor::IsRenderingWindows()
+   */
+  virtual bool IsRenderingWindows() const = 0;
+
 protected:
 
   /**