Geoffrey McRae
d956dd8fd3
[client] audio: rework synchronization for low latency
...
Drive playback timing from audio sample positions instead of packet
arrival cadence. Use SPICE multimedia timestamps to anchor streams,
detect discontinuities, and estimate the long-term source rate. Ignore
their coarse phase corrections when steering the playback buffer.
Measure the device clock independently and wait for it to stabilize
before enabling a bounded, slew-limited phase controller. Align startup
buffering from logical producer and consumer positions so backend
startup reserves do not become persistent latency.
Size the buffer from the backend period, measured delivery jitter, and
resampler delay. Update PipeWire and PulseAudio to report their actual
startup requirements and presentation latency. Default to a 10 ms
device period with 4 ms of additional buffering, and make detailed
synchronization diagnostics opt-in through audio:debug.
This reduces startup and steady-state latency while compensating for
physical and virtual device clock drift without reacting to transport
jitter or SPICE timestamp quantization.
2026-07-28 21:07:02 +10:00
Geoffrey McRae
a5571f0e9e
[client] spice: separate clipboard state by direction
2026-07-28 13:10:38 +10:00
Geoffrey McRae
f4ee349880
[client] app: make shared application state access thread-safe
2026-07-28 12:41:35 +10:00
Geoffrey McRae
e4888c362a
[client] spice: make display switching atomic and failure-aware
2026-07-28 12:24:51 +10:00
Geoffrey McRae
2f88063d77
[client] spice: check and track the primary surface format & validity
2026-07-28 12:01:08 +10:00
Geoffrey McRae
78802319e3
[client] add a MPV glsl style effect loader
2026-07-23 09:43:59 +10:00
Geoffrey McRae
364485ded8
[client] wayland: implement HDR support
2026-07-16 05:34:09 +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
Marco Rodolfi
add45347b5
[client] app: add option to disable waiting for host message
2025-06-30 14:25:08 +10:00
Geoffrey McRae
9593301511
[client] config: add option to disable auto client resolution switching
2025-04-04 10:13:19 +11:00
Geoffrey McRae
afbd844be8
[client] evdev: add new exclusive evdev while captured option
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
2025-03-07 13:47:01 +11:00
Geoffrey McRae
551298ed5b
[doc] all: update copyright year
2025-03-05 12:24:38 +11:00
rs189
e25492a3a3
[client] x11/wayland: add application id
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 / obs (clang) (push) Has been cancelled
build / obs (gcc) (push) Has been cancelled
build / docs (push) Has been cancelled
2024-10-15 11:52:10 +11:00
Geoffrey McRae
0b210a280d
[all] update the copyright to 2024
2024-02-01 17:16:31 +11:00
Geoffrey McRae
2e515657dd
[all] update/add license headers
2023-10-20 15:36:34 +11:00
Geoffrey McRae
e658c2e0a2
[client] x11: change to a more visible "dot" cursor
...
This change alters the small square dot cursor to a more visible 16x16
cursor for X11. A new option `spice:largeDotCursor` can be set to use an
alternative 32x32 cursor for the vision impaired.
2023-09-13 21:54:31 +10:00
Geoffrey McRae
9cadb64942
[client] main: make activation requests optional
2023-09-13 14:07:42 +10:00
Geoffrey McRae
193977895b
[client] add new option input:captureOnFocus
...
This option allows the client to automatically enter capture mode if the
window is focused.
Closes #1088
2023-09-11 21:02:32 +10:00
Geoffrey McRae
4f4cf2be7d
[client] audio: provide option to prevent volume level sync
2023-04-16 19:10:35 +10:00
Geoffrey McRae
48cd0c3789
[client] audio: add missing earlyInit call for audio devs
2023-01-24 13:35:18 +11:00
Quantum
0c63a901be
[client] main: add support for spice cursor channel
2022-09-19 11:13:53 +10:00
Quantum
eb1774f955
[client] keybind: add ScrollLock+C to cycle microphone defaults
...
This makes it possible to change the default action taken the next time
an application tries to open the microphone without restarting the
client.
2022-07-13 07:06:04 +10:00
Quantum
ae38db4915
[client] main: move micDefaultState into g_state
2022-07-13 07:06:04 +10:00
Geoffrey McRae
da04a6dd54
[client] all: use the defined keyboard mapping for keybinds
...
Fixes #1007
2022-06-29 18:26:40 +10:00
Geoffrey McRae
9ccd93bfd8
[client] app: add option to disable dimming in overlay mode
2022-05-27 11:36:39 +10:00
Quantum
146d9a2a53
[client] main: remove micAlwaysAllow from g_params
2022-05-27 11:22:12 +10:00
Quantum
3e079e0489
[client] main: add micDefaultState to state and params
2022-05-27 11:22:12 +10:00
Geoffrey McRae
d1e421f8a8
[client] spice: delay showing the spice display until spice is ready
2022-05-24 09:48:54 +10:00
Geoffrey McRae
b2221b114e
[client] spice: more fixes to video source transition
2022-05-24 00:05:22 +10:00
Geoffrey McRae
16f39450b5
[client] spice: added initial framework for spice display fallback
2022-05-22 11:45:11 +10:00
Geoffrey McRae
0a768a5a7f
[client] main: add new option for integer only upscaling
...
The new option `win:intUpscale` will limit upscaling to integer sizes
only if enabled.
2022-05-09 18:23:53 +10:00
Quantum
9c8a8a1b44
[client] config: add new option audio:micShowIndicator
...
This will be used to control the display of the microphone recording
indicator.
2022-03-19 18:52:07 +11:00
Quantum
dd6d9c44df
[client] config: add new audio:micAlwaysAllow option
...
This will be used to always grant access to microphones instead of
prompting every time.
2022-03-19 10:04:23 +11:00
Chris Spencer
7c2d493bb5
[client] audio: add latency tuning parameter
...
This adds a new `audio:bufferLatency` option which allows the user to
adjust the amount of buffering LG does over the absolute bare minimum. By
default, this is set large enough to absorb typical timing jitter from
Spice. Users may reduce this if they care more about latency than audio
quality.
2022-02-25 20:41:47 +11:00
Chris Spencer
9908b737b0
[client] audio: make the requested audio device period size configurable
...
This adds a new `audio:periodSize` option which defaults to 2048 frames.
For PipeWire, this controls the `PIPEWIRE_LATENCY` value. For PulseAudio,
the controls the target buffer length (`tlength`) value.
2022-02-25 20:41:47 +11:00
Geoffrey McRae
efa49391fc
[client] fix race segfault on pointer queue unsubscribe/timeout
2022-01-26 17:20:12 +11:00
Geoffrey McRae
5a3fe151e4
[client] main: don't use Linux keybinds if the guest is not Linux
2022-01-17 20:26:45 +11:00
Quantum
b020372972
[client] imgui: allow arrows to be displayed
2022-01-17 15:09:03 +11:00
Quantum
7c91c922e6
[client] input: avoid reentrancy when realigning guest cursor
...
This prevents LGMP_ERR_QUEUE_FULL from happening with high polling rate
mice, which is caused by receiving many more mouse events while the
guest cursor warps, triggering more warps.
2022-01-15 19:25:30 +11:00
Geoffrey McRae
6bba9bc25d
[client/common] move ll from the client into the common code module
2022-01-12 12:22:18 +11:00
Geoffrey McRae
d42e409728
[client] spice: show message when connected to the wrong guest
2022-01-08 19:32:58 +11:00
Geoffrey McRae
ad6fa5a504
[client] app: move all alert management into overlay/alert.c
2022-01-08 14:33:12 +11:00
Geoffrey McRae
35334333ac
[client] imgui: render twice for alerts
...
When using jitRender, or on the first frame of an alert the window
doesn't get resized immediately causing it to cut off the end of the
text.
ImGui needs two passes to calulate the bounding box for automatically
sized windows, this is per it's design and not a bug, see:
https://github.com/ocornut/imgui/issues/2158#issuecomment-434223618
2022-01-08 00:46:16 +11:00
Geoffrey McRae
a114ea3de4
[client] audio: move audio code into it's own unit
2022-01-06 23:24:13 +11:00
Geoffrey McRae
e6bd36ec7c
[client] audio: refactor audio to playback and add record funcs
2022-01-06 22:47:22 +11:00
Geoffrey McRae
7bcd0dd97f
[client] main: if spice is in use check the guest uuid matches
...
If the guest supports sending us it's UUID and PureSpice has also
reported the guest's UUID, check them to see if the user has
accidentially connected to the wrong spice socket.
2022-01-06 14:38:46 +11:00
Geoffrey McRae
952ebea2c5
[all] refresh copyright dates
2022-01-05 19:42:46 +11:00
Geoffrey McRae
17b77cfbc1
[client] spice: update PureSpice submodule and update includes
2021-12-29 00:18:25 +11:00