mirror of
https://github.com/gnif/LookingGlass.git
synced 2025-08-09 12:14:16 +00:00
[client] ds: waitFrame now returns a bool to force rendering if needed
X11 needs to calibrate to get the best possible latency, as such it needs the scene to render so that the render time of the scene can be accounted for in the delay calculation.
This commit is contained in:
@@ -138,13 +138,15 @@ static const struct wl_callback_listener frame_listener = {
|
||||
.done = frameHandler,
|
||||
};
|
||||
|
||||
void waylandWaitFrame(void)
|
||||
bool waylandWaitFrame(void)
|
||||
{
|
||||
lgWaitEvent(wlWm.frameEvent, TIMEOUT_INFINITE);
|
||||
|
||||
struct wl_callback * callback = wl_surface_frame(wlWm.surface);
|
||||
if (callback)
|
||||
wl_callback_add_listener(callback, &frame_listener, NULL);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void waylandSkipFrame(void)
|
||||
|
@@ -1128,7 +1128,7 @@ static void x11GLSwapBuffers(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
static void x11WaitFrame(void)
|
||||
static bool x11WaitFrame(void)
|
||||
{
|
||||
/* wait until we are woken up by the present event */
|
||||
lgWaitEvent(x11.frameEvent, TIMEOUT_INFINITE);
|
||||
@@ -1196,6 +1196,13 @@ static void x11WaitFrame(void)
|
||||
|
||||
struct timespec ts = { .tv_nsec = delay * 1000 };
|
||||
while(nanosleep(&ts, &ts)) {};
|
||||
|
||||
/* force rendering until we have finished calibration so we can take into
|
||||
* account how long it takes for the scene to render */
|
||||
if (calibrate < CALIBRATION_COUNT)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static void x11StopWaitFrame(void)
|
||||
|
Reference in New Issue
Block a user