Commit graph

277 commits

Author SHA1 Message Date
Ian Douglas Scott
0636bcdef3 Add workspace_overview_is_open function; put in a utils::quirks mod
This is increasingly not just related to screencopy, so it's weird to
add there. I don't see any other module that fits, so add one called
"quirks" (like the Linux kernel uses for device-specific handling in
generic drives).
2024-07-15 17:12:05 +02:00
Ian Douglas Scott
355b142c52 When cosmic-workspaces is shown, render only layer-shell surfaces
This allows `cosmic-workspaces` to rely on cosmic-comp for rendering the
background, and just have transparency. This should be a more reliable
and performant way of doing things, at least for now.

Instead of adding another opaque bool argument, this defines an
`ElementFilter` enum, which makes calls more readable.

Window surfaces are still included in screencopy, as needed for the
workspace previews.
2024-07-15 17:12:05 +02:00
Ian Douglas Scott
94fecec9cb Add a SplitRenderElements type, with useful methods
`(w_elements, p_elements)` tuples are used in a bunch of places. A
struct with named fields is generally an improvement just due to the
fact the order is non-obvious.

But we can also add methods. In particular,
`extend_from_workspace_elements` abstracts out some of the more
redundant code in `workspace_elements`.

It would be nice to avoid allocation everywhere, but iterators would
complicate lifetimes, run into issues with needing multiple mutable
borrows to things like the `Renderer`, and be awkward in certain
functions without generator syntax. In any case, cosmic-comp already
relies on allocating vectors here.

If this abstraction is commonly useful in compositors, perhaps it could
be moved to Smithay.
2024-07-15 17:12:05 +02:00
Victoria Brekenfeld
c506d94ac8 shell: Don't consider active overviews animations 2024-07-15 16:31:24 +02:00
Victoria Brekenfeld
2d0f1cbf2b chore: smithay update 2024-07-02 13:15:30 +02:00
Victoria Brekenfeld
06c12040f9 render: Fix grey screen on workspace switch 2024-06-28 12:31:50 +02:00
Victoria Brekenfeld
8da3ac6d75 kms: Fix frame scheduling 2024-06-27 18:15:18 +02:00
Victoria Brekenfeld
16691581ff render/cursor: Don't crash for themes with zero delay 2024-06-27 16:41:38 +02:00
Victoria Brekenfeld
26ccb653b7 output: Store position as u32 and offset bad configs 2024-06-27 12:34:51 +02:00
Victoria Brekenfeld
76fca0c591 chore: Fix smithay version 2024-06-26 16:18:08 +02:00
Victoria Brekenfeld
449048bdc5 kms: Fix unreachable code during forced queued redraws 2024-06-26 12:59:33 +02:00
Victoria Brekenfeld
707eace679 kms: Don't leak an EGLImage on every import 2024-06-26 12:59:33 +02:00
Victoria Brekenfeld
eea93d543e state: Correctly update primary output 2024-06-26 12:59:33 +02:00
Victoria Brekenfeld
ddcb435632 debug: Fix running with new kms backend 2024-06-26 12:59:33 +02:00
Victoria Brekenfeld
bfbf20d61d kms: fixup device-usage logic 2024-06-26 12:59:33 +02:00
Victoria Brekenfeld
a97279147e cursor: Re-enable cursor image cache 2024-06-26 12:59:33 +02:00
Victoria Brekenfeld
977ad674e5 kms: Fix initial output placement 2024-06-26 12:59:33 +02:00
Victoria Brekenfeld
12fab6e220 kms: Don't block surface-threads on startup cond 2024-06-26 12:59:33 +02:00
Victoria Brekenfeld
31ff17a323 kms: Limit frame-callbacks to one per refresh 2024-06-26 12:59:33 +02:00
Victoria Brekenfeld
92f3dbce01 chore: Cleanup 2024-06-26 12:59:33 +02:00
Victoria Brekenfeld
800e01a484 kms: Fix shaders for offscreen rendering 2024-06-26 12:59:33 +02:00
Victoria Brekenfeld
952f73dcc4 kms: Don't send render-states for mirrored renders 2024-06-26 12:59:33 +02:00
Victoria Brekenfeld
1a28e43aa7 kms: Fix broken mirroring with different scales but same mode 2024-06-26 12:59:33 +02:00
Victoria Brekenfeld
7373567af1 kms: Fix output mirroring not working across gpus 2024-06-26 12:59:33 +02:00
Victoria Brekenfeld
cc0bbb61e3 debug: Drop FPS struct for kms timings 2024-06-26 12:59:33 +02:00
Victoria Brekenfeld
469a366207 kms: New backend
New backend utilizing a thread per surface for precise frame
scheduling.
2024-06-26 12:59:33 +02:00
Victoria Brekenfeld
3b7bba3add debug: Drop puffin, interactivity, renderdoc 2024-06-26 12:59:33 +02:00
Victoria Brekenfeld
cf0b0f9d2d chore: Move some rendering-related state into the shell 2024-06-26 12:59:33 +02:00
Victoria Brekenfeld
9e05a84db2 state: Split up send_frames 2024-06-26 12:59:33 +02:00
Victoria Brekenfeld
c7d50e7c5b seat: Make render-related state thread-safe 2024-06-26 12:59:33 +02:00
Victoria Brekenfeld
bd58481d19 element: Introduce CosmicMappedKey for safely hashing windows across threads 2024-06-26 12:59:33 +02:00
Victoria Brekenfeld
f481112cf9 output-configuration: Test all outputs at once 2024-06-26 12:59:33 +02:00
Victoria Brekenfeld
e78e199663 chore: Update smithay for thread-safety 2024-06-26 12:59:33 +02:00
Ian Douglas Scott
f2342f56c1 Update to latest Smithay version 2024-06-19 12:39:16 +02:00
Ian Douglas Scott
4f076e0753 Update smithay, with xwayland shell, Cow, etc. 2024-05-21 19:31:50 +02:00
Ian Douglas Scott
dfb3bea595 Disable Smithay use_system_lib to use Rust backend to wayland-rs
It seems this was needed for `renderer.bind_wl_display`. But only in the
X11 and winit backends. Unless there's some less obvious reason to use
the `use_system_lib` feature, it seems undesirable and avoidable.

This uses `WlDrmState` to provide `wl_drm` on those backends instead.
2024-05-15 13:12:24 +02:00
Ian Douglas Scott
47f8c1da38 Define a advertised_node_for_client instead of duplicating code
Can't use this in `SecurityContextHandler` since it only has a `ClientId`,
not a `Client`.
2024-05-15 13:12:24 +02:00
Ian Douglas Scott
73b12194c0 Update smithay 2024-05-10 13:51:28 +02:00
Ian Douglas Scott
a9740e5040 Change how COSMIC_ENABLE_WAYLAND_SECURITY/privileged is handled
Manually starting `cosmic-panel` was not working properly in release
builds, because without `cfg!(debug_assertions)`, the `privileged` flag
wasn't sent on the panel, so it couldn't be propagated to the applets,
which also fail the `client_has_no_security_context()` check.

I don't see a way to have both the `cfg!(debug_assertions)` check and
`COSMIC_ENABLE_WAYLAND_SECURITY`. Now only the latter is used, and it
determines the value of `privileged` for clients started normally. In
the future, we could make the default value of
`COSMIC_ENABLE_WAYLAND_SECURITY` depend on `cfg!(debug_assertions)` if
desired.

This also corrects the inconsistency that the `cfg!(debug_assertions)`
check wasn't applied to the render-node-specific Wayland sockets.
2024-05-08 13:10:07 +02:00
Victoria Brekenfeld
3eb6c02008 kms: Output mirroring 2024-05-07 12:25:15 +02:00
Ian Douglas Scott
916b7729a5 fix: Add Element::kind method to CosmicElement
The default implementation always returned `Kind::Unspecified`. Instead,
we should pass this method through to the wrapped element.

This fixes the use of cursor planes. Now trace logs show Smithay
assigning an element to the cursor plane, and tools like `drm_info` show
the cursor plane with an `FB_ID` attached.
2024-04-17 12:01:25 +02:00
Victoria Brekenfeld
5d5a510691 state: Move shell behind RwLock 2024-04-16 18:50:54 +02:00
Victoria Brekenfeld
647deb81f1 shell: Move seats into shell 2024-04-16 18:50:54 +02:00
Ian Douglas Scott
f2efc5d56f shell: Fix MoveGrab with touch not on output pointer is on 2024-04-15 11:37:03 +02:00
Ian Douglas Scott
f83d80d471 Exclude DnD surfaces from workspace capture
Fixes https://github.com/pop-os/cosmic-workspaces-epoch/issues/25.
2024-04-11 12:36:03 +02:00
Ian Douglas Scott
de544e1d31 Update smithay to latest commit 2024-04-09 11:26:36 +02:00
Victoria Brekenfeld
b40d153809 cosmic-screencopy-v2 2024-03-25 16:55:31 +01:00
Victoria Brekenfeld
55eb2fe88e xwayland: Globally track stacking order 2024-03-25 12:51:01 +01:00
Ryan Brue
fc2173d028 feat: workspace switching touchpad gestures 2024-03-22 12:12:25 +01:00
Victoria Brekenfeld
f1d8225ddb kms: Disable frame time prediction (for now) 2024-03-21 17:49:30 +01:00