Commit graph

331 commits

Author SHA1 Message Date
Geoffrey McRae
6ee30b2308 [client] update for the new LGMP interface prototypes 2022-11-07 20:59:36 +11:00
Geoffrey McRae
3ec632dd3c [host] initial changes to implement frame rate control 2022-11-07 19:48:38 +11:00
Jonathan Rubenstein
8a45a74fb1 [common] appstrings: Amend blurb for jjrcop with fluff
Very cheeky but is self-authored :D
2022-06-20 19:09:16 +10:00
Quantum
a8521b821e [all] cmake: standardize indentation to 2 spaces 2022-05-29 11:16:16 +10:00
Geoffrey McRae
1fcdcc8725 [client] egl: allow for partial texture updates 2022-05-21 21:21:16 +10:00
matthewjmc
53c843d9dd [common] Update framebuffer metadata + references 2022-05-16 20:01:09 +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
Geoffrey McRae
d8f2125543 [common/doc] add monero (XMR) donation address 2022-05-15 16:47:57 +10:00
Geoffrey McRae
3134ec84de [host] dxgi: add support for downsampling the capture before sending
This is an experimental & incomplete feature for those using
supersampling. Anything > 1200p will be downsampled by 50% before
copying out of the GPU to save on memory bandwidth.

Unfinished! Has issues with damage tracking and currently can not
be configured. Only dx11 has been tested at this point, everything
else will likely have problems/crash.
2022-05-01 19:45:44 +10:00
Geoffrey McRae
3a8cb6a613 [client/common] fixes for issues detected through static analysis. 2022-03-07 10:14:52 +11:00
Tudor Brindus
38340d3497 [common] allow building with -Wstrict-prototypes 2022-02-25 20:38:44 +11:00
Chris Spencer
1ca43c4727 [common] appstrings: add spencercw 2022-02-14 15:09:13 +11:00
Geoffrey McRae
8b4551c39c [all] convert KVMFR frame bools to flags in a bitfield
This will allow us to add additional flags in the future while remaining
backwards compatible with the host.
2022-02-10 20:32:38 +11:00
Tudor Brindus
809e1095bd [host] windows: plumb guest activation request to host 2022-02-08 15:27:27 +11:00
Tudor Brindus
fd28d0604e [host/client] kvmfr: request activation based on guest state 2022-02-08 15:27:27 +11:00
Geoffrey McRae
35bf30910b Revert "[common] option: fix bounds check in the argument parser."
This reverts commit db78c8e468.
I need some sleep, this was already fine as it was...
2022-01-30 20:25:02 +11:00
Geoffrey McRae
db78c8e468 [common] option: fix bounds check in the argument parser.
The recent `pwnkit` exploit brought this to my attention, not that we
are a setuid process we should still do this properly... who knows where
this code might get used in the future.
2022-01-30 19:56:06 +11:00
Geoffrey McRae
4ff39616b2 [common] rb: correct invalid accesses of atomics 2022-01-27 18:20:03 +11:00
Chris Spencer
599fdd6ffd [common] ringbuffer: add unbounded mode
In unbounded mode, the read and write pointers are free to move
independently of one another. This is useful where the input and output
streams are progressing at the same rate on average, and we want to keep
the latency stable in the event than an underrun or overrun occurs.

If an underrun occurs (i.e., there is not enough data in the buffer to
satisfy a read request), the missing values with be filled with zeros. When
the writer catches up, the same number of values will be skipped from the
input.

If an overrun occurs (i.e., there is not enough free space in the buffer to
satisfy a write request), excess values will be discarded. When the reader
catches up, the same number of values will be zeroed in the output.

Unbounded mode is currently unused since our audio input and output
streams are not synchronised. This will be implemented in a later commit.

Also reimplemented as a lock-free queue which is safer for use in audio
device callbacks.
2022-01-27 18:03:11 +11:00
Geoffrey McRae
f3ebde7d9f [common] ivshmem: fix memory leak 2022-01-25 03:37:56 +11:00
Geoffrey McRae
905c1d7f58 [common] ivshmem: check for failure to find a device 2022-01-25 03:37:56 +11:00
Geoffrey McRae
9c49dc6efd [common] linux/time: fix memory leak 2022-01-14 14:19:16 +11:00
Geoffrey McRae
344d2ec599 [common] linux: replace create_timer with a single threaded timer
Now LG uses a 25Hz tick timer it is an issue that `create_timer` spawns
a new thread for every single timer event, so instead multiplex all the
timers into a single thread with a 1ms resolution.
2022-01-12 13:00:12 +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
780cf5f362 [client] overlay: add modal message dialog support 2022-01-08 18:58:48 +11:00
Quantum
2834c7d95b [common] kvmfr: add field for CPU socket count 2022-01-07 21:03:20 +11:00
Quantum
2099161b7e [client] cpuinfo: implement CPU socket count for Windows 2022-01-07 21:03:20 +11:00
Quantum
a40a964b30 [client] cpuinfo: implement CPU socket count for Linux 2022-01-07 21:03:20 +11:00
Quantum
194241c5a3 [common] cpuinfo: add sockets to interface 2022-01-07 21:03:20 +11:00
Geoffrey McRae
fdb38a227e [host] app: implement stubs for platform specific guest information 2022-01-05 21:04:57 +11:00
Geoffrey McRae
912ca62a7b [common] only define min/max if they have not already been defined 2022-01-05 19:45:09 +11:00
Geoffrey McRae
952ebea2c5 [all] refresh copyright dates 2022-01-05 19:42:46 +11:00
Geoffrey McRae
0d27092ef5 [all] move min/max and upcast macros into common/util.h 2022-01-05 19:41:57 +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
2ed3c82de0 [common] provide debug print methods for dependent libraries to use 2021-12-29 16:01:42 +11:00
Geoffrey McRae
d99ec3e9c0 [common] ringbuffer: remove exta locking and add append/consume funcs
As the ringbuffer is now in use for audio it makes sense to provide bulk
append and consume functions that are thread safe instead of adding
locking over all of the functions. This partially reverts the prior
commit that added the extra locking.
2021-12-26 11:09:42 +11:00
Geoffrey McRae
8ba4b56dba [common] ringbuffer: added shift and locking for thread safety 2021-12-26 11:09:42 +11:00
vmfortress
7075fe2c54 [common] time: fixed time values in nsleep
Time values of scientific notation replaced with expanded values
and `tv_nsec` simplified with modulo
2021-11-01 20:58:42 +11:00
Geoffrey McRae
affc3f51f8 [common] rects: fix error introduced in cosmetics patch
`x2` and `y2` are required here as they need to operate on the original
x & y before they are clamped. Can't believe I missed this *facepalm*
2021-10-26 23:35:09 +11:00
Geoffrey McRae
6078b11200 Revert "[common] rects: fix damage regression introduced in the cosmetics patch"
This was correct, brainfart moment
2021-10-26 22:26:20 +11:00
Geoffrey McRae
68a9504366 [common] rects: fix damage regression introduced in the cosmetics patch 2021-10-26 22:15:54 +11:00
Geoffrey McRae
9d71655273 [common] rects: fix return value of removeRects 2021-10-24 22:22:13 +11:00
Geoffrey McRae
2f0b97a487 [common] rects: de-dup code and don't needlessly copy rect over itself 2021-10-24 22:19:28 +11:00
Geoffrey McRae
f69b869282 [common] rects: cosmetics 2021-10-24 22:05:30 +11:00
Geoffrey McRae
bc7cbf1173 [common] fix out by one error in rectsIntersect 2021-10-24 13:31:41 +11:00
Quantum
edf1e341da [common] rects: fix rectIntersects 2021-10-20 16:32:41 +11:00
Geoffrey McRae
dca5da02a0 [client] egl: fix undefined behaviour with zero size array 2021-10-20 13:34:16 +11:00
Quantum
778d27f08a [common] debug: fix incorrect use of #elif defined 2021-09-29 17:48:03 +10:00
Quantum
57d220a43b [common] open: detach xdg-open instead of waiting for it
Sometimes, e.g. when xdg-open has to start the browser, the xdg-open
process can stay around until the browser exits, which freezes the
client. Instead, we should not wait for xdg-open to exit.

However, we can't simply not call wait, as that would leave the
xdg-open process around as a zombie. We could turn off the SIGCHLD
handler, but that's a global solution to a local problem. Instead, we
call setsid and fork again to detach the xdg-open process as if it's a
daemon, and let init take care of the reaping process.

Co-Authored-By: Tudor Brindus <me@tbrindus.ca>
2021-09-27 13:35:08 +10:00
Geoffrey McRae
2aa236e1f9 [common] options: check for realloc failure 2021-09-11 10:38:07 +10:00