Dali 3D User Interface Engine
List of all members | Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes
Dali::Internal::Adaptor::CombinedUpdateRenderController Class Reference

Two threads where events/application interaction is handled on the main/event thread and the Update & Render happen on the other thread. More...

#include <combined-update-render-controller.h>

Inheritance diagram for Dali::Internal::Adaptor::CombinedUpdateRenderController:
Inheritance graph
[legend]
Collaboration diagram for Dali::Internal::Adaptor::CombinedUpdateRenderController:
Collaboration graph
[legend]

Public Member Functions

 CombinedUpdateRenderController (AdaptorInternalServices &adaptorInterfaces, const EnvironmentOptions &environmentOptions)
 Constructor. More...
 
 ~CombinedUpdateRenderController ()
 Non virtual destructor. More...
 
virtual void Initialize ()
 Initializes the thread controller. More...
 
virtual void Start ()
  More...
 
virtual void Pause ()
  More...
 
virtual void Resume ()
  More...
 
virtual void Stop ()
  More...
 
virtual void RequestUpdate ()
 Called by the adaptor when core requires another update. More...
 
virtual void RequestUpdateOnce ()
 Called by the adaptor when core requires one update If Adaptor is paused, we do one update and return to pause. More...
 
virtual void ReplaceSurface (RenderSurface *surface)
 Replaces the surface. More...
 
virtual void SetRenderRefreshRate (unsigned int numberOfFramesPerRender)
  More...
 
- Public Member Functions inherited from Dali::Internal::Adaptor::ThreadControllerInterface
virtual ~ThreadControllerInterface ()
 Virtual destructor. More...
 

Private Member Functions

 CombinedUpdateRenderController (const CombinedUpdateRenderController &)
 
CombinedUpdateRenderControlleroperator= (const CombinedUpdateRenderController &)
 
void RunUpdateRenderThread (int numberOfCycles, bool useElapsedTimeAfterWait)
 Runs the Update/Render Thread. More...
 
void PauseUpdateRenderThread ()
 Pauses the Update/Render Thread. More...
 
void StopUpdateRenderThread ()
 Stops the Update/Render Thread. More...
 
bool IsUpdateRenderThreadPaused ()
 Checks if the the Update/Render Thread is paused. More...
 
void ProcessSleepRequest ()
 Used as the callback for the sleep-trigger. More...
 
void UpdateRenderThread ()
 The Update/Render thread loop. More...
 
bool UpdateRenderReady (bool &useElapsedTime, bool updateRequired)
 Called by the Update/Render Thread which ensures a wait if required. More...
 
RenderSurface * ShouldSurfaceBeReplaced ()
 Checks to see if the surface needs to be replaced. More...
 
void SurfaceReplaced ()
 Called by the Update/Render thread after a surface has been replaced. More...
 
void NotifyThreadInitialised ()
 Called by the update-render & v-sync threads when they up and running. More...
 
void AddPerformanceMarker (PerformanceInterface::MarkerType type)
 Helper to add a performance marker to the performance server (if it's active) More...
 
virtual void PostRenderComplete ()
  More...
 
virtual void PostRenderStarted ()
  More...
 
virtual void PostRenderWaitForCompletion ()
  More...
 

Static Private Member Functions

static void * InternalUpdateRenderThreadEntryFunc (void *This)
 Helper for the thread calling the entry function. More...
 

Private Attributes

FpsTracker mFpsTracker
 Object that tracks the FPS. More...
 
UpdateStatusLogger mUpdateStatusLogger
 Object that logs the update-status as required. More...
 
RenderHelper mRenderHelper
 Helper class for EGL, pre & post rendering. More...
 
sem_t mEventThreadSemaphore
 Used by the event thread to ensure all threads have been initialised, and when replacing the surface. More...
 
ConditionalWait mUpdateRenderThreadWaitCondition
 The wait condition for the update-render-thread. More...
 
AdaptorInternalServicesmAdaptorInterfaces
 The adaptor internal interface. More...
 
PerformanceInterfacemPerformanceInterface
 The performance logging interface. More...
 
Integration::CoremCore
 Dali core reference. More...
 
const EnvironmentOptionsmEnvironmentOptions
 Environment options. More...
 
TriggerEventInterface & mNotificationTrigger
 Reference to notification event trigger. More...
 
TriggerEventInterface * mSleepTrigger
 Used by the update-render thread to trigger the event thread when it no longer needs to do any updates. More...
 
pthread_t * mUpdateRenderThread
 The Update/Render thread. More...
 
float mDefaultFrameDelta
 Default time delta between each frame (used for animations). Not protected by lock, but written to rarely so not worth adding a lock when reading. More...
 
uint64_t mDefaultFrameDurationMilliseconds
 Default duration of a frame (used for predicting the time of the next frame). Not protected by lock, but written to rarely so not worth adding a lock when reading. More...
 
uint64_t mDefaultFrameDurationNanoseconds
 Default duration of a frame (used for sleeping if not enough time elapsed). Not protected by lock, but written to rarely so not worth adding a lock when reading. More...
 
uint64_t mDefaultHalfFrameNanoseconds
 Is half of mDefaultFrameDurationNanoseconds. Using a member variable avoids having to do the calculation every frame. Not protected by lock, but written to rarely so not worth adding a lock when reading. More...
 
unsigned int mUpdateRequestCount
 Count of update-requests we have received to ensure we do not go to sleep too early. More...
 
unsigned int mRunning
 Read and set on the event-thread only to state whether we are running. More...
 
volatile int mUpdateRenderRunCount
 The number of times Update/Render cycle should run. If -1, then will run continuously (set by the event-thread, read by v-sync-thread). More...
 
volatile unsigned int mDestroyUpdateRenderThread
 Whether the Update/Render thread be destroyed (set by the event-thread, read by the update-render-thread). More...
 
volatile unsigned int mUpdateRenderThreadCanSleep
 Whether the Update/Render thread can sleep (set by the event-thread, read by the update-render-thread). More...
 
volatile unsigned int mPendingRequestUpdate
 Is set as soon as an RequestUpdate is made and unset when the next update happens (set by the event-thread and update-render thread, read by the update-render-thread). More...
 
volatile unsigned int mUseElapsedTimeAfterWait
 Whether we should use the elapsed time after waiting (set by the event-thread, read by the update-render-thread). More...
 
RenderSurface *volatile mNewSurface
 Will be set to the new-surface if requested (set by the event-thread, read & cleared by the update-render thread). More...
 
volatile unsigned int mPostRendering
 Whether post-rendering is taking place (set by the event & render threads, read by the render-thread). More...
 

Additional Inherited Members

- Protected Member Functions inherited from Dali::Internal::Adaptor::ThreadControllerInterface
 ThreadControllerInterface ()
 Constructor. More...
 

Detailed Description

Two threads where events/application interaction is handled on the main/event thread and the Update & Render happen on the other thread.

Key Points:

  1. Two Threads: a. Main/Event Thread. b. Update/Render Thread.
  2. There is NO VSync thread: a. We retrieve the time before Update. b. Then retrieve the time after Render. c. We calculate the difference between these two times and if: i. The difference is less than the default frame time, we sleep. ii. If it’s more or the same, we continue.
  3. On the update/render thread, if we discover that we do not need to do any more updates, we use a trigger-event to inform the main/event thread. This is then processed as soon as the event thread is able to do so where it is easier to make a decision about whether we should stop the update/render thread or not (depending on any update requests etc.).
  4. The main thread is blocked while the surface is being replaced.
  5. When we resume from paused, elapsed time is used for the animations, i.e. the could have finished while we were paused. However, FinishedSignal emission will only happen upon resumption.
  6. Elapsed time is NOT used while if we are waking up from a sleep state or doing an UpdateOnce.

Definition at line 73 of file combined-update-render-controller.h.

Constructor & Destructor Documentation

Dali::Internal::Adaptor::CombinedUpdateRenderController::CombinedUpdateRenderController ( AdaptorInternalServices adaptorInterfaces,
const EnvironmentOptions environmentOptions 
)
Dali::Internal::Adaptor::CombinedUpdateRenderController::~CombinedUpdateRenderController ( )

Non virtual destructor.

Not intended as base class.

Definition at line 129 of file combined-update-render-controller.cpp.

References LOG_EVENT_TRACE, mSleepTrigger, and Stop().

Here is the call graph for this function:

Dali::Internal::Adaptor::CombinedUpdateRenderController::CombinedUpdateRenderController ( const CombinedUpdateRenderController )
private

Member Function Documentation

void Dali::Internal::Adaptor::CombinedUpdateRenderController::AddPerformanceMarker ( PerformanceInterface::MarkerType  type)
private

Helper to add a performance marker to the performance server (if it's active)

Parameters
[in]typeperformance marker type

Definition at line 557 of file combined-update-render-controller.cpp.

References Dali::Internal::Adaptor::PerformanceInterface::AddMarker(), and mPerformanceInterface.

Referenced by Pause(), Resume(), and UpdateRenderThread().

Here is the call graph for this function:

Here is the caller graph for this function:

void Dali::Internal::Adaptor::CombinedUpdateRenderController::Initialize ( void  )
virtual

Initializes the thread controller.

Implements Dali::Internal::Adaptor::ThreadControllerInterface.

Definition at line 138 of file combined-update-render-controller.cpp.

References DALI_ASSERT_ALWAYS, InternalUpdateRenderThreadEntryFunc(), LOG_EVENT_TRACE, and mUpdateRenderThread.

Here is the call graph for this function:

static void* Dali::Internal::Adaptor::CombinedUpdateRenderController::InternalUpdateRenderThreadEntryFunc ( void *  This)
inlinestaticprivate

Helper for the thread calling the entry function.

Parameters
[in]ThisA pointer to the current object

Definition at line 221 of file combined-update-render-controller.h.

Referenced by Initialize().

Here is the caller graph for this function:

bool Dali::Internal::Adaptor::CombinedUpdateRenderController::IsUpdateRenderThreadPaused ( )
inlineprivate

Checks if the the Update/Render Thread is paused.

This will lock the mutex in mUpdateRenderThreadWaitCondition.

Returns
true if paused, false otherwise

Definition at line 318 of file combined-update-render-controller.cpp.

References Dali::Internal::Adaptor::anonymous_namespace{combined-update-render-controller.cpp}::CONTINUOUS, mUpdateRenderRunCount, mUpdateRenderThreadCanSleep, and mUpdateRenderThreadWaitCondition.

Referenced by RequestUpdate(), RequestUpdateOnce(), and Resume().

Here is the caller graph for this function:

void Dali::Internal::Adaptor::CombinedUpdateRenderController::NotifyThreadInitialised ( )
private

Called by the update-render & v-sync threads when they up and running.

This will lock the mutex in mEventThreadWaitCondition.

Definition at line 551 of file combined-update-render-controller.cpp.

References mEventThreadSemaphore.

Referenced by UpdateRenderThread().

Here is the caller graph for this function:

CombinedUpdateRenderController& Dali::Internal::Adaptor::CombinedUpdateRenderController::operator= ( const CombinedUpdateRenderController )
private
void Dali::Internal::Adaptor::CombinedUpdateRenderController::Pause ( )
virtual
void Dali::Internal::Adaptor::CombinedUpdateRenderController::PauseUpdateRenderThread ( )
inlineprivate

Pauses the Update/Render Thread.

This will lock the mutex in mUpdateRenderThreadWaitCondition.

Definition at line 305 of file combined-update-render-controller.cpp.

References mUpdateRenderRunCount, and mUpdateRenderThreadWaitCondition.

Referenced by Pause().

Here is the caller graph for this function:

void Dali::Internal::Adaptor::CombinedUpdateRenderController::PostRenderComplete ( )
privatevirtual
void Dali::Internal::Adaptor::CombinedUpdateRenderController::PostRenderStarted ( )
privatevirtual
void Dali::Internal::Adaptor::CombinedUpdateRenderController::PostRenderWaitForCompletion ( )
privatevirtual

Definition at line 586 of file combined-update-render-controller.cpp.

References mNewSurface, mPostRendering, mUpdateRenderThreadWaitCondition, and Dali::ConditionalWait::Wait().

Here is the call graph for this function:

void Dali::Internal::Adaptor::CombinedUpdateRenderController::ProcessSleepRequest ( )
private

Used as the callback for the sleep-trigger.

Will sleep when enough requests are made without any requests.

Definition at line 325 of file combined-update-render-controller.cpp.

References LOG_EVENT, LOG_EVENT_TRACE, mUpdateRenderThreadCanSleep, mUpdateRenderThreadWaitCondition, mUpdateRequestCount, and Dali::Internal::Adaptor::anonymous_namespace{combined-update-render-controller.cpp}::TRUE.

Referenced by CombinedUpdateRenderController().

Here is the caller graph for this function:

void Dali::Internal::Adaptor::CombinedUpdateRenderController::ReplaceSurface ( RenderSurface *  surface)
virtual
void Dali::Internal::Adaptor::CombinedUpdateRenderController::RequestUpdate ( )
virtual
void Dali::Internal::Adaptor::CombinedUpdateRenderController::RequestUpdateOnce ( )
virtual

Called by the adaptor when core requires one update If Adaptor is paused, we do one update and return to pause.

Implements Dali::Internal::Adaptor::ThreadControllerInterface.

Definition at line 246 of file combined-update-render-controller.cpp.

References IsUpdateRenderThreadPaused(), LOG_EVENT_TRACE, Dali::Internal::Adaptor::anonymous_namespace{combined-update-render-controller.cpp}::ONCE, and RunUpdateRenderThread().

Here is the call graph for this function:

void Dali::Internal::Adaptor::CombinedUpdateRenderController::Resume ( )
virtual
void Dali::Internal::Adaptor::CombinedUpdateRenderController::RunUpdateRenderThread ( int  numberOfCycles,
bool  useElapsedTimeAfterWait 
)
inlineprivate

Runs the Update/Render Thread.

This will lock the mutex in mUpdateRenderThreadWaitCondition.

Parameters
[in]numberOfCyclesThe number of times the update/render cycle should run. If -1, then it will run continuously.
[in]useElapsedTimeAfterWaitIf true, then the elapsed time during wait is used for animations, otherwise no animation progression is made.

Definition at line 295 of file combined-update-render-controller.cpp.

References Dali::Internal::Adaptor::anonymous_namespace{combined-update-render-controller.cpp}::FALSE, LOG_COUNTER_EVENT, mUpdateRenderRunCount, mUpdateRenderThreadCanSleep, mUpdateRenderThreadWaitCondition, mUseElapsedTimeAfterWait, and Dali::ConditionalWait::Notify().

Referenced by RequestUpdate(), RequestUpdateOnce(), Resume(), and Start().

Here is the call graph for this function:

Here is the caller graph for this function:

void Dali::Internal::Adaptor::CombinedUpdateRenderController::SetRenderRefreshRate ( unsigned int  numberOfFramesPerRender)
virtual
RenderSurface * Dali::Internal::Adaptor::CombinedUpdateRenderController::ShouldSurfaceBeReplaced ( )
private

Checks to see if the surface needs to be replaced.

This will lock the mutex in mUpdateRenderThreadWaitCondition.

Returns
Pointer to the new surface, NULL otherwise

Definition at line 531 of file combined-update-render-controller.cpp.

References mNewSurface, and mUpdateRenderThreadWaitCondition.

Referenced by UpdateRenderThread().

Here is the caller graph for this function:

void Dali::Internal::Adaptor::CombinedUpdateRenderController::Start ( )
virtual
void Dali::Internal::Adaptor::CombinedUpdateRenderController::Stop ( )
virtual
void Dali::Internal::Adaptor::CombinedUpdateRenderController::StopUpdateRenderThread ( )
inlineprivate

Stops the Update/Render Thread.

This will lock the mutex in mUpdateRenderThreadWaitCondition.

Note
Should only be called in Stop as calling this will kill the update-thread.

Definition at line 311 of file combined-update-render-controller.cpp.

References mDestroyUpdateRenderThread, mUpdateRenderThreadWaitCondition, Dali::ConditionalWait::Notify(), and Dali::Internal::Adaptor::anonymous_namespace{combined-update-render-controller.cpp}::TRUE.

Referenced by Stop().

Here is the call graph for this function:

Here is the caller graph for this function:

void Dali::Internal::Adaptor::CombinedUpdateRenderController::SurfaceReplaced ( )
private

Called by the Update/Render thread after a surface has been replaced.

This will lock the mutex in mEventThreadWaitCondition

Definition at line 541 of file combined-update-render-controller.cpp.

References mEventThreadSemaphore.

Referenced by UpdateRenderThread().

Here is the caller graph for this function:

bool Dali::Internal::Adaptor::CombinedUpdateRenderController::UpdateRenderReady ( bool &  useElapsedTime,
bool  updateRequired 
)
private

Called by the Update/Render Thread which ensures a wait if required.

Parameters
[out]useElapsedTimeIf true when returned, then the actual elapsed time will be used for animation. If false when returned, then there should NOT be any animation progression in the next Update.
[in]updateRequiredWhether another update is required.
Returns
false, if the thread should stop.

Definition at line 488 of file combined-update-render-controller.cpp.

References Dali::Internal::Adaptor::anonymous_namespace{combined-update-render-controller.cpp}::FALSE, LOG_COUNTER_UPDATE_RENDER, LOG_UPDATE_RENDER, mDestroyUpdateRenderThread, mNewSurface, mPendingRequestUpdate, mUpdateRenderRunCount, mUpdateRenderThreadCanSleep, mUpdateRenderThreadWaitCondition, mUseElapsedTimeAfterWait, and Dali::ConditionalWait::Wait().

Referenced by UpdateRenderThread().

Here is the call graph for this function:

Here is the caller graph for this function:

void Dali::Internal::Adaptor::CombinedUpdateRenderController::UpdateRenderThread ( )
private

The Update/Render thread loop.

This thread will be destroyed on exit from this function.

Definition at line 350 of file combined-update-render-controller.cpp.

References AddPerformanceMarker(), Dali::Internal::Adaptor::RenderHelper::ConsumeEvents(), Dali::Integration::Core::ContextCreated(), Dali::Integration::Core::ContextDestroyed(), DALI_UNLIKELY, Dali::Internal::Adaptor::FpsTracker::Enabled(), Dali::Internal::Adaptor::TimeService::GetNanoseconds(), Dali::Integration::RenderStatus::HasRendered(), Dali::Internal::Adaptor::RenderHelper::InitializeEgl(), Dali::Internal::Adaptor::EnvironmentOptions::InstallLogFunction(), Dali::Integration::UpdateStatus::KeepUpdating(), Dali::Internal::Adaptor::UpdateStatusLogger::Log(), LOG_UPDATE_RENDER, LOG_UPDATE_RENDER_TRACE, LOG_UPDATE_RENDER_TRACE_FMT, mCore, mDefaultFrameDelta, mDefaultFrameDurationMilliseconds, mDefaultFrameDurationNanoseconds, mDefaultHalfFrameNanoseconds, mEnvironmentOptions, mFpsTracker, mNotificationTrigger, mRenderHelper, mSleepTrigger, mUpdateStatusLogger, Dali::Internal::Adaptor::anonymous_namespace{combined-update-render-controller.cpp}::NANOSECONDS_PER_MILLISECOND(), Dali::Internal::Adaptor::anonymous_namespace{combined-update-render-controller.cpp}::NANOSECONDS_TO_SECOND(), Dali::Integration::UpdateStatus::NeedsNotification(), Dali::Integration::RenderStatus::NeedsUpdate(), Dali::Integration::KeepUpdating::NOT_REQUESTED, NotifyThreadInitialised(), Dali::Internal::Adaptor::RenderHelper::PostRender(), Dali::Internal::Adaptor::RenderHelper::PreRender(), Dali::Integration::Core::Render(), Dali::Internal::Adaptor::PerformanceInterface::RENDER_END, Dali::Internal::Adaptor::PerformanceInterface::RENDER_START, Dali::Internal::Adaptor::RenderHelper::ReplaceSurface(), ShouldSurfaceBeReplaced(), Dali::Internal::Adaptor::RenderHelper::ShutdownEgl(), Dali::Internal::Adaptor::TimeService::SleepUntil(), SurfaceReplaced(), Dali::Internal::Adaptor::FpsTracker::Track(), Dali::Internal::Adaptor::EnvironmentOptions::UnInstallLogFunction(), Dali::Integration::Core::Update(), Dali::Internal::Adaptor::PerformanceInterface::UPDATE_END, Dali::Internal::Adaptor::PerformanceInterface::UPDATE_START, and UpdateRenderReady().

Here is the call graph for this function:

Member Data Documentation

AdaptorInternalServices& Dali::Internal::Adaptor::CombinedUpdateRenderController::mAdaptorInterfaces
private

The adaptor internal interface.

Definition at line 282 of file combined-update-render-controller.h.

Referenced by CombinedUpdateRenderController().

Integration::Core& Dali::Internal::Adaptor::CombinedUpdateRenderController::mCore
private

Dali core reference.

Definition at line 284 of file combined-update-render-controller.h.

Referenced by UpdateRenderThread().

float Dali::Internal::Adaptor::CombinedUpdateRenderController::mDefaultFrameDelta
private

Default time delta between each frame (used for animations). Not protected by lock, but written to rarely so not worth adding a lock when reading.

Definition at line 291 of file combined-update-render-controller.h.

Referenced by SetRenderRefreshRate(), and UpdateRenderThread().

uint64_t Dali::Internal::Adaptor::CombinedUpdateRenderController::mDefaultFrameDurationMilliseconds
private

Default duration of a frame (used for predicting the time of the next frame). Not protected by lock, but written to rarely so not worth adding a lock when reading.

Definition at line 292 of file combined-update-render-controller.h.

Referenced by SetRenderRefreshRate(), and UpdateRenderThread().

uint64_t Dali::Internal::Adaptor::CombinedUpdateRenderController::mDefaultFrameDurationNanoseconds
private

Default duration of a frame (used for sleeping if not enough time elapsed). Not protected by lock, but written to rarely so not worth adding a lock when reading.

Definition at line 293 of file combined-update-render-controller.h.

Referenced by SetRenderRefreshRate(), and UpdateRenderThread().

uint64_t Dali::Internal::Adaptor::CombinedUpdateRenderController::mDefaultHalfFrameNanoseconds
private

Is half of mDefaultFrameDurationNanoseconds. Using a member variable avoids having to do the calculation every frame. Not protected by lock, but written to rarely so not worth adding a lock when reading.

Definition at line 294 of file combined-update-render-controller.h.

Referenced by SetRenderRefreshRate(), and UpdateRenderThread().

volatile unsigned int Dali::Internal::Adaptor::CombinedUpdateRenderController::mDestroyUpdateRenderThread
private

Whether the Update/Render thread be destroyed (set by the event-thread, read by the update-render-thread).

Definition at line 304 of file combined-update-render-controller.h.

Referenced by StopUpdateRenderThread(), and UpdateRenderReady().

const EnvironmentOptions& Dali::Internal::Adaptor::CombinedUpdateRenderController::mEnvironmentOptions
private

Environment options.

Definition at line 285 of file combined-update-render-controller.h.

Referenced by UpdateRenderThread().

sem_t Dali::Internal::Adaptor::CombinedUpdateRenderController::mEventThreadSemaphore
private

Used by the event thread to ensure all threads have been initialised, and when replacing the surface.

Definition at line 278 of file combined-update-render-controller.h.

Referenced by CombinedUpdateRenderController(), NotifyThreadInitialised(), ReplaceSurface(), Start(), and SurfaceReplaced().

FpsTracker Dali::Internal::Adaptor::CombinedUpdateRenderController::mFpsTracker
private

Object that tracks the FPS.

Definition at line 273 of file combined-update-render-controller.h.

Referenced by UpdateRenderThread().

RenderSurface* volatile Dali::Internal::Adaptor::CombinedUpdateRenderController::mNewSurface
private

Will be set to the new-surface if requested (set by the event-thread, read & cleared by the update-render thread).

Definition at line 311 of file combined-update-render-controller.h.

Referenced by PostRenderWaitForCompletion(), ReplaceSurface(), ShouldSurfaceBeReplaced(), and UpdateRenderReady().

TriggerEventInterface& Dali::Internal::Adaptor::CombinedUpdateRenderController::mNotificationTrigger
private

Reference to notification event trigger.

Definition at line 286 of file combined-update-render-controller.h.

Referenced by UpdateRenderThread().

volatile unsigned int Dali::Internal::Adaptor::CombinedUpdateRenderController::mPendingRequestUpdate
private

Is set as soon as an RequestUpdate is made and unset when the next update happens (set by the event-thread and update-render thread, read by the update-render-thread).

Ensures we do not go to sleep if we have not processed the most recent update-request.

Definition at line 306 of file combined-update-render-controller.h.

Referenced by RequestUpdate(), and UpdateRenderReady().

PerformanceInterface* Dali::Internal::Adaptor::CombinedUpdateRenderController::mPerformanceInterface
private

The performance logging interface.

Definition at line 283 of file combined-update-render-controller.h.

Referenced by AddPerformanceMarker().

volatile unsigned int Dali::Internal::Adaptor::CombinedUpdateRenderController::mPostRendering
private

Whether post-rendering is taking place (set by the event & render threads, read by the render-thread).

Definition at line 313 of file combined-update-render-controller.h.

Referenced by PostRenderComplete(), PostRenderStarted(), PostRenderWaitForCompletion(), and ReplaceSurface().

RenderHelper Dali::Internal::Adaptor::CombinedUpdateRenderController::mRenderHelper
private

Helper class for EGL, pre & post rendering.

Definition at line 276 of file combined-update-render-controller.h.

Referenced by Start(), Stop(), and UpdateRenderThread().

unsigned int Dali::Internal::Adaptor::CombinedUpdateRenderController::mRunning
private

Read and set on the event-thread only to state whether we are running.

Definition at line 297 of file combined-update-render-controller.h.

Referenced by Pause(), RequestUpdate(), Resume(), Start(), and Stop().

TriggerEventInterface* Dali::Internal::Adaptor::CombinedUpdateRenderController::mSleepTrigger
private

Used by the update-render thread to trigger the event thread when it no longer needs to do any updates.

Definition at line 287 of file combined-update-render-controller.h.

Referenced by CombinedUpdateRenderController(), UpdateRenderThread(), and ~CombinedUpdateRenderController().

volatile int Dali::Internal::Adaptor::CombinedUpdateRenderController::mUpdateRenderRunCount
private

The number of times Update/Render cycle should run. If -1, then will run continuously (set by the event-thread, read by v-sync-thread).

Definition at line 303 of file combined-update-render-controller.h.

Referenced by IsUpdateRenderThreadPaused(), PauseUpdateRenderThread(), RunUpdateRenderThread(), and UpdateRenderReady().

pthread_t* Dali::Internal::Adaptor::CombinedUpdateRenderController::mUpdateRenderThread
private

The Update/Render thread.

Definition at line 289 of file combined-update-render-controller.h.

Referenced by Initialize(), Start(), and Stop().

volatile unsigned int Dali::Internal::Adaptor::CombinedUpdateRenderController::mUpdateRenderThreadCanSleep
private

Whether the Update/Render thread can sleep (set by the event-thread, read by the update-render-thread).

Definition at line 305 of file combined-update-render-controller.h.

Referenced by IsUpdateRenderThreadPaused(), ProcessSleepRequest(), RunUpdateRenderThread(), and UpdateRenderReady().

ConditionalWait Dali::Internal::Adaptor::CombinedUpdateRenderController::mUpdateRenderThreadWaitCondition
private
unsigned int Dali::Internal::Adaptor::CombinedUpdateRenderController::mUpdateRequestCount
private

Count of update-requests we have received to ensure we do not go to sleep too early.

Definition at line 296 of file combined-update-render-controller.h.

Referenced by ProcessSleepRequest(), and RequestUpdate().

UpdateStatusLogger Dali::Internal::Adaptor::CombinedUpdateRenderController::mUpdateStatusLogger
private

Object that logs the update-status as required.

Definition at line 274 of file combined-update-render-controller.h.

Referenced by UpdateRenderThread().

volatile unsigned int Dali::Internal::Adaptor::CombinedUpdateRenderController::mUseElapsedTimeAfterWait
private

Whether we should use the elapsed time after waiting (set by the event-thread, read by the update-render-thread).

Definition at line 309 of file combined-update-render-controller.h.

Referenced by RunUpdateRenderThread(), and UpdateRenderReady().


The documentation for this class was generated from the following files:
Dali Docs Home
Read more about Dali