mirror of
https://github.com/gnif/LookingGlass.git
synced 2024-12-23 22:13:40 +00:00
[client] main: remove/fix faulty upsTime code
The implementation was flawed, instead we just update the presentation time if there was not an early wakeup.
This commit is contained in:
parent
f5dfc264ba
commit
9b472d62a9
@ -106,22 +106,30 @@ static bool fpsTimerFn(void * unused)
|
|||||||
|
|
||||||
const uint64_t renderCount = atomic_exchange_explicit(&g_state.renderCount, 0,
|
const uint64_t renderCount = atomic_exchange_explicit(&g_state.renderCount, 0,
|
||||||
memory_order_acquire);
|
memory_order_acquire);
|
||||||
|
|
||||||
|
float fps, ups;
|
||||||
|
if (renderCount > 0)
|
||||||
|
{
|
||||||
const uint64_t frameCount = atomic_exchange_explicit(&g_state.frameCount, 0,
|
const uint64_t frameCount = atomic_exchange_explicit(&g_state.frameCount, 0,
|
||||||
memory_order_acquire);
|
memory_order_acquire);
|
||||||
|
|
||||||
const uint64_t time = nanotime();
|
const uint64_t time = nanotime();
|
||||||
const float elapsedNs = time - last;
|
const uint64_t elapsedNs = time - last;
|
||||||
|
const float elapsedMs = (float)elapsedNs / 1e6f;
|
||||||
|
|
||||||
last = time;
|
last = time;
|
||||||
|
fps = 1e3f / (elapsedMs / (float)renderCount);
|
||||||
const float elapsedMs = (float)elapsedNs / 1e6;
|
ups = 1e3f / (elapsedMs / (float)frameCount);
|
||||||
|
}
|
||||||
const float fps = 1e3f / (elapsedMs / (float)renderCount);
|
else
|
||||||
const float ups = 1e3f / (elapsedMs / (float)frameCount);
|
{
|
||||||
const uint64_t upsTime = elapsedNs / frameCount;
|
last = nanotime();
|
||||||
|
fps = 0.0f;
|
||||||
|
ups = 0.0f;
|
||||||
|
}
|
||||||
|
|
||||||
atomic_store_explicit(&g_state.fps, fps, memory_order_relaxed);
|
atomic_store_explicit(&g_state.fps, fps, memory_order_relaxed);
|
||||||
atomic_store_explicit(&g_state.ups, ups, memory_order_relaxed);
|
atomic_store_explicit(&g_state.ups, ups, memory_order_relaxed);
|
||||||
atomic_store_explicit(&g_state.upsTime, upsTime, memory_order_relaxed);
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -157,12 +165,12 @@ static int renderThread(void * unused)
|
|||||||
{
|
{
|
||||||
if (g_params.fpsMin != 0)
|
if (g_params.fpsMin != 0)
|
||||||
{
|
{
|
||||||
const uint64_t upsTime = atomic_load_explicit(&g_state.upsTime,
|
if (!lgWaitEventAbs(e_frame, &time))
|
||||||
memory_order_relaxed);
|
{
|
||||||
|
/* only update the time if we woke up early */
|
||||||
lgWaitEventAbs(e_frame, &time);
|
|
||||||
clock_gettime(CLOCK_MONOTONIC, &time);
|
clock_gettime(CLOCK_MONOTONIC, &time);
|
||||||
tsAdd(&time, g_state.frameTime + upsTime);
|
tsAdd(&time, g_state.frameTime);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int resize = atomic_load(&g_state.lgrResize);
|
int resize = atomic_load(&g_state.lgrResize);
|
||||||
|
@ -104,7 +104,7 @@ struct AppState
|
|||||||
RingBuffer renderTimings;
|
RingBuffer renderTimings;
|
||||||
RingBuffer frameTimings;
|
RingBuffer frameTimings;
|
||||||
|
|
||||||
atomic_uint_least64_t renderCount, frameCount, upsTime;
|
atomic_uint_least64_t renderCount, frameCount;
|
||||||
_Atomic(float) fps, ups;
|
_Atomic(float) fps, ups;
|
||||||
|
|
||||||
uint64_t resizeTimeout;
|
uint64_t resizeTimeout;
|
||||||
|
Loading…
Reference in New Issue
Block a user