Quantum
af2dafbdac
[client] wayland: add ability to create OpenGL contexts
...
This should allow the OpenGL backend to work.
2021-02-21 10:31:48 +11:00
Quantum
a56e363e39
[client] wayland: add stubs for OpenGL functions
...
This allows the client to run on Wayland, even though OpenGL doesn't work.
2021-02-21 10:31:48 +11:00
Geoffrey McRae
06af101bf9
[client] x11: properly handle window destruction and fullscreen support
2021-02-21 10:31:48 +11:00
Geoffrey McRae
973806dd9c
[client] opengl: implement & fix opengl support
2021-02-21 10:31:48 +11:00
Geoffrey McRae
740dad943b
[client] x11: cleanup on failure to initialize
2021-02-21 10:31:48 +11:00
Geoffrey McRae
4dfe4b8e2b
[client] allow renderers to pass back if they need an OpenGL context
2021-02-21 10:31:48 +11:00
Geoffrey McRae
cc521eab90
[client] app: fix reversed ds init logic
2021-02-21 10:31:48 +11:00
Geoffrey McRae
7d2c9ec447
[client] app: don't call ds->free if the ds was not initialized
2021-02-21 10:31:48 +11:00
Geoffrey McRae
8919d2718f
[client] egl: fix building without EGL support
2021-02-21 10:31:48 +11:00
Tudor Brindus
cf3e816603
[client] probe Wayland backend first
...
`$DISPLAY` will be set even in a Wayland session, which causes LG to
initialize itself under Xwayland unless it is explicitly compiled with
`-DENABLE_X11=OFF`.
We could add a Wayland check within the X11 backend, but reordering the
code-generated array seems like a better solution.
2021-02-21 10:31:48 +11:00
Quantum
b8bf980a29
[client] wayland: decorate window unless borderless is requested
...
Show server-side decoration with the xdg_decoration protocol unless
win:borderless=yes.
2021-02-21 10:31:48 +11:00
Quantum
5dad69675b
[client] wayland: respect request to maximize window
...
Request the compositor to maximize the window if win:maximize=yes.
2021-02-21 10:31:48 +11:00
Quantum
d0d1b31c10
[client] wayland: add handling for close event
...
When the xdg_toplevel receives a close event, call app_handleCloseEvent.
2021-02-21 10:31:48 +11:00
Quantum
6206d5dec4
[client] wayland: implement full screen handling
...
Implement waylandSetFullscreen and waylandGetFullscreen.
2021-02-21 10:31:48 +11:00
Quantum
265370b0f5
[client] wayland: implement cursor handling
...
This commit adds code to load the looking glass cursor and display it
when needed. Otherwise, the cursor is hidden.
2021-02-21 10:31:48 +11:00
Quantum
081d76268a
[client] wayland: handle mouse/keyboard enter events
...
This allows mouse and keyboard input to work again on Wayland.
2021-02-21 10:31:48 +11:00
Quantum
8559b354ae
[client] egl: always render desktop texture as opaque
...
We ask for 32-bit colour buffer when creating the EGL context. On Wayland,
this sometimes give contexts with alpha channels, resulting in unwanted
transparency. So we clear the alpha channel in the desktop shader.
We also switch to using constant alpha for blending the splash, which
avoids more alpha issues.
2021-02-21 10:31:48 +11:00
Quantum
9f0b99dac0
[client] wayland: implement window creation for egl
...
This commit implements window creation and resize logic, allowing the desktop
to be drawn.
2021-02-21 10:31:48 +11:00
Geoffrey McRae
f4c1927f56
[client] ds: added new getFullscreen
operation
...
As the window manager may change our mode to full screen without our
request we must ask the ds backend for the current state when we want to
toggle the mode.
2021-02-21 10:31:48 +11:00
Geoffrey McRae
cfa9171465
[client] x11: don't report borders if in fullscreen mode
2021-02-21 10:31:48 +11:00
Geoffrey McRae
2eac3dcb56
[client] x11: implemented missing functionallity
2021-02-21 10:31:48 +11:00
Geoffrey McRae
2d1e3c8022
[client] ds: validate the ds before attempting to use it
2021-02-21 10:31:48 +11:00
Geoffrey McRae
f8ac860fde
[client] app: rearrange code to reflect the header
2021-02-21 10:31:48 +11:00
Geoffrey McRae
6f4a116942
[client] ds: re-order as SDL is now the fallback
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
7ff5da4d62
[client] refactor keybinds out of main.c
2021-02-21 10:31:48 +11:00
Geoffrey McRae
37b3a26b9c
[client] all: refactor keybind code & functions
2021-02-21 10:31:48 +11:00
Geoffrey McRae
e18f7d3365
[client] app: replace old SDL_Scancode with int
2021-02-21 10:31:48 +11:00
Geoffrey McRae
3d03699cc8
[client] all: move keybind implementation into app.c/h
2021-02-21 10:31:48 +11:00
Geoffrey McRae
9674421ce4
[client] x11: fix double initialization of event members
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
6b1e310343
[client] move remaining code in core.c
into the SDL 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
Quantum
2973319bff
[client] opengl: remove glu dependency
...
We only use gluOrtho2D, which is trivially replaced with glOrtho, and
gluErrorString which can be replaced with a small lookup table.
2021-02-20 12:44:32 +11:00
Quantum
ec921d7f39
[client] spice: correctly ungrab keyboard when grabKeyboardOnFocus=no
...
When input:grabKeyboardOnFocus=no, exiting capture mode should ungrab
the keyboard. Otherwise, focusing the window doesn't grab the keyboard,
but toggling capture mode would leave the keyboard stuck in a grabbed
state until defocused.
2021-02-09 20:06:27 +11:00
Tudor Brindus
637a7625d2
[client] wayland: allow EGL/OpenGL vsync to be set to on
...
This effectively reverts 4bceaf5
.
Upstream ticket: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4180
Commit 941c651
makes working around the hang in LG itself not as
annoying as before.
In the future, we can bypass this entire issue by implementing our own
swapchain and listening to frame callbacks ourselves.
2021-02-09 09:12:57 +11:00
Tudor Brindus
e6ebcec689
[client] spice: don't send zero deltas for Wayland input
...
While a compositor will never send us 0-delta motion events, they can
still end up as 0-deltas post-projection, consuming QEMU buffer space
for no reason.
This should help with mouse skipping issues.
2021-02-01 11:09:46 +11:00
Quantum
25e74301be
[client] wayland: fix copying rich text into guest
...
Before this, copying rich text ends up with a lot of funky behaviour,
for example:
* copying text from Discord shows up as HTML unless pasted into a text
editor first
* copying text from Firefox shows up as the single letter h
This commit fixes all the above issues.
Due to the change in logic, we now use the first text format offered
instead of the last, which is almost certainly the preferred form.
Doing this gets us proper Unicode support, or Unicode characters would
end up as escapes of the form \uXXXX (this is used in the fallback
forms for applications without UTF-8 support).
2021-01-30 16:55:57 +11:00
Geoffrey McRae
e951aaad2d
[client] spice: fix errant keyboard grab/ungrab behaviour
2021-01-30 12:01:20 +11:00
Quantum
4fbaf18c89
[client] update host log file path
2021-01-29 15:56:01 +11:00
Geoffrey McRae
05f2305fa0
[client] correct error in variable name from last commit
2021-01-28 09:04:52 +11:00
Geoffrey McRae
b76fedeb67
[client] all: don't trigger cursor redraws if the cursor is not visible
2021-01-28 08:58:59 +11:00
Geoffrey McRae
9e96156912
[client] egl: use eglGetPlatformDisplay(EXT) if possible
2021-01-25 16:04:33 +11:00
Geoffrey McRae
837858c214
[client] prevent lgInit
from resetting the run state
...
If the renderer fails to start it sets the run state to stopped, having
lgInit where it was causes this to be reset to running triggering
invalid usage of g_state.lgmp.
2021-01-25 15:25:52 +11:00
Tudor Brindus
941c651fad
[client] unconditionally quit on second SIGINT
...
Under some circumstances, Looking Glass can hang when SIGINT'd, for
instance, if it's stuck waiting on spice I/O that won't complete because
the guest is misbehaving.
This commit provides an escape hatch for such cases, so one doesn't have
to reach for `kill -9 $(pidof looking-glass-client)`.
2021-01-25 09:39:35 +11:00
Geoffrey McRae
8caf951c41
[client] x11: don't attempt to grab the pointer on window resize
2021-01-25 09:25:01 +11:00
Geoffrey McRae
ef54e1be7f
[client] x11: add error checking around XIGrabDevice
2021-01-25 06:52:23 +11:00
Geoffrey McRae
4c1893fe20
[all] fix numerous memory leaks at application shutdown
2021-01-24 21:47:53 +11:00
Geoffrey McRae
086f73721d
[client] egl: remove accidental commit
2021-01-24 19:19:43 +11:00
Geoffrey McRae
202739c5be
[client] egl: better debug output for EGL errors
2021-01-24 13:17:11 +11:00
Geoffrey McRae
88b15cb3fe
[client] egl: nit, fix case of function name
2021-01-24 12:18:56 +11:00
Geoffrey McRae
6990d7f7e3
[client] egl: commit missed files for the last changeset
2021-01-24 12:16:39 +11:00
Geoffrey McRae
9941a4bb83
[client] egl: runtime detect support for glEGLImageTargetTexture2DOES
2021-01-24 12:06:10 +11:00
Quantum
908aa84599
[client] wayland: use acceleration in capture mode unless rawMouse
...
We are forced to use accelerated movement in regular mode as that is how the
host machine cursor moves and we want the cursors to line up (since Wayland
cannot do warps). To avoid a change in sensitivity when toggling capture
mode on/off, we should use accelerated deltas for capture mode as well,
unless the user explicitly asks for raw input with input:rawMouse.
2021-01-23 20:18:20 +11:00
Geoffrey McRae
185c7764ba
[client] spice: always show the pointer if using input:captureOnly
2021-01-21 17:36:22 +11:00
Geoffrey McRae
4113294d30
[client] spice: fix failure to ungrab the kb with captureOnly
2021-01-21 17:32:44 +11:00
Geoffrey McRae
aa92a7a90d
[client] app: fix error: ‘dataSize’ may be used uninitialized
(take 2)
2021-01-21 17:25:53 +11:00
Geoffrey McRae
c83243f22c
[client] app: fix error: ‘dataSize’ may be used uninitialized
2021-01-21 17:21:24 +11:00
Geoffrey McRae
23e883f60f
Revert "[client] sdl: move SDL specific screensaver inhibit"
...
This reverts commit afb0146d33
.
Additional handling is required to implement this properly, postpone
this for Beta 4
2021-01-21 15:58:37 +11:00
Geoffrey McRae
dcd0cb7d8e
[client] spice: release the mouse if the host stops
2021-01-21 15:39:15 +11:00
Geoffrey McRae
29ea8ecf6b
[client] app: if spice is not in use, hide the local cursor ( fixes #415 )
2021-01-21 14:17:31 +11:00
Geoffrey McRae
afb0146d33
[client] sdl: move SDL specific screensaver inhibit out of main.c
2021-01-21 14:03:05 +11:00
Quantum
3385438095
[client] wm: use correct logic for screensaver inhibition
...
Namely, we should inhibitIdle if noScreensaver is true, not the other way
around.
2021-01-21 12:14:38 +11:00
Quantum
6077dcc123
[client] spice/wayland: fix jitter when moving the cursor slowly
...
It does not make sense to accumulate fractional error in non-capture mode
as you know exactly where the cursor is supposed to be, at least on Wayland.
On Wayland, we base movements on the current guest position and desired
target position, and the accumulated errors only skew our movements.
2021-01-20 22:54:08 +11:00
Geoffrey McRae
e758f88519
[client] spice: fix failure to align and grab the pointer
2021-01-20 22:45:48 +11:00
Geoffrey McRae
3bccd9c45e
[client] spice: input:captureOnly shouldn't capture the pointer at start
2021-01-20 22:16:03 +11:00
Geoffrey McRae
947ba9bfe3
[client] spice: fix input:captureOnly support
2021-01-20 22:12:39 +11:00
Geoffrey McRae
4ca4fd35ad
[client] doc: added win:rotate
and keybind to README.md
2021-01-20 15:37:23 +11:00
Geoffrey McRae
8fa2b5f368
[client] config: make the help text for winRotate more descriptive
2021-01-20 15:35:13 +11:00
Geoffrey McRae
8cb0cbb91d
[client] doc: update README.md with new libraries and backend config
2021-01-20 15:33:56 +11:00
Geoffrey McRae
d6f39d66bf
[client] x11: xi
is now a required library for the x11
backend
2021-01-20 15:33:34 +11:00
Geoffrey McRae
ab79dae0b8
[client] cmake: fix typo in cmake configuration
2021-01-20 15:33:10 +11:00
Geoffrey McRae
ee8c883201
[client] x11: implement screensaver (un)inhibit
2021-01-20 15:24:10 +11:00
Geoffrey McRae
d1043e590a
[client] x11: register for absolute motion events while grabbed
2021-01-20 05:51:18 +11:00
Geoffrey McRae
5789a7efc0
[client] x11: fix failure to process the correct focus events
2021-01-20 05:41:33 +11:00
Geoffrey McRae
f883c630f6
[client] spice: set inView false if the focus is lost
...
Failure to do this results in loss of input on X11 as we need to be sure
the cursor is ungrabbed.
2021-01-20 05:07:55 +11:00
Geoffrey McRae
ac3333c0d2
[client] x11: switch to using XInput2 for all events and warp
...
On platforms like KDE, mixing X core events with XInput2 events causes
issues, so just switch entirely over to XInput2.
2021-01-20 04:53:43 +11:00
Geoffrey McRae
da65c47245
[client] spice: fix transposed cursor scale calculations
2021-01-20 04:53:43 +11:00
Xiretza
31ea93dd0d
[client] Fix compiler warnings about potentially uninitialized variables
...
Build failed with _FORTIFY_SOURCE enabled because the compiler couldn't
ensure the switch statements didn't hit the default arm and thus wouldn't
define the variables. Adding a statically failing assert makes sure that
all code paths either define the variables or fail early.
$ cd client
$ env CFLAGS='-O1 -D_FORTIFY_SOURCE=1' cmake -B build/
$ make -C build
[...]
client/renderers/EGL/egl.c: In function ‘egl_calc_mouse_size’:
client/renderers/EGL/egl.c:299:36: error: ‘h’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
299 | (this->mouseHeight * (1.0f / h)) * this->scaleY
| ~~~~~~^~~~
2021-01-20 03:05:30 +11:00
Geoffrey McRae
6d162cf92d
[client] spice: remove useless check, the displayserver should do this
2021-01-20 01:34:52 +11:00
Geoffrey McRae
8f07744c98
[client] don't hide the cursor unconditionally at startup
2021-01-20 01:27:38 +11:00
Geoffrey McRae
dacc573650
[client] spice: align the guest pointer to local when entering the view
2021-01-20 01:24:31 +11:00
Geoffrey McRae
555891face
[client] x11: filter out grab/ungrab focus/leave events
2021-01-20 01:21:19 +11:00
Geoffrey McRae
8e604667f9
[client] fix regression causing failure to warp when exiting the window
2021-01-20 00:52:33 +11:00
Geoffrey McRae
3774d2bfe9
[client] realign the pointer when input is re-enabled
2021-01-20 00:30:04 +11:00
Geoffrey McRae
31eafee468
[client] always show the cursor when not using spice ( fixes #409 )
2021-01-20 00:28:27 +11:00
Geoffrey McRae
2bfcfa36df
[client] all: fix regression with input disable toggle
2021-01-20 00:23:24 +11:00
Geoffrey McRae
819562d906
[client] fix keybind regression for EGL
2021-01-19 21:12:20 +11:00
Geoffrey McRae
0c8ce9daba
[client] x11: filter out duplicate button press events
2021-01-19 21:06:30 +11:00
Geoffrey McRae
c667322f25
[client] x11: cosmetic, rename device
to raw
for raw events
2021-01-19 20:47:25 +11:00
Geoffrey McRae
07c13a9d43
[client] x11: fix regression, raw event's dont give us the cursor pos
2021-01-19 20:46:12 +11:00
Geoffrey McRae
0bd1bb5075
[client] x11: removed left behind ifdef for XINPUT
2021-01-19 20:37:15 +11:00
Geoffrey McRae
f9faa0542b
[client] x11: use raw keyboard and mouse button press events
2021-01-19 20:36:43 +11:00
Geoffrey McRae
b87004c597
[client] app: ignore resize events that don't change the size
2021-01-19 20:15:12 +11:00
Quantum
2f11024db8
[client] displayserver: move screensaver handling into displayservers
...
This also makes Wayland idle inhibition respect noScreensaver setting.
2021-01-19 19:58:11 +11:00
Tudor Brindus
44a949f5c6
[client] wayland: inhibit idle while Looking Glass has keyboard focus
2021-01-19 07:03:50 +11:00
Tudor Brindus
bf5602b062
[cmake] wayland: build idle-inhibit-unstable-v1 header
2021-01-19 07:03:50 +11:00
Geoffrey McRae
6005006dd4
[client] dont show the pointer at launch unless it really should be
2021-01-19 06:00:59 +11:00
Geoffrey McRae
b2ac2980d5
[client] don't attempt to align to the guest with invalid pos data
2021-01-19 05:56:40 +11:00