Geoffrey McRae
e6bd36ec7c
[client] audio: refactor audio
to playback
and add record
funcs
2022-01-06 22:47:22 +11:00
Geoffrey McRae
208b722348
[client] main: failure to find a renderer is an error
2022-01-06 15:19:35 +11:00
Geoffrey McRae
67509d7a2d
[client] main: format the guest information a bit better
2022-01-06 15:19:16 +11:00
Geoffrey McRae
c20bb27b67
[client] main: move checkUUID to after informational prints are done
...
This change makes the client print the check failure as the last thing
before disconnecting making it more obvious to the user.
2022-01-06 15:18:10 +11:00
Geoffrey McRae
8cdeaceed9
[client] main: fix reversed check logic from testing/debug
2022-01-06 14:40:34 +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
7ccd202d36
[client] main: fix out by one error in the bounds check for os type
2022-01-05 20:40:13 +11:00
Geoffrey McRae
177a997883
[client] main: parse the KVMFR records and log the details
2022-01-05 20:27:43 +11:00
Geoffrey McRae
952ebea2c5
[all] refresh copyright dates
2022-01-05 19:42:46 +11:00
Geoffrey McRae
ba9f2b85b6
[host/client] kvmfr: update to include extra user data about the VM
...
This change allows the host to provide information to the client about
how the VM is configured, information such as the UUID, CPU
configuration and capture method both for informational display in the
client as well as debugging in the client's logs.
The format of the records allows this to be extended later with new
record types without needing to bump the KVMFR version.
2022-01-05 19:18:43 +11:00
Geoffrey McRae
0d00936aac
[client] spice: update PureSpice submodule
2022-01-04 19:06:14 +11:00
Geoffrey McRae
4b8255aa28
[client] spice: allow spice startup to happen in parallel
2022-01-01 21:07:55 +11:00
Geoffrey McRae
c8b4787cb1
[client] don't report a spice error on graceful shutdown
2021-12-30 21:02:53 +11:00
Geoffrey McRae
d43126f433
[client] main: release the grab if the host application is stopped
2021-12-30 17:08:19 +11:00
Geoffrey McRae
764e52fb20
[client] undo commented code from debugging
2021-12-30 13:19:59 +11:00
Geoffrey McRae
6f17e89b16
[host] lgmp: update to fix regression in initialization of the header
2021-12-30 13:00:56 +11:00
Geoffrey McRae
c74d48691f
[client] spice: update submodule and update to use new PSConfig members
2021-12-29 20:22:07 +11:00
Geoffrey McRae
d1a765c179
[client] spice: update PureSpice submodule and adjust for new API usage
2021-12-29 16:02:22 +11:00
Geoffrey McRae
17b77cfbc1
[client] spice: update PureSpice submodule and update includes
2021-12-29 00:18:25 +11:00
Geoffrey McRae
65ba2e8df9
[client] spice: update submodule and refactor calls & types
2021-12-28 22:04:35 +11:00
Geoffrey McRae
95987a9c91
[client] core: set the correct cursor when exiting overlay
2021-12-27 11:52:06 +11:00
Geoffrey McRae
bbd9c84896
[client] core: invalidate the pointer state when overlay is disabled
2021-12-27 11:22:12 +11:00
Geoffrey McRae
bb74a9d9c8
[client] core: don't try to send LGMP messages if the video is stopped
...
If the video stream is stopped the LGMP session is not valid, so we
can't send messages to the client.
2021-12-27 09:55:56 +11:00
Geoffrey McRae
433a5420cb
[client] audio: update PureSpice and add support for volume control/mute
2021-12-26 11:09:42 +11:00
Geoffrey McRae
cca6492069
[client] audio: call audioDev->free on spice thread exit
2021-12-26 11:09:42 +11:00
Geoffrey McRae
e810577317
[client] audio: initial addition of PipeWire audio support via SPICE
2021-12-26 11:09:42 +11:00
Geoffrey McRae
d69069fb09
[client] egl: keep the mouse cursor 1:1 when downscaling
...
This keeps the cursor a usable size when the guest is running a high
resolution and downscaling (ie, 4K -> FHD).
2021-12-26 11:08:42 +11:00
Quantum
15ec80e80d
[client] input: fix race between window size and guest cursor
...
g_state.posInfoValid could become valid after the guest reports the
cursor position, in which case we did not show the cursor until another
update occurs.
This commit eliminates the race by performing the update when
g_state.posInfoValid becomes true.
2021-12-24 13:16:52 +11:00
Geoffrey McRae
abd6502c9d
[client] x11: cosmetics
2021-12-09 19:53:34 +11:00
Geoffrey McRae
a21eee26ab
[client] main: fix buffer overflow due to cursor data size change
2021-11-02 01:01:17 +11:00
Geoffrey McRae
e82f8911a6
[client] main: malloc buffer for cursor data instead of using the stack
2021-11-01 13:45:30 +11:00
Netboy3
c3d2ad92c5
[client] Change default grabKeyboardOnFocus to false
2021-10-15 11:36:38 +11:00
Geoffrey McRae
e914e56c48
[client] stop the cursorThread if video feed is disabled
...
The cursorThread prevents the host from going to sleep when the
video feed is disabled as it's subscribed to the cursor queue. Stopping
the cursorThread will unsubscribe from the queue and allow the host
application to disable capture.
2021-10-06 20:05:31 +11:00
Quantum
24fa580519
[client] opengl: fix getProcAddressGL2 naming
...
TabNine autocompleted the function too hard.
2021-10-01 10:12:55 +10:00
Quantum
ad4b40fad6
[client] opengl: add gl_dynprocs module
...
This is similar to egl_dynprocs, except for OpenGL functions.
2021-10-01 01:45:11 +10:00
Quantum
072c54977e
[client] egl: use eglCreateImage and eglDestroyImage indirectly
...
The dmabuf path is optional, so we shouldn't require those functions to
link our program.
2021-09-29 17:48:50 +10:00
Quantum
5c7f168370
[client] egl_dynprocs: use official prototypes from system headers
2021-09-29 17:48:50 +10:00
Quantum
df4a964496
[client] spice: stop if pointer left during guest warp
...
This prevents attempts to grab the pointer after the guest side warp
finishes if the pointer has left the window in the meantime. On Wayland,
this would result in the pointer moving to the middle of the window when
the confine is created.
2021-09-16 06:25:45 +10:00
Quantum
72f3a9f3cf
[client] wayland: free presentation objects
...
Since the display server owns a graph, it was necessary to move the overlay
graphs destruction so that it happens after display server destruction.
2021-09-11 11:52:52 +10:00
Geoffrey McRae
3cefe9f9b5
[client] config: window width & height are unsigned values
2021-09-11 10:30:31 +10:00
Geoffrey McRae
e249106ddf
[client] app: remove dead code
2021-09-11 10:22:44 +10:00
Quantum
ce091fd4e4
[client] main: correctly handle EINTR from nanosleep
...
Previously, all progress made during sleep is reset, so if the thread keeps
getting interrupted before the sleep finishes, the sleep will never complete.
2021-09-04 13:31:30 +10:00
Quantum
f287b4625d
[client] config: fix usage of "ie"
2021-09-04 13:28:34 +10:00
Quantum
92155de98d
[client] config: fix spelling of synchronize
2021-09-04 13:28:15 +10:00
Quantum
c7666b065a
[client] main: print out CPU information on startup
2021-08-31 20:14:10 +10:00
Quantum
79a9127c04
[client] imgui: use consistent modal background colours
...
The translucent white modal background sort of cancels out the dark
background we apply to the overlay, which is undesirable. It should
instead further darken the background.
For consistency, we now use igGetColorU32Col(ImGuiCol_ModalWindowDimBg)
to draw the overlay background, to avoid hardcoding the same colour in
multiple places.
2021-08-31 09:09:26 +10:00
Quantum
31249da533
[client] imgui: run animations at consistent speeds
...
Currently, this is visible through how fast the cursor blinks, with it
blinking faster at higher refresh rates. This commit makes the timing
consistent.
2021-08-31 08:16:07 +10:00
Quantum
9bd205a527
[client] imgui: fix modifier key modification race
...
imgui really hates it when we update the modifier key state after igNewFrame.
The result is:
void ImGui::ErrorCheckEndFrameSanityChecks(): Assertion
`(key_mod_flags == 0 || g.IO.KeyMods == key_mod_flags) &&
"Mismatching io.KeyCtrl/io.KeyShift/io.KeyAlt/io.KeySuper vs io.KeyMods"'
failed.
Therefore, we buffer the modifier state information and update it in the IO
object right before we call igNewFrame.
2021-08-20 13:21:50 +10:00
Quantum
c0fa6c414c
[client] spice: do not warp host cursor if guest cursor is not visible
...
This avoids warping the host cursor when the guest-side warp has not finished,
which will result in the host cursor exiting at the wrong position if it exits
at that moment.
2021-08-20 13:21:26 +10:00
Quantum
11a661ce3a
[client] spice: don't display mouse before realignment finishes
...
This avoids showing the mouse briefly at the old position when reentering
the window.
2021-08-20 13:21:26 +10:00
Geoffrey McRae
c246b4a719
Revert "[client] core: realign in the enter/focus handlers if possible"
...
This reverts commit 17617cc421
.
2021-08-19 23:19:59 +10:00
Geoffrey McRae
17617cc421
[client] core: realign in the enter/focus handlers if possible
2021-08-19 22:57:03 +10:00
Geoffrey McRae
e1a4401ffa
[client] core: wait for the host to process the cursor move
2021-08-19 22:17:22 +10:00
Geoffrey McRae
3c3c0f70be
[all] bump the LGMP version to obtain access to data serial tracking
2021-08-19 21:29:03 +10:00
Quantum
429620c48b
[client] egl: dynamically import glBufferStorageEXT
...
On some implementations (e.g. llvmpipe), the function can only be queried via
eglGetProcAddress.
2021-08-19 21:28:45 +10:00
Quantum
1c7d14169e
[client] kb: rename key code arrays from xfree86_* to linux_*
...
We are using Linux key codes defined in input-event-codes.h, not XFree86
stuff.
2021-08-17 19:08:07 +10:00
Quantum
81c38e825c
[client] remove all casts around malloc
...
The cast is unnecessary in C and should be removed to avoid clutter.
2021-08-16 16:26:58 +10:00
Quantum
8a5efef622
[client] spice: avoid spice_key_modifiers when input is disabled
2021-08-16 16:25:11 +10:00
Tudor Brindus
14ad83c6b8
[client] use variable-relative sizeof where possible
2021-08-16 16:22:55 +10:00
Quantum
3a00277e93
[client] spice: add ability to set keyboard LED state in guest
...
FIXME: update PureSpice
2021-08-15 09:46:31 +10:00
Quantum
9414449408
[client] app: add ability to receive keyboard typing in overlays
2021-08-14 14:44:26 +10:00
Quantum
5f3bd778c0
[client] egl: add debug prints for renderStartup errors
2021-08-14 12:20:12 +10:00
Quantum
16adbab5d4
[client] all: remove needless initalization
2021-08-14 12:19:07 +10:00
Quantum
579f998519
[client] all: replace assert with DEBUG_ASSERT
2021-08-14 12:19:07 +10:00
Quantum
85a96d1e06
[client] all: use DEBUG_UNREACHABLE instead of assert
...
Due to the way assert is defined in standard C, compilers in release mode
will not treat it as unreachable. This explains a lot about those pesky
uninitialized variable bugs, actually.
2021-08-14 12:19:07 +10:00
Quantum
a76b274e1a
[client] main: use ARRAY_LENGTH macro
2021-08-13 20:24:01 +10:00
Geoffrey McRae
35bd641d2a
[client] overlay: remove the unused menu bar
2021-08-12 15:54:16 +10:00
Geoffrey McRae
6387bf2d2e
[client] rework the configuration overlay to allow for tabs
2021-08-12 09:04:45 +10:00
Quantum
7e982a6658
[client] util: replace util_mergeOverlappingRects with common version
2021-08-11 19:01:52 +10:00
Geoffrey McRae
4f1136d0cd
[client] core: dont warp the cursor if the overlay is active
2021-08-10 16:08:13 +10:00
Geoffrey McRae
f2b8ff9e8d
[client] app: make overlay mode more transparent
2021-08-10 01:15:31 +10:00
Geoffrey McRae
69f6532b8d
[common] ringbuffer: allow reverse iteration
2021-08-09 14:06:32 +10:00
Geoffrey McRae
f4a925a750
[client] main: destroy and finish fontconfig usage
...
Fixes ASAN reported memory leak
2021-08-08 16:21:48 +10:00
Geoffrey McRae
30ed563504
[client] interface: refactor to use camlCase function names
2021-08-08 15:43:42 +10:00
Geoffrey McRae
f8ae291090
[client] interface: switch to using UPCAST for the renderer's data
2021-08-08 15:32:01 +10:00
Geoffrey McRae
45d1f27fb4
[client] interface: rename LG_Renderer to LG_RendererOps
...
Part of the standardisation of using the `Ops` suffix for all interfaces
2021-08-08 14:43:04 +10:00
Geoffrey McRae
16f68d6b1b
[client] main: don't call stopWaitFrame if jitRender is not enabled
2021-08-08 09:01:48 +10:00
Geoffrey McRae
162b1b93db
[client] main: don't include the swap into the render timings
...
If vsync is enabled the swap will block until vblank skewing the timing
metrics.
2021-08-07 01:45:42 +10:00
Geoffrey McRae
0ec66ba210
[client] main: increase render graph max scale to 10ms
...
Some GPUs (like my K1200) easly exceed 2ms on the render time making
this graph useless.
2021-08-07 01:45:42 +10:00
Quantum
5b26017a8a
[client] overlay: move separator above donation prompt
...
It looks really weird having a separator right after a sentence ending in :.
A separator makes the list look detached from the paragraph that introduces
it, which looks awkward. Instead, this commit moves the separator before the
introducing paragraph.
Also added logic to properly pluralize the sentence.
2021-08-06 22:49:02 +10:00
Quantum
6bd454f77f
[client] overlay/config: switch to use new URL widget when possible
2021-08-05 22:43:46 +10:00
Quantum
08f3ad504c
[client] imgui: implement new widget for displaying URLs
...
Note that actually opening the browser is not implemented yet.
2021-08-05 22:43:46 +10:00
Geoffrey McRae
afbee641b1
[client] implement support for KVMFR_FEATURE_SETCURSORPOS
2021-08-05 22:19:35 +10:00
Geoffrey McRae
719fec0a45
[client] don't terminate after successful upgrade of LGMP
2021-08-05 21:45:50 +10:00
Geoffrey McRae
2fa09dbd95
[client] allow the user to upgrade if the LGMP version doesn't match
2021-08-05 21:43:49 +10:00
Geoffrey McRae
a37b527bbd
[client] main: make core overlays register before everything else
...
The display servers and renderers may want to register their own
overlays in the future, as such we need g_state.overlays to be
initialized to allow for this.
2021-08-05 07:01:28 +10:00
Geoffrey McRae
44f815409d
[client] imgui: ensure the pointer shape is correct
...
Since we only update imgui's cursor location when the overlay is
enabled, if the last cursor position was showing a shape that is
incorrect when we re-enter the overlay the cursor will be wrong. This
corrects this by updating the location as we enter overlay mode.
2021-08-05 06:55:41 +10:00
Geoffrey McRae
6e7f39edee
[client] app: allow selective full invalidation
...
Overlays only need to trigger a new frame if they have changed and not
full window invalidation, this change allows for this.
2021-08-05 06:47:36 +10:00
Geoffrey McRae
6c84c0eca6
[client] overlay: move keybinds and config into the overlays
...
This adds a new `earlyInit` call which allows the overlay to register
options before actually being intialized. Also the keybind handling and
state tracking for each overlay has been moved internal to the overlay
itself.
2021-08-05 06:40:06 +10:00
Geoffrey McRae
d90e658e3b
[client] main: fix incorrectly hiding the cursor dot in captureOnly mode
2021-08-05 06:11:12 +10:00
Geoffrey McRae
85f3a71dd5
[client] overlay: remember and restore the grab and pointer state
...
When entering overlay mode if the cursor was previously grabbed we
should restore the state when exiting overlay mode. This will also
correct the pointer setting it to NONE or SQUARE depending on the prior
grab state.
2021-08-05 06:03:09 +10:00
Geoffrey McRae
38ddfc0b61
[client] core: never allow warp when the overlay is active
2021-08-05 05:48:59 +10:00
Geoffrey McRae
ff01a197f3
[client] overlay: don't use the internal function directly for config
2021-08-05 00:57:54 +10:00
Geoffrey McRae
6c44bbb53e
[client] egl: use a ui switch for damage display instead of a keybind
2021-08-05 00:56:31 +10:00
Geoffrey McRae
f3f0157d3c
[client] overlay: allow registration of runtime configuration options
2021-08-05 00:56:31 +10:00
Quantum
51b9cd4e5a
[all] copyright: use unicode copyright sign ©
...
This is done for consistency with the license strings in appstrings.c.
2021-08-04 21:16:35 +10:00
Quantum
0941bd0fe5
[client] imgui: move cursor change to after rendering overlays
...
This allows it to take into the overlays into consideration when deciding
which cursor is to be shown.
2021-08-04 10:52:05 +10:00
Quantum
8ebaf92006
[client] main: rename frameTimings to uploadTimings
2021-08-04 10:38:30 +10:00
Quantum
62cd5e9c57
[client] main: add graph for time spent rendering
...
This is the time spent in the on_render function, not the time between
frames. Having this information helps diagnose slowdowns in renderers.
2021-08-04 10:38:30 +10:00
Geoffrey McRae
9192e2039a
[client] imgui: another missed file
...
Clearly I need to get some sleep :)
2021-08-04 10:37:05 +10:00