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
Quantum
778d27f08a
[common] debug: fix incorrect use of #elif defined
2021-09-29 17:48:03 +10:00
Quantum
815aac28fb
[common] cpuinfo: add common library
2021-08-31 20:14:10 +10:00
Quantum
39e42ba735
[common] option: change option_dump to option_dump_preset
...
This new function dumps all options marked as preset instead of dumping
individual sections. This should allow filter options to not be all grouped
into the [eglFilter] section.
2021-08-30 18:32:16 +10:00
Quantum
44850f1699
[common] option: add preset-only options that don't show up in help
2021-08-30 18:21:54 +10:00
Quantum
e11246d46e
[common] stringlist: implement item removal
2021-08-30 18:21:54 +10:00
Quantum
f0beedb5ba
[common] vector: implement item removal
2021-08-30 18:21:54 +10:00
Quantum
bbd39b8185
[common] option: implement the ability to set option values
...
This can then be used to update the options from EGL filters, and then
dumping them to files.
2021-08-30 18:21:54 +10:00
Quantum
f0624ccf89
[common] option: implement ability to dump config into ini
...
This is intended to be used for saving filter options into an ini file.
2021-08-30 18:21:54 +10:00
Quantum
e6df0acad9
[common] vector: eliminate double allocation when possible
...
This commit creates two constructor/destructor pairs for vector:
* vector_alloc/vector_free dynamically allocates the vector itself
* vector_create/vector_destroy uses existing Vector objects
2021-08-28 19:17:15 +10:00
Quantum
ba527761ef
[common] vector: inline common operations
2021-08-28 19:17:15 +10:00
Quantum
377757e743
[common] vector: add indexed iteration modes
2021-08-24 22:10:36 +10:00
Quantum
53b4b4818b
[common] vector: allow inplace construction with vector_push
...
This makes vector_push return a pointer to the pushed element.
It also allows the user to push a NULL pointer, which means allocating the
memory for the element but do not copy anything into it.
2021-08-24 22:10:36 +10:00
Quantum
07d3d6cbe7
[common] vector: implement a clear operation
2021-08-24 22:10:36 +10:00
Quantum
24e0343156
[common] vector: add new data structure
2021-08-22 21:36:13 +10:00
Quantum
a9241f6710
[common] debug: add DEBUG_UNREACHABLE() macro
...
This lets us mark code as unreachable and signals the compiler that this
is the case with __builtin_unreachable().
We also mark DEBUG_FATAL as unreachable.
2021-08-14 12:19:07 +10:00
Quantum
be1306f91a
[common] debug: add DEBUG_ASSERT macro
...
This, unlike the standard assert macro, is guaranteed to print the failed
assertion to our log file, and tests the assertion even with NDEBUG defined
so we can more easily catch failures in production binaries without crashing
the program.
The motivation of this is how MinGW handles assertion failures: it creates a
dialog window that the headless user will not be able to see, and blocks the
program from being restarted by the service. Since the failed assertion is
displayed in the dialog, it doesn't print anything to the log, making it
impossible to diagnose issues.
2021-08-14 12:19:07 +10:00
Quantum
e5d252290d
[common] array: add ALIGN_PAD macro for common logic
...
ALIGN_PAD(x, a) returns x rounded up to the nearest multiple of a.
2021-08-14 08:05:29 +10:00
Quantum
e945955d13
[common] rects: add rectsRejectContained function
...
This function will remove rectangles in a list that are entirely contained
in another rectangle in the same list.
2021-08-13 20:21:27 +10:00
Quantum
604b44d6d8
[common] rects: add rectsMergeOverlapping helper function
...
This is based on the client's util_mergeOverlappingRects.
2021-08-11 19:01:52 +10:00
Geoffrey McRae
e41cbf5f32
[common] option: option_get_float should return a float
2021-08-10 01:36:12 +10:00
Geoffrey McRae
88eada3494
[common] option: add support for float option types
2021-08-10 01:09:40 +10:00
Geoffrey McRae
92de467edc
[client] egl: add ffx_cas post process filter
2021-08-09 23:12:58 +10:00
Geoffrey McRae
30ad28ffd1
[common] CountedBuffer: cosmetics
2021-08-09 14:07:39 +10:00
Geoffrey McRae
69f6532b8d
[common] ringbuffer: allow reverse iteration
2021-08-09 14:06:32 +10:00
Quantum
0462cee9db
[common] rects: implement routine to copy rectangles from framebuffer
2021-08-08 08:30:11 +10:00
Quantum
cab95c5eed
[common] rects: refactor rect buffer copy code to common module
...
This also fixes a bug of accidentally multiplying the stride by 4 when
the stride is already in bytes and not pixels.
2021-08-08 08:30:11 +10:00
Quantum
2f8ebc29e8
[common] open: implement opening URLs in browser
...
This is currently only implemented for Linux.
On Windows, ShellExecute should be used, but that should be done when it's
actually needed so it could be tested.
2021-08-05 22:43:46 +10:00
Geoffrey McRae
95bbd67dea
[common] add new KVMFR structs and fields for feature support
2021-08-05 22:19:11 +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
Geoffrey McRae
1885e2093b
[client] imgui: added missed files from the last commit
2021-08-04 10:29:48 +10:00
Geoffrey McRae
d2c36b8449
[client] overlay: add new configuration overlay [wip]
2021-08-04 10:27:47 +10:00
Geoffrey McRae
4b4a75475a
[client] egl: fix out by one error with letterbox rendering
...
This replaces the scaled `destRect` with a version that uses doubles
correcting the rounding error that is causing a failure to properly
clear the black bar areas.
2021-08-03 22:27:46 +10:00
Quantum
3369536cb8
[common] paths: add library to manage platform-specific paths
...
This abstracts away stuff like XDG base directory specification.
Currently, this is implemented for Linux only.
2021-07-31 21:11:09 +10:00
Quantum
996b9e7e7b
[common] time: fully implement all functionality for windows
...
We implement nanotime by converting QueryPerformanceTimer output with
floating point arithmetic. This is necessary to preserve precision on
platforms where each tick is not an integer number of nanoseconds.
Furthermore, struct timespec is included C11 and appears to be supported
on Windows, so we no longer need to #ifdef it out.
2021-07-29 10:16:52 +10:00
Geoffrey McRae
5f5f497cbd
[host/common] windows: provide delayExecution
via nsleep
...
This change moves this platform specific sleep to `common` as the OS
agnostic `nsleep` function.
Ref PR #661
2021-07-26 16:36:56 +10:00
Geoffrey McRae
b39f38350f
[common] kvmfr: add a new frameSerial
field to the KVMFRFrame struct
...
This new field is used so that when a new client connects an already
connected client can identify any repeated frame that is sent and ignore
it.
2021-07-25 13:46:48 +10:00
Quantum
2bb0602ebb
[common] windebug: remove custom-rolled Windows 8 detector
...
Just use <versionhelpers.h> from Windows SDK.
2021-07-20 11:34:57 +10:00
Geoffrey McRae
45e1b5bce0
[common] ringbuffer: add pre value overwrite callback
...
This allows us to set a callback to read a value out before it's about
to be overwritten which can be useful for things like calculating a
running average.
2021-07-18 20:42:29 +10:00
Quantum
ad974cfa0a
[common] dpi: remove no longer used library
2021-07-18 10:50:57 +10:00
Quantum
e1fae8927f
[common] kvmfr: remove mouseScalingPercent which is no longer used
...
This used to contain DPI information, but is no longer used.
2021-07-18 10:50:57 +10:00
Tudor Brindus
92706caddc
[common]: move array length into a common helper
...
Since it is more generally useful, and less cryptic this way.
2021-07-18 10:41:50 +10:00
Quantum
ef2da1902e
[common] framebuffer: allow custom framebuffer write implementations
...
This is helpful for only copying damaged areas.
2021-07-18 10:41:50 +10:00
Quantum
69b20aee05
[common] kvmfr: add damage rectangles to the protocol
...
Co-Authored-By: Tudor Brindus <me@tbrindus.ca>
2021-07-18 10:41:50 +10:00
Geoffrey McRae
23f9855768
[common] ringbuffer: add forEach iterator
2021-07-17 21:09:51 +10:00
Geoffrey McRae
41403286d1
[common] ringbuffer: add getLength method
2021-07-17 21:09:51 +10:00
Geoffrey McRae
94ae9a95d7
[common] added new ringbuffer helper for metrics collection
2021-07-17 21:09:51 +10:00