Geoffrey McRae
604b3082f3
[client] overlay: coalesce pointer redraws during splash fade
...
Pointer updates bypassed the paced overlay render and woke the renderer
for every cursor packet. On the default single-buffer EGL surface,
each full fade redraw could expose the desktop before the splash was
blended again.
Coalesce pointer redraws into the existing fade cadence while keeping
the latest cursor state. Immediate cursor redraw resumes when the fade
ends.
2026-08-06 18:17:34 +10:00
Geoffrey McRae
d8604ec144
[client] metrics: hide presentation timing
2026-08-06 18:04:10 +10:00
Geoffrey McRae
bdfb1c3ce0
[client] metrics: expose cadence pipeline stages
2026-08-06 18:04:10 +10:00
Geoffrey McRae
afb80e0ae4
[client] overlay: render splash fade from monotonic time
...
Move splash transitions onto the render thread and derive opacity from
elapsed monotonic time. Pace active animation at a display-compatible
minimum of 60 Hz while allowing incoming frames to satisfy that demand.
Reset the splash cleanly across reconnects and latch state changes with
the full-frame restoration decision.
2026-08-05 11:58:32 +10:00
Geoffrey McRae
d815ef87d5
[client] overlay: restore every splash fade frame
...
Mark the active fade as requiring a fully restored render target.
This also covers guest-driven renders between animation ticks so they
cannot blend over stale splash content.
2026-08-05 10:53:52 +10:00
Geoffrey McRae
606a06535e
[client] overlay: keep the splash fade on fresh buffers
...
Fully invalidate the render target when the full-screen splash changes.
This restores the desktop before alpha blending and prevents stale fade
states from cycling between swapchain buffers when guest updates are
sparse.
2026-08-05 10:24:57 +10:00
Geoffrey McRae
fbe08d00ce
[client] expose EGL stages in frame latency
...
Correlate received frames with the texture update actually consumed by
the renderer and retain damage until its token becomes renderable.
Split client latency into dispatch, import, queue, preparation, setup,
effects, desktop, composition, and swap stages in FRAME LATENCY.
Exclude diagnostic overlay work from composition and preserve client
wait time when producer timing is unavailable.
Publish joined samples through a bounded token queue, avoid sleeping
while producer timing is finalized, and correct Wayland photon units.
2026-08-03 23:53:33 +10:00
Geoffrey McRae
24be0a8869
[host] measure ready time at framebuffer publication
...
Exclude command queue reset and cleanup from the ready stage, and keep
the wall-clock residual only as the legacy timing fallback.
2026-08-03 23:53:33 +10:00
Geoffrey McRae
4f39270736
[client] add ImPlot and rework latency graphs
2026-08-03 23:53:33 +10:00
Geoffrey McRae
a9b8f437d4
[client] overlay: show layout-translated hotkey labels
...
build / client (Debug, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / module (push) Has been cancelled
build / host-linux (push) Has been cancelled
build / host-windows-cross (push) Has been cancelled
build / host-windows-native (push) Has been cancelled
build / idd (push) Has been cancelled
build / obs (clang) (push) Has been cancelled
build / obs (gcc) (push) Has been cancelled
build / docs (push) Has been cancelled
Related to #1298
2026-07-30 10:30:47 +10:00
Geoffrey McRae
e754f5841e
[client] keybind: use physical keycodes for layout-independent hotkeys
...
Fixes #1298
2026-07-30 10:21:26 +10:00
Geoffrey McRae
8fb355e6b7
[client] overlay: guard ImGui table and tab bar scopes
2026-07-30 09:17:09 +10:00
Geoffrey McRae
510f6e8e14
[client] overlay: stabilize configuration ImGui IDs
2026-07-30 09:12:55 +10:00
Geoffrey McRae
9c24acc6f9
[client] overlay: fix unsafe ImGui string handling
2026-07-30 09:08:25 +10:00
Geoffrey McRae
0738ea402a
[client] overlay: fix invalid label usage in igPlotLines call
2026-07-30 08:55:03 +10:00
Geoffrey McRae
69f44a003d
[all] refresh copyright
build / client (Debug, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / module (push) Has been cancelled
build / host-linux (push) Has been cancelled
build / host-windows-cross (push) Has been cancelled
build / host-windows-native (push) Has been cancelled
build / idd (push) Has been cancelled
build / obs (clang) (push) Has been cancelled
build / obs (gcc) (push) Has been cancelled
build / docs (push) Has been cancelled
2026-05-31 15:13:57 +10:00
Geoffrey McRae
e9b7bdfea1
Revert "[all] refresh copyright"
...
Corrupted IDD sources due to lack of UTF-8 with BOM support in the
script.
2026-05-31 15:10:44 +10:00
Geoffrey McRae
98602fb95e
[all] refresh copyright
2026-05-31 15:03:37 +10:00
Geoffrey McRae
554f5bf75d
[client] overlay: use graph address as imgui id
2025-03-05 15:25:34 +11:00
Geoffrey McRae
b43f572af0
Revert "[client] overlay/status: don't return damage rect if nothing was drawn"
...
This reverts commit 7e9e38faa5 as it
causes screen corruption when moving imgui overlay dialogs around.
2025-03-05 15:18:29 +11:00
Geoffrey McRae
d9f2df361d
[client] cimgui: update to 1.91.8
2025-03-05 15:16:31 +11:00
Geoffrey McRae
551298ed5b
[doc] all: update copyright year
2025-03-05 12:24:38 +11:00
Chris Spencer
03ca20d3e4
[client] overlay/msg: fix race condition in render
...
build / client (Debug, map[cc:clang cxx:clang++], libdecor) (push) Waiting to run
build / client (Debug, map[cc:clang cxx:clang++], xdg-shell) (push) Waiting to run
build / client (Debug, map[cc:gcc cxx:g++], libdecor) (push) Waiting to run
build / client (Debug, map[cc:gcc cxx:g++], xdg-shell) (push) Waiting to run
build / client (Release, map[cc:clang cxx:clang++], libdecor) (push) Waiting to run
build / client (Release, map[cc:clang cxx:clang++], xdg-shell) (push) Waiting to run
build / client (Release, map[cc:gcc cxx:g++], libdecor) (push) Waiting to run
build / client (Release, map[cc:gcc cxx:g++], xdg-shell) (push) Waiting to run
build / module (push) Waiting to run
build / host-linux (push) Waiting to run
build / host-windows-cross (push) Waiting to run
build / host-windows-native (push) Waiting to run
build / obs (clang) (push) Waiting to run
build / obs (gcc) (push) Waiting to run
build / docs (push) Waiting to run
If an overlay is closed with overlayMsg_close, the message can be freed
while it is still being used by msg_render, resulting in a segfault. Lock
the message list for the duration of msg_render to fix this.
2025-03-05 10:59:05 +11:00
Chris Spencer
7e9e38faa5
[client] overlay/status: don't return damage rect if nothing was drawn
...
The renderer contains an optimization to skip ImGui if there is nothing to
show, but the status overlay always returns a damage rect, even if it
didn't draw anything, so the optimization can never take effect.
2025-03-05 10:58:10 +11:00
Geoffrey McRae
0b210a280d
[all] update the copyright to 2024
2024-02-01 17:16:31 +11:00
Geoffrey McRae
9f3f8cc5bd
[client] splash: remove 0 array specifier from func prototype
2023-11-11 13:48:41 +11:00
Geoffrey McRae
0524980cb4
[client] msg: make it clear we ignore the return for ll_shift
2023-11-11 13:48:41 +11:00
Geoffrey McRae
a0f5907cb6
[client] overlay: prevent possible divide by zero
2023-11-11 13:48:41 +11:00
Geoffrey McRae
2e515657dd
[all] update/add license headers
2023-10-20 15:36:34 +11:00
Geoffrey McRae
996e1b2f7a
[client] overlay: fix race on startup that caused a segfault
...
Fixes #1065
2023-03-30 14:59:37 +11:00
Geoffrey McRae
da04a6dd54
[client] all: use the defined keyboard mapping for keybinds
...
Fixes #1007
2022-06-29 18:26:40 +10:00
Quantum
8b8b580f63
[client] overlay/status: re-rasterize at high DPI when needed
...
When the window scale goes above the scale the SVGs were rasterized
at, we re-rasterize them at the necessary scale for a more crisp
appearance.
2022-05-27 18:19:18 +10:00
Quantum
712b1cbc46
[client] overlay/graphs: allow unregistering after shutdown
...
The Wayland display server has a graph for presentation times, but the
backend shuts down after the overlays, so calling
overlayGraph_unregister causes memory corruption. We can avoid this
problem by making unregister a noop after all graphs have been freed.
This is safe because updating the graph doesn't use the graph handle:
instead you update the ringbuffer which is owned by the user.
2022-05-27 18:18:15 +10:00
Geoffrey McRae
aba8c5b499
[client] splash: added LG url, version and copyright strings
2022-05-27 12:39:08 +10:00
Geoffrey McRae
39c1f99446
[client] splash: add back support for win:quickSplash
2022-05-27 11:27:50 +10:00
Geoffrey McRae
1e660fb7e1
[client] splash: pre-calculate & cache the radial gradient vectors
2022-05-27 10:23:10 +10:00
Geoffrey McRae
5de175c1f3
[client] all: unify the LG splash screen into an overlay
2022-05-27 02:07:20 +10:00
Geoffrey McRae
8974ae4fb5
[client] add SVG loading support and use icons for status display
...
This brings nanosvg into the project for SVG loading and rendering.
Unfortunatly we can not at this time use a submodule for this project
until https://github.com/memononen/nanosvg/pull/214 is merged.
2022-05-26 04:11:31 +10:00
Geoffrey McRae
8aa36144dc
overlay: move init/free to the context of the render thread
...
This is done to allow overlays to make use of the renderer during
init/free.
2022-05-26 00:46:13 +10:00
Geoffrey McRae
81aa24d4d3
[client] overlay/config: general UX changes
...
* Moved the LG license and version onto a seperate tab.
* Added general donation section and link to the website donation page
* Removed donation details under gnif's section
2022-05-15 17:16:07 +10:00
Quantum
f3fe774f69
[client] overlay/record: do not invalidate window during shutdown
2022-03-19 18:52:07 +11:00
Quantum
1685249f3a
[client] overlay: add record indicator
2022-03-19 18:52:07 +11:00
Quantum
75370e464d
[client] overlay/msg: fix type for app_msgBoxClose
...
It should not be taking a pointer to MsgBoxHandle.
Also changed the type of MsgBoxHandle to prevent similar bugs.
2022-03-19 10:04:23 +11:00
Quantum
c55d0a82f2
[client] overlay: add support for confirmation dialogs
2022-03-19 10:04:23 +11:00
Geoffrey McRae
3a8cb6a613
[client/common] fixes for issues detected through static analysis.
2022-03-07 10:14:52 +11:00
Tudor Brindus
a3820536ab
[client] overlay: make "Show timing graphs" checkbox consistent in case
2022-03-06 17:21:32 +11:00
Geoffrey McRae
22b968ff53
[client] audio: change the audio latency graph sample point
...
This removes the need for locking while also giving a better result in
the graph output. Also when the graph is disabled via the overlay
options it will no longer cause redraws.
2022-01-28 10:59:12 +11:00
Geoffrey McRae
aad65c1cab
[client] graphs: overlay on removal of graph
2022-01-17 22:53:52 +11:00
Geoffrey McRae
0ad26b7da7
[client] audio: redraw the graphs if they have been updated
2022-01-17 22:49:19 +11:00
Geoffrey McRae
54e7542414
[client] overlay/graph: actually remove unregistered overlays
...
ll now supports removal of elements, so actually do it
2022-01-17 22:09:41 +11:00