X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fadaptor%2Fcommon%2Fcombined-update-render-controller.h;h=ca225170d7d8258e10f5f1cc80d56b5af7963726;hb=e2b1bb333f68b1a21a24f84c6c21db2f618a8f53;hp=e83bacb00b12fa89b33b95b0817354cc63106a4f;hpb=eef835187c9658b089e4fc43a69d6bf65080d922;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git diff --git a/dali/internal/adaptor/common/combined-update-render-controller.h b/dali/internal/adaptor/common/combined-update-render-controller.h index e83bacb..ca22517 100644 --- a/dali/internal/adaptor/common/combined-update-render-controller.h +++ b/dali/internal/adaptor/common/combined-update-render-controller.h @@ -2,7 +2,7 @@ #define DALI_INTERNAL_COMBINED_UPDATE_RENDER_CONTROLLER_H /* - * Copyright (c) 2018 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. @@ -19,20 +19,21 @@ */ // EXTERNAL INCLUDES +#include #include +#include #include -#include #include +#include // INTERNAL INCLUDES -#include -#include -#include +#include #include +#include +#include #include #include - namespace Dali { @@ -127,14 +128,14 @@ public: virtual void ReplaceSurface( Dali::RenderSurfaceInterface* surface ); /** - * @copydoc ThreadControllerInterface::DeleteSurface() + * @copydoc ThreadControllerInterface::ResizeSurface() */ - virtual void DeleteSurface( Dali::RenderSurfaceInterface* surface ); + virtual void ResizeSurface(); /** - * @copydoc ThreadControllerInterface::ResizeSurface() + * @copydoc ThreadControllerInterface::WaitForGraphicsInitialization() */ - virtual void ResizeSurface(); + virtual void WaitForGraphicsInitialization(); /** * @copydoc ThreadControllerInterface::SetRenderRefreshRate() @@ -146,6 +147,16 @@ public: */ void SetPreRenderCallback( CallbackBase* callback ) override; + /** + * @copydoc ThreadControllerInterface::AddSurface() + */ + virtual void AddSurface( Dali::RenderSurfaceInterface* surface ); + + /** + * @copydoc ThreadControllerInterface::IsRenderingWindows() + */ + bool IsRenderingWindows() const override { return mIsRenderingWindows; } + private: // Undefined copy constructor. @@ -229,7 +240,7 @@ private: * * @return Pointer to the new surface, NULL otherwise */ - Integration::RenderSurface* ShouldSurfaceBeReplaced(); + Dali::RenderSurfaceInterface* ShouldSurfaceBeReplaced(); /** * Called by the Update/Render thread after a surface has been replaced. @@ -239,21 +250,6 @@ private: void SurfaceReplaced(); /** - * Checks to see if the surface needs to be deleted. - * This will lock the mutex in mUpdateRenderThreadWaitCondition. - * - * @return Pointer to the deleted surface, nullptr otherwise - */ - Integration::RenderSurface* ShouldSurfaceBeDeleted(); - - /** - * Called by the Update/Render thread after a surface has been deleted. - * - * This will lock the mutex in mEventThreadWaitCondition - */ - void SurfaceDeleted(); - - /** * Checks to see if the surface needs to be resized. * This will lock the mutex in mUpdateRenderThreadWaitCondition. * @@ -290,6 +286,11 @@ private: void NotifyThreadInitialised(); /** + * Called by the update-render thread when graphics has been initialised. + */ + void NotifyGraphicsInitialised(); + + /** * Helper to add a performance marker to the performance server (if it's active) * @param[in] type performance marker type */ @@ -328,6 +329,7 @@ private: UpdateStatusLogger mUpdateStatusLogger; ///< Object that logs the update-status as required. sem_t mEventThreadSemaphore; ///< Used by the event thread to ensure all threads have been initialised, and when replacing the surface. + sem_t mGraphicsInitializeSemaphore; ///< Used by the render thread to ensure the graphics has been initialised. ConditionalWait mUpdateRenderThreadWaitCondition; ///< The wait condition for the update-render-thread. @@ -362,14 +364,17 @@ private: volatile unsigned int mUseElapsedTimeAfterWait; ///< Whether we should use the elapsed time after waiting (set by the event-thread, read by the update-render-thread). - Integration::RenderSurface* volatile mNewSurface; ///< Will be set to the new-surface if requested (set by the event-thread, read & cleared by the update-render thread). - Integration::RenderSurface* volatile mDeletedSurface; ///< Will be set to the deleted surface if requested (set by the event-thread, read & cleared by the update-render thread). + Dali::RenderSurfaceInterface* volatile mNewSurface; ///< Will be set to the new-surface if requested (set by the event-thread, read & cleared by the update-render thread). volatile unsigned int mPostRendering; ///< Whether post-rendering is taking place (set by the event & render threads, read by the render-thread). volatile unsigned int mSurfaceResized; ///< Will be set to resize the surface (set by the event-thread, read & cleared by the update-render thread). volatile unsigned int mForceClear; ///< Will be set to clear forcibly volatile unsigned int mUploadWithoutRendering; ///< Will be set to upload the resource only (with no rendering) + + volatile unsigned int mFirstFrameAfterResume; ///< Will be set to check the first frame after resume (for log) + + std::atomic mIsRenderingWindows; ///< This is set only from the render thread and read only from the event thread }; } // namespace Adaptor