Geoffrey McRae
d3836d4548
[c-host] Enable secure desktop capture using SetThreadDesktop
...
Closes #263 - Credit to https://github.com/DataBeaver for this gem!
2020-04-12 13:35:40 +10:00
Geoffrey McRae
dbd7db7787
[common] fix framebuffer_prepare to use atomic_store
2020-04-12 13:16:55 +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
b5f4c639fd
[client] provide better mouse tracking when exiting/entering the window
2020-04-07 14:54:38 +10:00
Geoffrey McRae
cddeeff3fc
[c-host] LGMP: increase the timeouts
2020-04-07 14:54:38 +10:00
Geoffrey McRae
b953b2b807
[module] added missing kvmfr.h, fixes #253
2020-03-22 09:20:09 +11:00
Geoffrey McRae
367a73d033
[spice] updated the submodule, fixes #249
2020-03-22 09:12:54 +11:00
Geoffrey McRae
1ac13658e1
[module] fix compilation for linux 5.6
2020-03-11 00:28:44 +11:00
Geoffrey McRae
582ed6b5d1
[c-host] dxgi: dont send null movements when only the visibility changed
2020-02-12 18:40:28 +11:00
Geoffrey McRae
e2adbaa5c1
[c-host] dxgi: fix failure to provide cursor visibility information
2020-02-12 18:36:11 +11:00
Geoffrey McRae
4acf800ace
[client] updated the PureSpice submodule
2020-02-03 17:31:56 +11:00
Geoffrey McRae
7cc305c2f5
[client] updated spice submodule to fix shutdown bug
2020-02-01 14:31:46 +11:00
Geoffrey McRae
95f5962186
[client] update to properly disconnect from spice
2020-02-01 14:24:23 +11:00
Geoffrey McRae
f4c2996a3a
[repos] updated submodules
2020-02-01 14:22:07 +11:00
Geoffrey McRae
10c4037694
[doc] added new github sponsorship option to README.md
2020-02-01 11:44:51 +11:00
Geoffrey McRae
52be6deccf
[github] updated sponsorship for github sponsors
2020-02-01 11:43:42 +11:00
Geoffrey McRae
9cc21c2a62
[all] updated the main README.md file
2020-01-31 21:43:58 +11:00
Geoffrey McRae
0b7f422d5d
[client] moved spice into a seperate repository
2020-01-31 21:39:57 +11:00
Geoffrey McRae
0ca760fad6
[c-host] revert locking series, this needs more thought
...
Revert "[c-host] make pointer post function thread safe"
This reverts commit 3feed7ba07
.
Revert "[c-hots] fix incorrect unlock timing"
This reverts commit 57f1f2d1fe
.
Revert "[c-host] increase the queue length and remove debug output"
This reverts commit b0f9f15a60
.
Revert "[c-host] dxgi: use low level mouse input by default"
This reverts commit dc4d820666
.
Revert "[c-host] nvfbc: no need for a cursor position event with LGMP"
This reverts commit e30b54ddb2
.
2020-01-29 23:23:31 +11:00
Geoffrey McRae
b0f9f15a60
[c-host] increase the queue length and remove debug output
2020-01-29 22:05:47 +11: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
cc2c49644d
[spice] reworked to avoid locking requirements on the input channel
...
POSIX `send` is thread safe, to take advantage of this the code has been
changed to construct a contiguous buffer and perform the send in a
single operation preventing any risk of a race condition.
Only the main channel still requires an interlock as the VD agent
requires multiple sends to transmit a full buffer.
2020-01-29 18:53:33 +11:00
Geoffrey McRae
29f221d547
[spice] improve connection code to use a single buffer
2020-01-29 16:52:23 +11:00
Geoffrey McRae
2e32ceb6e0
[LGMP] update the submodule
2020-01-29 14:03:12 +11:00
Geoffrey McRae
2cbc9b6426
[kvmfr] stop the module building the test application by default
2020-01-29 14:01:52 +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
5d39b6160a
[lgmp] update module again with actual fix!
2020-01-28 04:28:55 +11:00
Geoffrey McRae
418149c9a6
[LGMP] updated the submodule with the fixed locking mechanics
2020-01-27 22:12:20 +11:00
Geoffrey McRae
60acc3ef44
[obs] update the LGMP module to fix low frame rate capture issue
2020-01-27 15:05:25 +11:00
Geoffrey McRae
8dbc1daaf4
[common] linux: signal should signal all listeners
2020-01-27 14:33:57 +11:00
Geoffrey McRae
5a23d048bd
[LGMP] submodule update again
2020-01-27 13:14:16 +11:00
Geoffrey McRae
b658ea6459
[LGMP] another submodule update
2020-01-27 13:06:46 +11:00
Geoffrey McRae
dc91a0d807
[LGMP] updated the submodule again
2020-01-27 12:49:36 +11:00
Geoffrey McRae
c1fd6552d2
[client] fix hang when trying to terminate an unconnected client
2020-01-27 12:25:47 +11:00
Geoffrey McRae
6b2e78acdf
[all] updated LGMP module, a rebuild of host and client IS required
2020-01-27 11:29:54 +11:00
Geoffrey McRae
7b11ab04c6
[client] always update the renderer cursor state
2020-01-27 02:11:21 +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
9d7f773b9c
[c-host] decrease LGMP polling interval to a sane value and comment
2020-01-27 01:55:14 +11:00
Geoffrey McRae
fea0a98b9e
[c-host] dxgi: invisible cursors do not have position information
2020-01-27 01:47:40 +11:00
Geoffrey McRae
dcc9625803
[client] updated to use new cursor state flags
2020-01-26 17:30:16 +11:00
Geoffrey McRae
b4cf8f76c8
[c-host] mousehook: ignore repeated hook events
2020-01-26 16:23:35 +11:00
Geoffrey McRae
687eddcc63
[kvmfr] fixed incorrect buffer size calculation
2020-01-24 17:07:09 +11:00
Geoffrey McRae
9d6d137b50
[c-host] fix bounds checking on frame index
2020-01-24 16:31:03 +11:00
Geoffrey McRae
a75b95694b
[c-host] actually use the 2nd LGMP frame
2020-01-24 16:06:38 +11:00
Geoffrey McRae
c7aa8871e4
[common] fixed improper comment parsing, fixes #233
2020-01-21 16:35:21 +11:00
Geoffrey McRae
f9d919bdbb
[client] increase the lgmp queue timeouts
2020-01-20 14:18:45 +11:00
Geoffrey McRae
4d0f019ad5
[spice] prepare spice for external usage
2020-01-19 06:51:21 +11:00
Geoffrey McRae
e6154e685f
[client] cosmetics
2020-01-19 06:49:56 +11:00
Geoffrey McRae
2c59b5f557
[client] added checking for invalid arguments to custom string options
2020-01-19 06:48:20 +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
406e22a681
[client] override new behaviour in SDL 2.0.15 and disable xinput2
...
xinput2 is used to get touch interface events with the side effect of
consuming MotionNotify events which we use because of SDL2's inability
to correctly track the window size. Since we are not that intertested in
touch for our usecase, we just turn the events off again.
2020-01-13 22:21:12 +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
ad8a8b52be
[c-host] ensure frames are page aligned
2020-01-13 15:52:54 +11:00
Geoffrey McRae
0d29527758
[common] added agnostic function sysinfo_getPageSize
2020-01-13 15:52:31 +11:00
Geoffrey McRae
7a96c9fe24
[kvmfr] don't recreate the pages for each map
2020-01-13 15:42:45 +11:00
Geoffrey McRae
c71e5c63ca
[lgmp] updated the module to bring in support for aligned allocations
2020-01-13 15:19:25 +11:00
Geoffrey McRae
f82a164d75
[client] enable SDL_SYSWMEVENT on X11 to work around SDL2 bugs
2020-01-13 14:03:26 +11:00
Geoffrey McRae
5d4e9b1ead
[kvmfr] bump the version in dkms.conf
2020-01-13 13:45:05 +11:00
Geoffrey McRae
788f885759
[kvmfr] added the ability to obtain a dmabuf of the ivshmem memory
...
This is to enable the ability to use dri3 to create dmabuf backed
pixmaps directly.
2020-01-13 13:39:24 +11:00
Geoffrey McRae
6aeafc6651
[common] add comment support to the ini parser
2020-01-12 22:44:41 +11:00
Geoffrey McRae
1aadf91901
[common] revert /dev/uio0 naming change behaviour
2020-01-12 22:37:10 +11:00
Geoffrey McRae
7de030bb69
[c-host] nvfbc: free event on deinit
2020-01-12 18:09:11 +11:00
Geoffrey McRae
0eafa7de5d
[c-host] update NvFBC to use new capture interface
2020-01-11 21:51:59 +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
5e915dd1ff
[client] don't send mouse click events when out of view
2020-01-11 13:11:12 +11:00
Geoffrey McRae
13f55011c0
[client] don't draw the cursor if it leaves the frame
2020-01-11 12:56:46 +11:00
Geoffrey McRae
05dc713dac
[client] more cursor tweaks for better integration with the WM
2020-01-11 06:03:16 +11:00
Geoffrey McRae
80f3c7934a
[client] more cursor tweaks and some cleanup
2020-01-11 05:22:12 +11:00
Geoffrey McRae
1341bf8fbd
[client] fix mouse acceleration when in capture mode
...
SDL2 really doesn't do this well, instead I have implemented our own
capture method that allows us to maintain better client/server cursor
sync.
2020-01-11 04:53:46 +11:00
Geoffrey McRae
5b163063c3
[client] improved sync with guest cursor position
2020-01-11 03:41:44 +11:00
Geoffrey McRae
c2a15ad89d
[c-host] updated to use new LGMP API to increase the timeout
2020-01-10 20:04:46 +11:00
Geoffrey McRae
c92312a6c6
[obs] implemented intial OBS Looking Glass Client plugin
...
Yes, it works! but no cursor support yet
2020-01-10 18:14:08 +11:00
Geoffrey McRae
3253e7fd10
[all] updated LGMP submodule
2020-01-10 18:12:42 +11:00
Geoffrey McRae
e5178793b3
[client] don't fail on invalid magic at startup
2020-01-10 18:07:18 +11:00
Geoffrey McRae
bec4f83778
[profiler] updated to use LGMP
2020-01-10 18:04:22 +11:00
Geoffrey McRae
22f04a926f
[common] numerious bad usage bug fixes
2020-01-10 18:04:22 +11:00
Geoffrey McRae
1ef406bbaf
[lgmp] updated submodule
2020-01-10 11:19:34 +11:00
Geoffrey McRae
0aa8711796
[lgmp] updated submodule
2020-01-10 11:04:16 +11:00
Geoffrey McRae
bea7c94cae
[client/c-host] updated to use new LGMP naming conventions
2020-01-10 11:01:35 +11:00
Geoffrey McRae
6f551c770c
[client] handle pointer visibility properly
2020-01-09 21:18:35 +11:00
Geoffrey McRae
2d755a45e0
[client] added support for LGMP
2020-01-09 20:32:42 +11:00
Geoffrey McRae
0b8f1a18b2
[LGMP] start of c-host conversion to use LGMP
2020-01-09 15:42:32 +11:00
Geoffrey McRae
8caa220ad5
[common] link setupapi for ivshmem windows implementation
2020-01-06 20:59:34 +11:00
Geoffrey McRae
b8203bec53
[common] properly detect all versions of Windows 8
2020-01-06 20:55:21 +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
9282ed19b2
[client] check for clock drift and correct for it
...
Fixes #224
2020-01-06 20:38:01 +11:00
Geoffrey McRae
45ee79014d
[common] added back support for shared memory files
2020-01-06 00:20:30 +11:00
Geoffrey McRae
0dc0e6490c
[c-host] dxgi: check for failure of getDesc1
2020-01-03 17:29:07 +11:00
Geoffrey McRae
127113a59b
[client] fixed strange resize effect due to loss of precision
2020-01-03 17:23:48 +11:00
Geoffrey McRae
49bf115c84
[client] fix issue with windowmanager forcing the window size (i3wm)
2020-01-03 16:51:24 +11:00
Geoffrey McRae
2196516e2b
[client] added new win:forceAspect
option
...
Fixes #225
2020-01-03 15:53:44 +11:00
Geoffrey McRae
899dbff7e9
[client] use the event data instead of calling SDL_GetWindowSize
2020-01-03 15:26:07 +11:00
Geoffrey McRae
4345d94d68
[client] update client to use the common ivshmem* methods
2020-01-03 15:17:14 +11:00
Geoffrey McRae
074af5d16c
[c-host] init platform app struct
2020-01-03 14:56:13 +11:00
Geoffrey McRae
89d6ea0b5d
[common] move ivshmem code into the common library
2020-01-03 14:53:56 +11:00
Geoffrey McRae
c5baf212c8
[client] switch from SDL_Cond to LGEvent
2020-01-03 00:09:07 +11:00
Geoffrey McRae
ba31c78412
[client] switch from SDL_Thread to lgThread
2020-01-02 23:59:06 +11:00
Geoffrey McRae
1c1d2a0568
[common] moved linux agnostic code into the common library
2020-01-02 23:34:35 +11:00
Geoffrey McRae
0c6ff6822d
[common/c-host] move agnostic code into common
library
2020-01-02 22:21:42 +11:00
Jonathan (JJRcop) Rubenstein
491ffc3576
Fix client not building on void linux
...
Thanks to
SharkWipf#8539,
Aiber#4888,
and Hadet#6969 on the VFIO discord
2019-12-28 00:07:39 +11:00
Geoffrey McRae
85d46ed2b0
[profile] added a tool to help profile the host capture perf
2019-12-14 16:20:17 +11:00
Geoffrey McRae
a6f23f00b4
[client] opengl: handle configuration failure properly
2019-12-12 23:32:31 +11:00
Geoffrey McRae
30e3a43311
[client] opengl: fixed failure to render full frame
2019-12-12 23:04:58 +11:00
Geoffrey McRae
dce6aaefea
[client] fix rare race condition when renderer is not ready
2019-12-10 03:30:04 +11:00
Geoffrey McRae
0e7e918e2c
[client] cleanup and re-order startup/shutdown code
2019-10-26 12:03:10 +11:00
Geoffrey McRae
7d6e061ade
[client] properly shutdown on failure to connect to the spice server
2019-10-26 11:27:05 +11:00
Geoffrey McRae
66891aa536
[client] don't require wayland-egl, fixes #204
2019-10-26 11:23:04 +11:00
Geoffrey McRae
1d7a2ccf82
[c-host] windows: update ivshmem driver header and usage
2019-10-24 19:46:09 +11:00
Geoffrey McRae
e1bfb1234b
[common] obey the destination buffer size
2019-10-14 18:08:06 +11:00
Geoffrey McRae
9377fdfc37
[all] bump KVMFR version due to incompatible changes
2019-10-14 17:19:19 +11:00
Geoffrey McRae
5f1d17ba1f
[host] cosmetics
2019-10-09 19:52:31 +11:00
Geoffrey McRae
4c0ca1c8e7
[client] fix xor support for masked color cursors
...
fixes #200
2019-10-09 19:48:42 +11:00
Geoffrey McRae
8ef1aee35c
[common] fix bug in framebuffer_read
2019-10-09 14:11:45 +11:00
Geoffrey McRae
4168cc8d78
[all] fix the version
2019-10-09 14:04:36 +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
e93bd7a3bf
[client] fix shutdown race condition with the frame thread
2019-08-30 11:54:26 +10:00
Geoffrey McRae
da94075e7b
[client] egl: more verbose error on texture egl failures
2019-08-30 11:40:38 +10:00
Geoffrey McRae
69522495de
[client] fix invalid shutdown of renderer outside of it's thread
2019-08-30 11:36:28 +10:00
Geoffrey McRae
fce88fc72c
[EGL] add debug printf helper
2019-08-30 11:33:43 +10:00
Geoffrey McRae
163a2e5d0a
[client] fix failure to build due to broken symlink, fixes #173
2019-07-23 11:06:51 +10:00
Geoffrey McRae
b979752989
[client] added missing include
2019-07-15 18:30:39 +10:00
Geoffrey McRae
4cf6dec592
[all] allow disable of backtrace support during build
2019-06-19 09:13:03 +10:00
Geoffrey McRae
d7fa0aeff9
[client] fix typo in SDL_VIDEODRIVER from prior patch, whoops :)
2019-06-19 09:03:15 +10:00
Geoffrey McRae
2def6346e6
[client] don't override SDL_VIDEODRIVER if it is already set
2019-06-19 09:01:28 +10:00
Geoffrey McRae
607539a2af
[client] improve streaming texture performance
2019-06-13 08:54:51 +10:00
Geoffrey McRae
6d24dd52d6
[c-host] not all versions of mingw support wcstombs_s
...
While the _s functions are for security as they avoid exceeding the
supplied buffer, in our case they are not really required as we are
allocating a buffer large enough to store the entire result.
Fixes #171
2019-06-12 15:31:18 +10:00
Geoffrey McRae
2b4f8091f9
[client] README.md cosmetics
2019-05-31 16:45:55 +10:00
Geoffrey McRae
113da121e9
[client] updated documentation for new keybinds
2019-05-31 16:44:08 +10:00
Geoffrey McRae
dd7413f973
[client] added keybinds to send Ctrl+Alt+Fn
...
Fixes #165
2019-05-31 16:39:55 +10:00
Geoffrey McRae
0851fd13e6
[all] made a nicer icon, hopefully just a placeholder for now
2019-05-30 22:21:53 +10:00
Geoffrey McRae
97024041f3
[client] allow the screensaver to run
2019-05-30 20:54:39 +10:00
Geoffrey McRae
22238c3200
[client] fix invalid access on early termination
2019-05-30 20:24:51 +10:00
Geoffrey McRae
780bb248f7
[c-host] dxgi: fix invalid cursor type define
2019-05-28 15:17:11 +10:00
Geoffrey McRae
026bdb00f2
[c-host] take just the ivshmem headers and omit the kvm-guest submodule
2019-05-28 14:51:47 +10:00
Geoffrey McRae
373d4ac932
[host] removed old host application from the project, see c-host
2019-05-28 14:47:09 +10:00
Geoffrey McRae
7d26027752
[c-host] resend the last on client reconnect if a timeout occurs
2019-05-28 14:24:48 +10:00
Geoffrey McRae
3d426ccef8
[all] fix missing cursor when client reconnects
2019-05-28 14:06:15 +10:00
Geoffrey McRae
b31e8e1cee
[client] egl: remove accidental commit of debug code
2019-05-27 18:46:05 +10:00
Geoffrey McRae
f0923c4ed7
[client] egl: expose a few new tuneables
2019-05-27 18:42:46 +10:00
Geoffrey McRae
aabf19e63b
[client] main: properly shutdown if renderer fails to init
2019-05-27 18:40:36 +10:00
Geoffrey McRae
5e201a32ca
[c-host] dxgi: allow out of order frame mapping
2019-05-27 15:26:58 +10:00
Geoffrey McRae
438e9e0969
[common] option: fixed missing null terminator
2019-05-27 01:56:55 +10:00
Geoffrey McRae
9554e82c47
[common] fix failure to initialize structure
2019-05-27 01:50:38 +10:00
Geoffrey McRae
4cf2c7a350
[client] check for failure to map pbo memory
2019-05-27 01:39:01 +10:00
Geoffrey McRae
664d7dccdb
[client] fix the binary path when debugging
2019-05-27 01:38:50 +10:00
Geoffrey McRae
21b02efb4d
[c-host] dxgi: don't stall the GPU pipeline to map textures to ram
...
ID3D11DeviceContext_Map by default will force a CPU sync if the prior call to
CopyResource has not completed, this change defers the mapping and sets the
D3D11_MAP_FLAG_DO_NOT_WAIT when attempting to map the texture allowing the
capture to continue without incurring an expensive CPU/GPU sync.
A new tuneable has also been added
* dxgi:maxTextures
2019-05-26 23:36:17 +10:00