Nebula
Loading...
Searching...
No Matches
FrameSync::FrameSyncTimer Class Reference

#include <framesynctimer.h>

Detailed Description

A thread-local time source object which is synchronized with the sync point in the FrameSyncHandlerThread.

Time values are thread-locally cached and thus no thread-synchronization is necessary when reading time values. FrameSyncTimer objects are updated inside the FrameSyncHandler::ArriveAtSyncPoint() method.

Threads interested in the master time create a FrameSyncTimer singleton and register it with FrameSyncHandlerThread through the GraphicsInterface singleton.

Please note that when calling the Start()/Stop()/Reset() methods, that the ENTIRE master time will be affected (these methods go straight through to the FrameSyncHandler object).

Inherits Core::RefCounted.

Public Member Functions

 FrameSyncTimer ()
 constructor
 
virtual ~FrameSyncTimer ()
 destructor
 
void Setup ()
 setup the object
 
void Discard ()
 discard the object
 
bool IsValid () const
 return true if object is valid
 
void UpdateTimePolling ()
 update the time through polling, only necessary for threads other then render/game thread!
 
void StartTime ()
 start the master time (DON'T CALL FREQUENTLY!)
 
void StopTime ()
 stop the master time (DON'T CALL FREQUENTLY!)
 
void ResetTime ()
 reset the master time (DON'T CALL FREQUENTLY!)
 
bool IsTimeRunning () const
 return true if master time is running (DON'T CALL FREQUENTLY!)
 
Timing::Time GetTime () const
 get current time
 
Timing::Tick GetTicks () const
 get current time in ticks
 
Timing::Time GetFrameTime () const
 get current frame time
 
Timing::Tick GetFrameTicks () const
 get current frame time ins ticks
 
IndexT GetFrameIndex () const
 get current frame count
 
void SetTimeFactor (Timing::Time factor)
 set time factor
 
Timing::Time GetTimeFactor () const
 get time factor
 
Timing::Time GetScaledTime () const
 get scaled time
 
Timing::Time GetScaledFrameTime () const
 get scaled time
 
- Public Member Functions inherited from Core::RefCounted
 RefCounted ()
 constructor
 
int GetRefCount () const
 get the current refcount
 
void AddRef ()
 increment refcount by one
 
void Release ()
 decrement refcount and destroy object if refcount is zero
 
bool IsInstanceOf (const Rtti &rtti) const
 return true if this object is instance of given class
 
bool IsInstanceOf (const Util::String &className) const
 return true if this object is instance of given class by string
 
bool IsInstanceOf (const Util::FourCC &classFourCC) const
 return true if this object is instance of given class by fourcc
 
bool IsA (const Rtti &rtti) const
 return true if this object is instance of given class, or a derived class
 
bool IsA (const Util::String &rttiName) const
 return true if this object is instance of given class, or a derived class, by string
 
bool IsA (const Util::FourCC &rttiFourCC) const
 return true if this object is instance of given class, or a derived class, by fourcc
 
const Util::StringGetClassName () const
 get the class name
 
Util::FourCC GetClassFourCC () const
 get the class FourCC code
 

Private Member Functions

 __DeclareClass (FrameSyncTimer)
 
 __DeclareSingleton (FrameSyncTimer)
 
void Update (Timing::Time masterTime)
 update the time (always called from local thread)
 

Private Attributes

Timing::Time time
 
Timing::Tick ticks
 
Timing::Time frameTime
 
Timing::Tick frameTicks
 
Timing::Time scaledTime
 
Timing::Time timeFactor
 
Timing::Time realTime
 
Timing::Timer masterTimer
 
IndexT frameIndex
 
bool isValid
 

Friends

class FrameSyncHandlerThread
 

Additional Inherited Members

- Static Public Member Functions inherited from Core::RefCounted
static void DumpRefCountingLeaks ()
 dump refcounting leaks, call at end of application (NEBULA_DEBUG builds only!)
 
- Protected Member Functions inherited from Core::RefCounted
virtual ~RefCounted ()
 destructor (called when refcount reaches zero)
 

Constructor & Destructor Documentation

◆ FrameSyncTimer()

FrameSync::FrameSyncTimer::FrameSyncTimer ( )

constructor

◆ ~FrameSyncTimer()

FrameSync::FrameSyncTimer::~FrameSyncTimer ( )
virtual

destructor

Member Function Documentation

◆ __DeclareClass()

FrameSync::FrameSyncTimer::__DeclareClass ( FrameSyncTimer )
private

◆ __DeclareSingleton()

FrameSync::FrameSyncTimer::__DeclareSingleton ( FrameSyncTimer )
private

◆ Discard()

void FrameSync::FrameSyncTimer::Discard ( )

discard the object

◆ GetFrameIndex()

IndexT FrameSync::FrameSyncTimer::GetFrameIndex ( ) const

get current frame count

◆ GetFrameTicks()

Timing::Tick FrameSync::FrameSyncTimer::GetFrameTicks ( ) const
inline

get current frame time ins ticks

◆ GetFrameTime()

Timing::Time FrameSync::FrameSyncTimer::GetFrameTime ( ) const
inline

get current frame time

◆ GetScaledFrameTime()

Timing::Time FrameSync::FrameSyncTimer::GetScaledFrameTime ( ) const

get scaled time

◆ GetScaledTime()

Timing::Time FrameSync::FrameSyncTimer::GetScaledTime ( ) const
inline

get scaled time

◆ GetTicks()

Timing::Tick FrameSync::FrameSyncTimer::GetTicks ( ) const
inline

get current time in ticks

◆ GetTime()

Timing::Time FrameSync::FrameSyncTimer::GetTime ( ) const
inline

get current time

◆ GetTimeFactor()

Timing::Time FrameSync::FrameSyncTimer::GetTimeFactor ( ) const
inline

get time factor

◆ IsTimeRunning()

bool FrameSync::FrameSyncTimer::IsTimeRunning ( ) const

return true if master time is running (DON'T CALL FREQUENTLY!)

◆ IsValid()

bool FrameSync::FrameSyncTimer::IsValid ( ) const
inline

return true if object is valid

◆ ResetTime()

void FrameSync::FrameSyncTimer::ResetTime ( )

reset the master time (DON'T CALL FREQUENTLY!)

◆ SetTimeFactor()

void FrameSync::FrameSyncTimer::SetTimeFactor ( Timing::Time factor)
inline

set time factor

◆ Setup()

void FrameSync::FrameSyncTimer::Setup ( )

setup the object

Query master time from the FrameSyncHandlerThread once at creation time.

This is safe but slow, but necessary to immediately provide a valid time stamp in the first frame.

◆ StartTime()

void FrameSync::FrameSyncTimer::StartTime ( )

start the master time (DON'T CALL FREQUENTLY!)

◆ StopTime()

void FrameSync::FrameSyncTimer::StopTime ( )

stop the master time (DON'T CALL FREQUENTLY!)

◆ Update()

void FrameSync::FrameSyncTimer::Update ( Timing::Time masterTime)
private

update the time (always called from local thread)

This method will be called once per frame at the frame-sync-point of the FrameSyncHandlerThread.

Note that this method will always be called from the local thread, never from another thread, thus we don't need to care about thread-safety.

◆ UpdateTimePolling()

void FrameSync::FrameSyncTimer::UpdateTimePolling ( )

update the time through polling, only necessary for threads other then render/game thread!

Update the time by polling the FrameSyncHandlerThread singleton.

This requires a CriticalSection to be taken and should not be used for threads which run in lockstep mode (i.e. the game thread or the render thread) since these will update their time automatically during the frame-sync-point.

Friends And Related Symbol Documentation

◆ FrameSyncHandlerThread

friend class FrameSyncHandlerThread
friend

Member Data Documentation

◆ frameIndex

IndexT FrameSync::FrameSyncTimer::frameIndex
private

◆ frameTicks

Timing::Tick FrameSync::FrameSyncTimer::frameTicks
private

◆ frameTime

Timing::Time FrameSync::FrameSyncTimer::frameTime
private

◆ isValid

bool FrameSync::FrameSyncTimer::isValid
private

◆ masterTimer

Timing::Timer FrameSync::FrameSyncTimer::masterTimer
private

◆ realTime

Timing::Time FrameSync::FrameSyncTimer::realTime
private

◆ scaledTime

Timing::Time FrameSync::FrameSyncTimer::scaledTime
private

◆ ticks

Timing::Tick FrameSync::FrameSyncTimer::ticks
private

◆ time

Timing::Time FrameSync::FrameSyncTimer::time
private

◆ timeFactor

Timing::Time FrameSync::FrameSyncTimer::timeFactor
private

The documentation for this class was generated from the following files: