Geoffrey McRae
5a3fe151e4
[client] main: don't use Linux keybinds if the guest is not Linux
2022-01-17 20:26:45 +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
1851002fc1
[client] all: remove ll_walk
and migrate over to ll_forEachNL
2022-01-12 12:17:29 +11:00
Geoffrey McRae
b99e1ea38e
[client] ll: fix error in ll_forEachNL macro
2022-01-12 12:17:06 +11:00
Geoffrey McRae
e94252ad65
squash with ll
2022-01-12 10:03:31 +11:00
Geoffrey McRae
6fc0c69b2e
[client] overlay/msg: provide a method to close messages from code
2022-01-12 09:35:09 +11:00
Geoffrey McRae
ced952a4c6
[client] ll: add new functionallity to allow removal of items
2022-01-12 09:33:36 +11:00
Geoffrey McRae
780cf5f362
[client] overlay: add modal message dialog support
2022-01-08 18:58:48 +11:00
Geoffrey McRae
0080e5f1b9
[client] overlay: add app_invalidateOverlay
method
2022-01-08 15:18:40 +11:00
Geoffrey McRae
db2e38ae4d
[client] overlay: add 25Hz tick
function
...
This allows an overlay to manage itself for timed events like
alerts/messages, etc.
2022-01-08 14:33:07 +11:00
Geoffrey McRae
fe7973ea24
[client] audio: implement record interface and glue
2022-01-06 23:49:20 +11:00
Geoffrey McRae
e6bd36ec7c
[client] audio: refactor audio
to playback
and add record
funcs
2022-01-06 22:47:22 +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
433a5420cb
[client] audio: update PureSpice and add support for volume control/mute
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
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
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
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
579f998519
[client] all: replace assert with DEBUG_ASSERT
2021-08-14 12:19:07 +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
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
1a8267d55a
[client] interface: cleanup the renderer interface
...
Removes the silly typedefs and adds some basic documentation as to the
usage of each function.
2021-08-08 14:39:40 +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
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
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
6c44bbb53e
[client] egl: use a ui switch for damage display instead of a keybind
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
Geoffrey McRae
c15d0dc672
[client] ds: waitFrame now returns a bool to force rendering if needed
...
X11 needs to calibrate to get the best possible latency, as such it
needs the scene to render so that the render time of the scene can be
accounted for in the delay calculation.
2021-08-04 06:49:35 +10:00
Geoffrey McRae
4e435e6199
[client] ds: tell the display server if jitRender is requested
2021-08-04 06:05:42 +10:00
Quantum
87aac8cf03
[client] egl: use buffer age extension to render only damaged parts
...
We avoid rendering any area that has not changed since the buffer was used
and also not covered by an overlay.
2021-08-03 21:37:31 +10:00
Geoffrey McRae
13d9c84dc9
[client] egl: replace monolithic EGLTexture with modular version
...
The way things were handled in EGLTexture is not only very hard to
follow, but broken. This change set breaks up EGLTexture into a modular
design making it easier to implement the various versions.
Note that DMABUF is currently broken and needs to be re-implemented.
2021-08-02 23:37:33 +10:00
Geoffrey McRae
e23144aecd
[client] overlay: add new needs_render
for realtime overlays
2021-08-01 21:13:59 +10:00
Quantum
f64310320a
[client] ds: add stopWaitFrame to terminate waitFrame early
...
This is used on exit to unblock the render thread.
2021-08-01 19:54:28 +10:00
Quantum
16aa04d539
[client] ds: add skipFrame method to interface
...
If this exists, it should be called when waitFrame returns but we don't
wish to render.
2021-08-01 18:54:55 +10:00
Geoffrey McRae
f8e1ab8f31
[client] renderers: add new needs_render method to the interface
...
With jitRender the renderer needs to tell the main application if it
needs to be rendererd, such as during the initial splash screen fade
out.
2021-08-01 18:18:08 +10:00
Quantum
77b3d45e0e
[client] ds: change signalNextFrame to waitFrame
2021-08-01 17:29:15 +10:00
Geoffrey McRae
fcbd255e99
[client] app: allow overlay exit with KEY_ESC
2021-07-31 20:51:38 +10:00
Geoffrey McRae
41c5688fca
[client] overlay: let the overlay know if it's in interactive mode
...
This also removes the need for the flags member as the overlay can just
opt to not render if it's not in interactive mode.
2021-07-31 19:11:40 +10:00
Quantum
3043296e52
[client] ds: add optional method signalNextFrame(LGEvent)
...
This method takes an LGEvent and signals it when the next frame should be
rendered in time for the next vblank.
We will be using this to render imgui at screen refresh rate, but this could
potentially be used later to implement a better form of vsync for supported
display servers.
This must be invoked before swapping buffers.
2021-07-31 19:05:21 +10:00
Quantum
7ca5e14938
[client] imgui: implement mouse wheel motion support
...
The display server should call app_handleWheelMotion as necessary.
2021-07-31 14:58:35 +10:00