Commit graph

40 commits

Author SHA1 Message Date
Joshua Ashton
a1d560e836 steamcompmgr: Handle cursor image width being different to surface width for rotation offset
The surface width for the cursor is 256, but the image width is 64 which means we have a bunch of blank space, so we need to account for this in DRM code for the CRTC offsets.
2022-02-02 22:58:11 +00:00
Joshua Ashton
797ee59cbb vblankmanager: Estimate draw buffer time based on max rolling average draw time
Handles spikes much better and allows us to have a lower buffer when not needed.
2022-01-31 23:49:39 +00:00
Joshua Ashton
289a739358 steamcompmgr: Resize to fit dropdowns 2022-01-31 23:45:45 +00:00
Joshua Ashton
3dc36c8799 wlserver: Redirect volume events to root xwayland
Avoids games being the ones to recieve our lower volume/raise volume keys -- Steam should handle these.
2022-01-31 20:39:35 +00:00
Joshua Ashton
79f66f9729 steamcompmgr: Warp cursor off of Steam when cursor is hidden
Stops misleading hover events from happening while also not intefering with touch.
2022-01-24 11:38:41 -08:00
Joshua Ashton
ca8fd6552a wlserver: Move commit queues to per-xwayland server, rather than global 2022-01-20 07:11:40 +00:00
Joshua Ashton
1536604533 wlserver: Handle mousemotion only for focused server 2022-01-20 07:11:40 +00:00
Joshua Ashton
582da1d967 steamcompmgr: Split globals into xwayland_ctx_t
Doesn't fully support multiple xwaylands or have all the infrastructure for that yet. This just splits the globals out for now and passes the ctx around.
2022-01-20 07:11:40 +00:00
Joshua Ashton
3037f37ed0 mangoapp: only send updates when window exists 2022-01-11 00:09:33 +00:00
FlightlessMango
0b6d3607e4 mangoapp: frametime message queue
Co-Authored-By: Martin Roukala <martin.roukala@mupuf.org>
2022-01-11 00:09:33 +00:00
Joshua Ashton
589fd61d58 rendervulkan: Refactor to use shared_ptr for VulkanTexture_t 2021-12-17 15:43:26 -08:00
Joshua Ashton
93e4d94a78 steamcompmgr: Add --cursor-hotspot
Allow setting the hotspot for the custom cursor.
2021-11-26 21:45:39 +01:00
Simon Ser
e8dab4efe0 Drop unnecessary typedef 2021-11-10 18:30:47 +01:00
Pierre-Loup A. Griffais
26aeebf11d steamcompmgr: publish input change count 2021-10-17 20:17:30 -07:00
Pierre-Loup A. Griffais
ab72155ce0 steamcompmgr: some cursor hiding improvements
Absorb 5 moves for auto-hide purposes instead of 3. Our nudge is 2 moves,
and we can warp on top of that, so we weren't counting everything.

Hide before changing mouse input focus and the warp that ensues.

Re-arm warp count when changing mouse input focus, so doing it repeatedly
with the same window doesn't eventually unhide despite no input.
2021-09-12 23:21:35 -07:00
Joshua Ashton
0b5764195e Add setCursorImage to MouseCursor 2021-09-01 18:33:57 +02:00
Simon Ser
82ef0372d5 Introduce thread-safe take_screenshot 2021-08-31 17:06:49 +02:00
Simon Ser
33f207d6a1 Replace nudge X11 events with pipe
Avoids the roundtrip through the X11 server. Avoids having to connect
to the X11 server from multiple threads.
2021-06-10 14:49:02 +02:00
Pierre-Loup A. Griffais
0396468a1d steamcompmgr: scale touch coordinates to the right window
Was erroneously using base layer size even if overlay had touch input focus.
2021-05-28 13:57:11 -07:00
Jan Beich
e8c9098187 steamcompmgr: drop unused private field after f7d815a203
In file included from ../src/steamcompmgr.cpp:74:
src/steamcompmgr.hpp:75:7: warning: private field 'm_hasPlane' is not used [-Wunused-private-field]
        bool m_hasPlane;
             ^
2020-10-22 10:23:40 +02:00
Pierre-Loup A. Griffais
bff790eccb steamcompmgr: gracefully exit imageWaitThread and steamcompmgr loop. 2020-09-13 00:31:52 -07:00
Pierre-Loup A. Griffais
d7a85b00d9 sdlwindow: mimic window shown. 2020-09-13 00:19:02 -07:00
Joshua Ashton
325445a061 Add nano sleep helper functions 2020-09-12 22:26:31 -07:00
Joshua Ashton
d49c95569b Add get_time_in_nanos to header 2020-09-12 22:26:31 -07:00
Pierre-Loup A. Griffais
81b8e8c33c steamcompmgr: ignore vblank messages if we get them too late. 2020-09-01 22:59:44 -07:00
Simon Ser
c2d9b23d08 Hold buffers till steamcompmgr processes them 2020-09-01 12:36:35 -07:00
Pierre-Loup A. Griffais
7fedd8251b steamcompmgr: zero-initialize some cursor stuff that used to be global. 2020-08-28 00:39:54 -07:00
Pierre-Loup A. Griffais
69bcb1b339 Revert "Hold buffers till steamcompmgr processes them"
This reverts commit 98e263c37d.
2020-07-24 15:01:33 -07:00
Simon Ser
98e263c37d Hold buffers till steamcompmgr processes them 2020-07-23 22:26:06 +02:00
Pierre-Loup A. Griffais
064d132c93 wlserver: Fix use-after-free of wlr_surface in steamcompmgr. 2020-07-03 15:05:00 -07:00
Pierre-Loup A. Griffais
575171360b wlserver: properly handle touch for scaled windows.
Gets scale from steamcompmgr in an extremely safe and elegant way.
2020-07-02 17:40:31 -07:00
Simon Ser
bae255ee1a
Get rid of C_SIDE
wlroots headers can mostly be included with extern "C" blocks. Two
exceptions are the use of `static` for array args and `class` as a
struct field. These can be #define'ed to avoid C++ build errors.

This allows the whole project to be built as a single C++ codebase,
without having to maintain hybrid header files.
2020-06-11 12:44:36 +02:00
Roman Gilg
c2058733e3 Revert "refactor: remove unneeded cursor query functions"
This reverts commit 9547ec9a15.
2020-04-01 22:41:50 +02:00
Roman Gilg
4565766cc5 Revert "refactor: remove unneeded cursor calls on paint"
This reverts commit be1ff3d903.
2020-04-01 22:41:40 +02:00
Roman Gilg
be1ff3d903 refactor: remove unneeded cursor calls on paint
It is enough to get the global cursor location when repainting it. So we do not
need to query the relative position. If later on we find this is not right we
should be still able to get the relative position from the surface position
instead of calling into XWayland.

Also it is not expected and apparently unnecessary to move the cursor in the
paint function. Therefore remove this call too.
2020-03-10 01:55:58 +01:00
Roman Gilg
9547ec9a15 refactor: remove unneeded cursor query functions
With cursor position going through global variables we do not need to query the
global position anymore. Remove the MouseCursor function for that.

Furtheron the relative position getter is also not necessary, but let's remove
this one in a separate commit.

This commit also adds a debug line for debugging flaky focus changing.
2020-03-10 01:55:58 +01:00
Roman Gilg
f7d815a203 refactor: add cursor class
Puts all cursor relevant code into a single class. Preparation for getting
cursor movement directly through libinput.
2020-03-10 01:55:58 +01:00
Pierre-Loup A. Griffais
4ca73da9f6 vblankmanager: initial system to let steamcompmgr know when to repaint
For now just mark one repaint per refresh interval without any particular
alignment, as that can be hard to get in nested. We'll use the display
timing extensions for that later.

We'll have it align properly in embedded mode soon.
2020-01-26 14:59:51 -08:00
Pierre-Loup A. Griffais
4079d0c785 steamcompmgr: rework a couple of things to plan for decoupling paints
- Add a commit wait thread that just waits for the work associated with
   an in-bound dma-buff is done. We'd like to be getting a fence directly
   from Wayland, but in the absence of that we'll make our own by tapping
   into implicit-sync, DX11-style. gpuvis logging of the outcome of the
   waits in the thread are consistent with the end of GPU work.

 - Rework wayland commit handoff between wlserver and steamcompmgr to let
   steamcompmgr have full access to the commit queue, letting it remove
   elements in the middle and still keep going, compared to the previous
   interface. This lets steamcompmgr get one commit per window per loop,
   for now. We should be able to kick off waits and ref/unref resources
   for all pending commits soon, with some work on the accounting first.

This should also fix an issue introduced recently where the overlay
could get really starved in embedded mode, as we were just getting
the first commit in the queue for a single frame.
2020-01-23 00:52:17 -08:00
Pierre-Loup A. Griffais
1830b53c2e steamcompmgr.cpp: rise 2020-01-22 21:50:01 -08:00
Renamed from src/steamcompmgr.h (Browse further)