UpdateJobEvent Class Reference

#include <updatejobevent.h>

Detailed Description

Update Job Event class collects and combine multiple update calls into one call until executed. This is useful when adding multiple update events for the same ui element but if you only want to execute one redraw update. As soon as the update job starts all subsequent request calls will trigger a new update.

UpdateJobEvent _updateEvent;
_updateEvent.Init(
[]()
{
// update call
}, JobQueueRef::GetMainThreadQueue());
_updateEvent.RequestUpdate() iferr_return;
_updateEvent.RequestUpdate() iferr_return;
_updateEvent.RequestUpdate() iferr_return;
_updateEvent.RequestUpdate() iferr_return;
#define iferr_return
Definition: resultbase.h:1511

The update will be called only once if the main thread is blocked or too slow when calling the RequestUpdate functions.

Public Member Functions

 ~UpdateJobEvent ()
 
Result< void > Init (UPDATEJOBEVENTMODE mode, const Delegate< void()> &updateDelegate, const JobQueueRef &jobQueueRef)
 
void Free ()
 
void Init (UPDATEJOBEVENTMODE mode, Delegate< void()> &&updateDelegate, const JobQueueRef &jobQueueRef)
 
Bool IsInitialized () const
 
Result< void > RequestUpdate ()
 

Private Attributes

UPDATEJOBEVENTMODE _mode
 
AtomicBool _updateRequested
 
AtomicInt _delayedRequests
 
Delegate< void()> _updateDelegate
 
JobQueueRef _updateJobQueueRef
 
JobRef _lastUpdateJob
 

Constructor & Destructor Documentation

◆ ~UpdateJobEvent()

Member Function Documentation

◆ Init() [1/2]

Result<void> Init ( UPDATEJOBEVENTMODE  mode,
const Delegate< void()> &  updateDelegate,
const JobQueueRef jobQueueRef 
)

Initializes the callback function and queue. @parem[in] mode see UPDATEJOBEVENTMODE.

Parameters
[in]updateDelegateCode to execute in update call.
[in]jobQueueRefJob queue to execute the code.
Returns
OK on success.

◆ Free()

void Free ( )

Free Structure.

◆ Init() [2/2]

void Init ( UPDATEJOBEVENTMODE  mode,
Delegate< void()> &&  updateDelegate,
const JobQueueRef jobQueueRef 
)

Initializes the callback function and queue. @parem[in] mode see UPDATEJOBEVENTMODE.

Parameters
[in]updateDelegateCode to execute in update call.
[in]jobQueueRefJob queue to execute the code.

◆ IsInitialized()

Bool IsInitialized ( ) const

IsInitialized returns true if initialized.

◆ RequestUpdate()

Result<void> RequestUpdate ( )

RequestUpdate enqueues a new update job into the given queue.

Returns
OK on success.

Member Data Documentation

◆ _mode

UPDATEJOBEVENTMODE _mode
private

◆ _updateRequested

AtomicBool _updateRequested
private

◆ _delayedRequests

AtomicInt _delayedRequests
private

◆ _updateDelegate

Delegate<void()> _updateDelegate
private

◆ _updateJobQueueRef

JobQueueRef _updateJobQueueRef
private

◆ _lastUpdateJob

JobRef _lastUpdateJob
private