Quantum
b8b70e772e
[client] config: print error when app:configFile is not a valid file
...
This makes it clear to the user that app:configFile is at fault.
2021-07-31 14:59:00 +10:00
Quantum
64c906b801
[client] main: prevent the user from launching looking glass as setuid
...
We don't want to encourage craziness of people making the client suid to
bypass permission issues on the shm file.
Note: I see no evidence of this happening in the wild, but let's be
proactive.
2021-07-31 14:58:48 +10:00
Quantum
72ccd44681
[client] wayland: pass mouse wheel motion events to imgui
2021-07-31 14:58:35 +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
Quantum
6b6b3b724a
[client] wayland: reject horizontal scroll events
...
Currently, we handle horizontal scroll events as if they are vertical scrolls.
This is not correct and we should instead reject them.
2021-07-31 14:57:56 +10:00
Quantum
86b50cc8ab
[client] imgui: initialize keymap
...
This allows ImGui to understand some of the basic key presses.
Also moved the include guard from kb.c to kb.h where it actually makes sense.
2021-07-31 14:57:41 +10:00
Quantum
10a27e7a27
[client] config: automatically update embedded copyright string
...
The refresh-copyright script now automatically updates the copyright string
embedded in config.c. In order to achieve this, refresh-copyright gained the
ability to reflow text as the situation needs.
2021-07-31 14:57:24 +10:00
Quantum
edabd1bae7
[client] imgui: remove no longer used overlay_utils.cpp
2021-07-31 14:56:49 +10:00
Quantum
f1b1da60ea
[client] imgui: improve method for high DPI
...
We now give ImGui the true logical size of the window and tell it to scale
the framebuffer. To fix the blurry fonts, we continue to load fonts at the
scale necessary for the DPI and use FontGlobalScale to shrink the fonts back
to the logical size. The font rectangle is then expanded by the framebuffer
scaling, resulting in good text rendering.
This method has the advantage of not messing up the sizes of resizable
overlays when moving across monitors.
2021-07-31 14:56:49 +10:00
Quantum
0402dd521a
[client] imgui: ask display server to display cursors
2021-07-31 14:56:04 +10:00
Quantum
11a5864969
[client] wayland: implement support for other cursors
2021-07-31 14:56:04 +10:00
Quantum
da28db2ca4
[client] ds: change showPointer to setPointer for more cursors
...
Currently everything only supports LG_POINTER_NONE and LG_POINTER_SQUARE.
2021-07-31 14:56:04 +10:00
Quantum
c991de7ccd
[client] imgui: improved overlay input handling
...
1. Overlay always releases confines.
2. Overlay turns off mouse sync with guest.
2021-07-31 14:54:53 +10:00
Quantum
ea2651e39b
[client] imgui: darken background when rendering overlays
...
This replaces the alert that says whether the overlay is enabled or not.
Also, we now always display the help menu in overlay mode.
2021-07-29 19:10:15 +10:00
Quantum
a980cd9406
[client] egl: log when EGL_EXT_image_dma_buf_import is unavailable
2021-07-29 17:03:44 +10:00
Quantum
1c58b3a087
[client] imgui: implement keyboard input forwarding and capture
2021-07-29 17:02:59 +10:00
Quantum
065d90c3f7
[client] imgui: add mode to forward mouse input to imgui
2021-07-29 17:02:59 +10:00
Quantum
6c64965703
[client] egl: make functions that do not need linking static
2021-07-29 16:54:56 +10:00
Quantum
134829cbf2
[client] imgui: make graph y-axis configurable
...
The default of [0, 50] makes sense for FPS/UPS graphs, but does not for
things like the import graph. The latter should not take more than 5 ms
for sure.
This commit allows the min/max y-axis value to be specified when registering
the graph.
2021-07-29 15:54:15 +10:00
Quantum
009ae02e32
[client] egl: add graph tracking time taken to import frame
...
This tracks the time taken to load the frame buffer into an OpenGL texture.
2021-07-29 10:08:52 +10:00
Quantum
6ed1f4662d
[client] imgui: report failed font atlas building
...
Also removed the inefficient code to build the default atlas.
2021-07-26 17:08:02 +10:00
Quantum
120fe63c0f
[client] egl: keep x/y coordinates of cursor rectangle non-negative
...
This shifts the rectangles upwards instead of cutting off the rectangles,
but it keeps the code simple.
2021-07-26 07:56:46 +10:00
Quantum
181b165a4b
[client] egl: generate correct cursor damage with cursor rotation
2021-07-25 17:35:29 +10:00
Quantum
d9cdc8d26c
[client] egl: rotate damage rectangles according to client side rotation
2021-07-25 16:56:48 +10:00
Quantum
d0722349e6
[client] egl: make damage overlay support rendering rotated rectangles
2021-07-25 16:56:48 +10:00
Geoffrey McRae
2ef80a5d34
[client] overlay: cosmetic changes to the overlay display
2021-07-25 16:49:25 +10:00
Quantum
e7761abf3c
[client] wayland: invalidate window on configure
...
This avoids sending potentially meaningless damage values after a surface
configuration event.
2021-07-25 15:36:44 +10:00
Geoffrey McRae
3905834807
[client] x11: call app_invalidateWindow
on expose
2021-07-25 15:30:56 +10:00
Geoffrey McRae
60a58d4d8d
[client] all: make it possible to signal full window invalidation
...
Now that we are drawing with damage rects, when the window is hidden and
then exposed the window may not get fully redrawn. This provides
`app_invalidateWindow` for the display server backend to call when the
screen needs a full redraw.
2021-07-25 15:29:29 +10:00
Geoffrey McRae
8c2a77e84e
[client] don't skip the first frame if we do not yet have a frame
...
A frame serial of `0` is valid and will happen if either the host app
has just started, or the serial has overflowed.
2021-07-25 15:10:40 +10:00
Geoffrey McRae
9dffde74b2
[client] main: skip duplicate frames
...
When a new client connects to our session the host will repeat the last
valid frame for the new client. This change will detect this and skip
the duplicated frame.
2021-07-25 13:46:48 +10:00
arcnmx
3b37898eb2
[all] use cmake FindPkgConfig IMPORTED_TARGETs
2021-07-24 12:35:48 +10:00
arcnmx
aa2ea05af9
[client] removed unused GMP dependency
2021-07-24 12:35:48 +10:00
arcnmx
38cb348201
[all] make OPTIMIZE_FOR_NATIVE a tristate option
2021-07-24 12:35:17 +10:00
arcnmx
be664c49c8
[all] cmake: use -march=x86-64-v2 when it becomes available
...
Moves the logic in 0525515
to a common cmake include, and applies it to
the other binaries.
2021-07-24 12:35:17 +10:00
Quantum
f09738678e
[client] fonts: remove font rendering machinery
2021-07-23 20:18:12 +10:00
Quantum
0c35d9b057
[client] opengl: remove font management
2021-07-23 20:18:12 +10:00
Quantum
cb9774bbd2
[client] egl: remove font management
2021-07-23 20:18:12 +10:00
Quantum
dd0edc1394
[client] renderers: remove alert handling
2021-07-23 20:18:12 +10:00
Quantum
be44249c05
[client] imgui: converted alerts to use imgui
2021-07-23 20:18:12 +10:00
Quantum
efb5019176
[client] overlay/help: switch to using ImGui's table facility
2021-07-23 18:04:05 +10:00
Quantum
5153d35bb5
[client] renderer: remove on_help from renderer interface
2021-07-23 18:04:05 +10:00
Quantum
036f16b9ef
[client] imgui: convert help overlay to use imgui
2021-07-23 18:04:05 +10:00
Quantum
436986d182
[client] imgui: make UI font and size configurable
2021-07-23 16:07:42 +10:00
Quantum
5d053128ac
[client] imgui: use improved high DPI rendering
...
This actually makes imgui render at a higher resolution, avoiding scaling
and resulting blurriness.
2021-07-23 16:07:42 +10:00
Quantum
b5c5ecc074
[client] imgui: support high DPI by scaling framebuffer
...
This allows overlays to render at correct positions on high DPI displays.
2021-07-23 16:07:42 +10:00
Quantum
56308fcbd1
[client] overlay: use utility function to get ImGui rectangle
2021-07-23 15:54:18 +10:00
Quantum
628bdab21b
[client] overlay: remove space checking
...
Every overlay is now guaranteed to be able to write MAX_OVERLAY_RECTS rects,
and running out of space is now an error.
2021-07-23 15:54:18 +10:00
Quantum
df0397b10b
[client] imgui: track last rectangles for overlays
...
This is necessary in case overlays change size. When this happens, we must
damage the larger of the overlays' rectangles this frame and last frame.
This erases the overlay from where it is no longer appears.
In order to do this, we must keep track of the rectangles for every overlay
with no exception. We cannot short-circuit the generation of rectangles if
we run out of buffer space, and we must allocate space for MAX_OVERLAY_RECTS
rectangles for every frame. Otherwise, we will not know where to erase the
overlay if it disappears.
2021-07-23 15:54:18 +10:00
Quantum
334bfeecea
[client] egl: correctly handle mixing imgui and non-imgui overlays
...
This allows the full frame to be damaged when both types are visible.
2021-07-23 15:53:59 +10:00