Quantum
5649d1ad95
[client] wayland: split Wayland display server into modules
...
The Wayland display server is getting unwieldy due to the sheer size.
To make it easier to edit in the future, I split it into many components
based on logical boundaries.
2021-02-21 10:31:49 +11:00
Quantum
db16efe68b
[common] add a reference counted buffer type
...
This allows buffers to be shared between different asynchronous operations.
Once all users no longer need the buffer, it will be freed.
The motivation for this is being able to stream Wayland clipboard data
asynchronously to multiple clients. The buffer should only be freed after
the clipboard has changed and all ongoing transfer completes.
2021-02-21 10:31:49 +11:00
Quantum
e01666b6ad
[client] wayland: implement epoll registration mechanism
...
This will be used to register async clipboard I/O callbacks later.
2021-02-21 10:31:49 +11:00
Quantum
8e98f863b6
[host] windows: detect whether screensaver is disabled in the guest
...
This will allow us to add an option to disable the screensaver on the client
when an application in the guest requests it. This behaviour may be useful
when the guest is doing media playback.
2021-02-21 10:31:48 +11:00
Geoffrey McRae
ca5c3938e4
[client] all: move all SDL specific code into displayservers/sdl
2021-02-21 10:31:48 +11:00
Geoffrey McRae
dbb18a6ecb
[client] x11/sdl: get the border dimensions from the backend
2021-02-21 10:31:48 +11:00
Geoffrey McRae
bf583290a4
[client/common] restructure project in prep for full SDL removal
2021-02-21 10:31:46 +11:00
Geoffrey McRae
6f1c19b3b0
[all] improve backtrace and debugging support
2021-02-21 10:30:57 +11:00
Geoffrey McRae
14cc57071c
[host] remove the remainder of the YUV420 support
2021-01-18 13:55:44 +11:00
Geoffrey McRae
f5587b6b6b
[host] all: pass back the desktop rotation to the client
2021-01-18 13:53:29 +11:00
Geoffrey McRae
27a38294ea
[client] major restructure of platform specific code
2021-01-16 20:41:13 +11:00
Tudor Brindus
a46a3a2668
[all] use explicit void parameter lists
...
This makes it a compile-time error to call a function that semantically
takes no parameters with a nonzero number of arguments.
Previously, such code would still compile, but risk blowing up the stack
if a compiler chose to use something other than caller-cleanup calling
conventions.
2021-01-14 17:29:37 +11:00
Quantum
7e4d323427
get display DPI info to scale mouse movement
2021-01-05 09:03:29 +11:00
Geoffrey McRae
0badf2a84c
[all] move defines for LGMP_QUEUE_*_LEN into KVMFR.h
2020-10-30 18:48:41 +11:00
Geoffrey McRae
5522e93fb9
[common] linux: added helpers for ivshmem DMA usage
2020-10-30 02:36:45 +11:00
Geoffrey McRae
9ff1859dc1
[host] windows: check the ivshmem device exists in the service
2020-10-19 02:49:15 +11:00
Geoffrey McRae
58ba76a27f
[client] seperate frame setup and data events
2020-10-12 19:43:29 +11:00
Geoffrey McRae
b2961c7939
[all] added new format version field to frame header
2020-10-12 18:52:37 +11:00
Geoffrey McRae
9c6bd888fd
[host/client] added experimental RGBA16 float support (EGL only)
2020-10-11 19:22:31 +11:00
Geoffrey McRae
e6c88a4af3
[all] be smarter about getting the git version
2020-10-09 02:17:20 +11:00
Geoffrey McRae
7e362050f7
[all] update KVMFR to provide cursor hotspot information
...
This commit bumps the KVMFR protocol version as it adds additional
hotspot x & y fields to the KVMFRCursor struct. This corrects the issue
of invalid alignment of the local mouse when the shape has an offset
such as the 'I' beam.
2020-08-20 13:51:01 +10:00
Geoffrey McRae
be7820303f
[common] fixed debug formatting across platforms
2020-08-03 15:05:35 +10:00
Geoffrey McRae
553e2830bb
[client/host] share the host version with the client for diagnostics
2020-05-29 14:14:31 +10:00
Geoffrey McRae
4441427943
[client] implemented better clock drift correction
2020-05-22 20:45:59 +10:00
Geoffrey McRae
e31f38eadc
[client] allow frame updates to be triggered by a timed event
...
This is a major change to how the LG client performs it's updates. In
the past LG would operate a fixed FPS regardless of incoming update
speed and/or frequency. This change allows LG to dynamically increase
it's FPS in order to better sync with the guest as it's rate changes.
2020-05-21 13:41:59 +10:00
Geoffrey McRae
b7ca3d7e37
[client] cleanup debug output
2020-05-17 11:25:27 +10:00
Geoffrey McRae
c4bf992c0c
[client/host] added enforcement of KVMFR versioning
2020-05-17 11:13:08 +10:00
Geoffrey McRae
fdb9a9cca8
use a timer for the LGMP host instead of a thread
2020-04-24 21:31:12 +10:00
Geoffrey McRae
f6691a90c0
[client/obs] improve frambuffer_read functions to support copy pitch
...
Fixes #244
2020-04-14 13:27:07 +10:00
Geoffrey McRae
1222fd40b7
[common] fix FrameBuffer to use atomics correctly
...
Might Fix #248
2020-04-12 13:14:53 +10:00
Geoffrey McRae
939bb07603
[all] cleanup use of atomic locking and switch to C11 stdatomic
2020-01-29 19:06:09 +11:00
Geoffrey McRae
3f3a8f898d
[common] 1e9
is a floating point notation
2020-01-29 14:01:14 +11:00
Geoffrey McRae
6e62ea5364
[common] fix building on mingw for linux
2020-01-28 05:10:38 +11:00
Geoffrey McRae
29e5f193f0
[common] added timestamps to log output
2020-01-28 03:57:19 +11:00
Geoffrey McRae
bced5f95ff
[all] make cursor visible a flag and send it seperate to position
2020-01-27 02:07:32 +11:00
Geoffrey McRae
b7e4426002
[c-host] inform the client if we have positional cursor information
2020-01-26 17:25:14 +11:00
Geoffrey McRae
4746c89227
[all] moved time and locking methods to the common library
2020-01-17 14:35:08 +11:00
Geoffrey McRae
278d851c7c
[egl] added fallback for platforms not supporting eglGetPlatformDisplay
2020-01-17 11:50:00 +11:00
Geoffrey McRae
17e05c6fd5
[all] expose the FrameBuffer struct for correct sizeof calculations
2020-01-13 19:30:49 +11:00
Geoffrey McRae
9846762991
[all] align the frame data to the page boundary
2020-01-13 19:17:09 +11:00
Geoffrey McRae
0d29527758
[common] added agnostic function sysinfo_getPageSize
2020-01-13 15:52:31 +11:00
Geoffrey McRae
e554635e48
[spice] turn on TCP_QUICKACK
...
https://assets.extrahop.com/whitepapers/TCP-Optimization-Guide-by-ExtraHop.pdf
2020-01-11 16:03:28 +11:00
Geoffrey McRae
22f04a926f
[common] numerious bad usage bug fixes
2020-01-10 18:04:22 +11:00
Geoffrey McRae
73e8bc41cd
[c-host] don't overflow the pointerMemory array
2020-01-09 16:15:04 +11:00
Geoffrey McRae
0b8f1a18b2
[LGMP] start of c-host conversion to use LGMP
2020-01-09 15:42:32 +11:00
Geoffrey McRae
5db4c32035
[c-host] dont use DX12 feature levels on Windows8
...
Fixes #218
2020-01-06 20:53:15 +11:00
Geoffrey McRae
89d6ea0b5d
[common] move ivshmem code into the common library
2020-01-03 14:53:56 +11:00
Geoffrey McRae
0c6ff6822d
[common/c-host] move agnostic code into common
library
2020-01-02 22:21:42 +11:00
Geoffrey McRae
547598c61c
[common] locked section macro should use it's argument
2019-12-16 15:47:23 +11:00
Geoffrey McRae
711fbc549a
[c-host] dxgi: interlock so we can map outside of the capture thread
2019-12-16 15:18:26 +11:00
Geoffrey McRae
f85c017184
[c-host] DXGI profiled and tuned again :)
2019-12-15 16:21:21 +11:00
Geoffrey McRae
9377fdfc37
[all] bump KVMFR version due to incompatible changes
2019-10-14 17:19:19 +11:00
Geoffrey McRae
bca54ab1f6
[client/host] added new asyncronous memory copy
...
This changes the method of the memory copy from the host application to
the guest. Instead of performing a full copy from the capture device
into shared memory, and then flagging the new frame, we instead set a
write pointer, flag the client that there is a new frame and then copy
in chunks of 1024 bytes until the entire frame is copied. The client
upon seeing the new frame flag begins to poll at high frequency the
write pointer and upon each update copies as much as it can into the
texture.
This should improve latency but also slightly increase CPU usage on the
client due to the high frequency polling.
2019-10-09 13:53:02 +11:00
Geoffrey McRae
6d2c464436
[client] egl: improved streaming texture syncronization
2019-08-30 12:09:05 +10:00
Geoffrey McRae
3d426ccef8
[all] fix missing cursor when client reconnects
2019-05-28 14:06:15 +10:00
Geoffrey McRae
78a6af8dae
[common] added new sysinfo unit and multisample query support
...
Based on @rLink234's work in 4ac781b4516678b6c59d9ecf4a61df64a01ec8c1
2019-05-23 16:54:50 +10:00
Geoffrey McRae
2d5f6d65ce
[common] option: added shortopt support and pretty help print
2019-05-21 11:31:31 +10:00
Geoffrey McRae
b9841351b4
[common] added stringutils with alloc_sprintf helper
2019-05-21 11:31:19 +10:00
Geoffrey McRae
a7daeb2a12
[c-host] option: fix memory corruption due to usage of old pointers
2019-05-17 09:25:57 +10:00
Geoffrey McRae
2fe9dc7ca1
[common] track if option set failed and print help if so
2019-05-12 16:51:37 +10:00
Geoffrey McRae
e22f33a44b
[common] add getValues callback for options
2019-05-12 16:13:50 +10:00
Geoffrey McRae
5d69d2aba9
[common] added new StringList helper module
2019-05-12 16:12:12 +10:00
Geoffrey McRae
538a6dc08e
[common] rework option API to allow for custom types
2019-05-11 20:58:49 +10:00
Geoffrey McRae
785bc33192
[common] added config file loading capability
2019-05-11 18:22:01 +10:00
Geoffrey McRae
86c7286aad
[common] seperate validator and clean up output
2019-05-11 11:35:17 +10:00
Geoffrey McRae
e7345b9711
[c-host] initial agnostic option api and parser
2019-05-09 22:06:58 +10:00
Geoffrey McRae
32bd6d96e3
[common] implemented crash handler for linux (including backtrace)
2019-04-11 16:41:52 +10:00
Geoffrey McRae
611216286e
[c-host] added initial crash handler stub
2019-04-11 11:34:46 +10:00
Geoffrey McRae
28b12c85f4
[build] make "common" a static library (part 1/2)
2019-04-11 11:03:30 +10:00