Commit graph

24 commits

Author SHA1 Message Date
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
cf16f59e84 steamcompmgr: exit when subcommand exits, if there is one 2020-01-22 22:34:38 -08:00
Pierre-Loup A. Griffais
1830b53c2e steamcompmgr.cpp: rise 2020-01-22 21:50:01 -08:00
Pierre-Loup A. Griffais
3ca59feabd inputsdl: grab cursor when focused, send mouse input through X.
This more or less makes everything pretty playable.
2020-01-18 20:37:11 -08:00
Pierre-Loup A. Griffais
19e2e511b6 sdlinput: nested keyboard support. 2020-01-18 15:10:14 -08:00
Pierre-Loup A. Griffais
bb52b60301 wlserver: some more basic tweaks for touch logic.
Add primitive hold-n-drag.
2020-01-17 03:27:55 -08:00
Pierre-Loup A. Griffais
56b2aa2d92 wlserver: wire kb+mouse+touch input coming from wlr, mainly libinput.
Add the concept of a cursor coordinate when that initializes when focusing
a surface.

Put some super primitive tap to left-click emulation in there for now.
2020-01-17 02:36:53 -08:00
Pierre-Loup A. Griffais
3eacb24d01 steamcompmgr: fix launchers/etc not displaying at first.
If a window already has a buffer attached by the time we figure out it
exists and sets its role, we missed the initial commit and will never
get it. For windows that animate interactively, that's fine, as we'll
get another one soon enough, but 2D apps like launchers repaint on
demand, so it's not fine there.
2020-01-17 00:45:21 +00:00
Pierre-Loup A. Griffais
c0a793e290 wlserver: handle EINTR in the main loop epoll.
Fixes the server going away when we need it most, or when attaching GDB.
2020-01-15 17:48:20 -08:00
Pierre-Loup A. Griffais
901103af3f wlserver: anti-fd exhaustion measures.
If we only take the first commit, we leave a bunch in the queue, which
makes us that much more likely to run out of FDs when importing the
myriad of buffer referenced coming from a non-vsynced client. Fixes
crashes with vblank_mode=0 glxgears after the recent changes.

We were always subject to such crashes, just getting lucky/fast before.
2020-01-13 22:09:55 -08:00
Pierre-Loup A. Griffais
e637bdad10 steamcompmgr: gpuvis frame cadence debugging.
Now that things are generally more stable, let's take a look.
2020-01-13 18:45:53 -08:00
Pierre-Loup A. Griffais
d357278b98 Add SDL input handling in the nested case, plumb basic mouse stuff.
Relative mouse broken right now.
2020-01-02 19:26:53 -08:00
Roman Gilg
b11f46d4e7 fix: handle terminate better 2020-01-02 00:00:34 +01:00
Pierre-Loup A. Griffais
010ba40691 wlserver: Flush clients on any unlock.
This should make steamcompmgr messages actually go when we send them.

We're pulling too many frames out of "vsynced" clients now, need to instill
a real frame cadence based on vblank and notify based on that.
2020-01-01 15:30:38 +09:00
Pierre-Loup A. Griffais
c70e71d1e2 I think I've come to terms with not building wlr stuff as C++.
Might as well clean up some of the initial madness.
2020-01-01 15:30:38 +09:00
Pierre-Loup A. Griffais
56c1fd217e wlserver: I think that worked, now make it not destroy a core. 2020-01-01 15:30:38 +09:00
Pierre-Loup A. Griffais
24c10095e5 wlserver: Add naive locking to try to see if that fixes hangs for good.
Change the wl event loop to busy-wait for now as that's easiest to make
unlock periodically.
2020-01-01 15:30:38 +09:00
Roman Gilg
b966a74e0c feat: add signal handlers 2020-01-01 15:30:38 +09:00
Pierre-Loup A. Griffais
67c5affe47 Start of some DRM plumbing, make it work again outside of X. 2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
a58dfdd203 Only acknowledge frame_done once per commit, otherwise we pull unwanted
frames out of thin air.

Also use dummy ClientMessage events to nudge steamcompmgr's event loop,
Expose events have a meaning and we don't want to confuse some clients.
2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
985d6e40a7 Use actual display name instead of relying on the environment. 2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
2bdbd01902 Some cleanup, 2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
77d0e72c69 Make commandline coexist across both sides, plumb nested size control. 2020-01-01 15:30:37 +09:00
Pierre-Loup A. Griffais
11d50c1618 CHOP 2020-01-01 15:30:37 +09:00