Commit graph

297 commits

Author SHA1 Message Date
Ian Douglas Scott
826ad9a91a chore: Update smithay 2026-04-27 14:51:46 -07:00
Victoria Brekenfeld
5216eb50ba chore: Fix remaining clippy lints 2026-03-24 16:23:43 +01:00
Vukašin Vojinović
edc7758967 chore: update libcosmic
Improves header bar widget behavior.
2026-03-18 18:19:03 +01:00
Vukašin Vojinović
2ca99c670a chore: clippy 2026-03-18 18:19:03 +01:00
Vukašin Vojinović
d02051d16a chore: remove unneeded dependencies 2026-03-18 18:19:03 +01:00
RoyalOughtness
98cca4f3b7 feat: add --no-xwayland argument for running without Xwayland
This leaves the default behavior in place. When --no-xwayland
is not passed, Xwayland is started. If it is passed, then
starting Xwayland is skipped.
2026-03-09 12:17:13 -06:00
Ian Douglas Scott
2ea1186723 kms: Import on device supporting format, if not advertised device
Fixes https://github.com/pop-os/cosmic-epoch/issues/2978.

This reverses the part of
ca00df0b37 that made it
only try import on the advertised GPU. But this version avoids
initializing an EGL context simply to re-check the supported texture
formats.
2026-02-06 11:58:27 -08:00
Ian Douglas Scott
e1342fb2e3 image-copy: Use "buffer age" of 1 for capture
The logic `age_for_buffer` used seems to be a misinterpretation of the
protocol.

The wording is a little unclear, but it seems tracking buffer age is the
responsibility of the client, and the client is required to accumulate
damage and pass it in `damage_buffer`.

Our clients initially weren't doing that correctly. I updated
xdg-desktop-portal-cosmic to use `damage_buffer` after testing on
wlroots, and cosmic-workspaces was recently updated as well.
2026-02-05 02:01:14 +01:00
Ian Douglas Scott
9bc1b6e1ee image-copy: Use damage_output() for additional damage
The important change here is that we now apply the additional damage
first, instead of using `.extend()` to add it after other elements. This
is important since `OutputDamageTracker` will ignore our damage elements
if there are behind an element with an opaque region.

This also makes things a bit simpler, especially `take_screencopy_frames()`,
which no longer needs a mutable references to extend then truncate.

The implementation of `OutputDamageTracker` isn't entirely clear, but as
far as I can tell this is intended to work, and it seems to work in some
testing.
2026-02-05 02:01:14 +01:00
Ian Douglas Scott
cac7a5aca6 image-copy: Use abstraction that's now provided by Smithay
This doesn't change much, since the Smithay implementation is based on
the `cosmic-comp` version, but made more generic. We provide our own
implementation for our workspace capture protocol, but otherwise Smithay
handles the boilerplate now.

This should not cause any change in behavior.
2026-02-05 02:01:14 +01:00
Victoria Brekenfeld
7b8fca9ece wayland/dmabuf: Send initial surface feedback 2026-01-08 00:20:18 +01:00
Victoria Brekenfeld
d17a4ead68 kms/surface: Simpify surface feedback creation 2026-01-08 00:20:18 +01:00
Victoria Brekenfeld
85d8b8dc06 kms/surface: Clear feedback on resume 2026-01-08 00:20:18 +01:00
Victoria Brekenfeld
2eff4607bd kms/device: Advertise texture_formats instead of render_formats 2026-01-08 00:20:18 +01:00
Victoria Brekenfeld
ca00df0b37 kms: Track active clients instead of active buffers 2026-01-08 00:20:18 +01:00
Victoria Brekenfeld
6288789842 kms: Only pause device after all surfaces are successfully suspended 2025-12-04 22:29:39 +01:00
Victoria Brekenfeld
7c3e18b588 surface: Don't crash due to weird state after resume 2025-12-04 22:29:39 +01:00
Vukašin Vojinović
1f7f0c70b7 chore: format for Rust 2024 2025-10-22 23:55:11 +02:00
Vukašin Vojinović
0a8da05847 fix(kms): early exit when iterating over crts
Clippy noted that this loop doesn't actually loop, so maybe this fixes some issues.
2025-10-22 23:55:11 +02:00
Vukašin Vojinović
b6c5d00bec cargo fmt 2025-10-22 23:55:11 +02:00
Vukašin Vojinović
5e9ea93819 chore: manual clippy 2025-10-22 23:55:11 +02:00
Vukašin Vojinović
0847247c33 chore: clippy 2025-10-22 23:55:11 +02:00
Victoria Brekenfeld
b83e9f1d32 config: Make read_outputs failable
Previously we ignored when we had no output configuration
**and** failed to apply the automatically created one.

This leads to two problems:
- If this happens on startup, we end up with no outputs being added to the shell and we quit.
- If this happens later, we might end up in an inconsistent state, where the shell thinks we have an output, when it didn't light up for similar reasons.

Thus `read_outputs` is failable and handling that very much depends on
the where is was called from, because `read_outputs` doesn't know what
configuration was active before.

Thus make it failable and provide useful mitigations everywhere
possible:
- Try to enable just one output in case we fail on startup.
- Don't enable any additional outputs, when we fail on hotplug.
- Log the error like previously in any other case (and come up with more
  mitigations, once we understand these cases better).
2025-09-15 09:13:00 +02:00
Victoria Brekenfeld
cd1117080c kms: Don't join on DrmSurface drop 2025-09-11 00:20:14 +02:00
Victoria Brekenfeld
a0f8c4ed99 kms/surface: Cleanup unused software-rendering code 2025-09-08 13:07:40 +02:00
Victoria Brekenfeld
3935de018e kms: evdi cursor work around 2025-09-08 13:07:40 +02:00
Victoria Brekenfeld
b7fd4bc781 kms/device: Fix render_formats 2025-09-08 13:07:40 +02:00
Victoria Brekenfeld
18a1ba2d26 kms: Don't consider software devices for primary 2025-09-08 13:07:40 +02:00
Victoria Brekenfeld
6eb5ca1f94 kms: Close drm fds via session 2025-09-08 13:07:40 +02:00
Victoria Brekenfeld
cad5ed8945 kms: Don't attempt dmabuf import on software devices 2025-09-08 13:07:40 +02:00
Victoria Brekenfeld
70cd1842c1 kms/device: Don't advertise drm_node on software devices 2025-09-08 13:07:40 +02:00
Victoria Brekenfeld
a840b52930 chore: smithay update 2025-09-08 13:07:40 +02:00
Ian Douglas Scott
3f74a22cca kms/surface: Fix transform used for blits
Use the same logic used `submit_buffer`. This fixes corruption in OBS
when trying to capture a rotated output.
2025-09-02 17:12:37 +02:00
Ashley Wulber
bb8e066d6d feat(config): load cosmic-randr output Lists 2025-08-26 11:30:56 -04:00
Ashley Wulber
416b66b776 refactor(output config): move to config crate
this allows the greeter to easily sync to the user config
2025-08-26 11:30:56 -04:00
Ian Douglas Scott
10c05bc1d4 kms/surface: Don't send screencopysuccess() until sync point is reached 2025-08-21 17:09:49 +02:00
Ian Douglas Scott
28e9024681 kms/surface: Define a PendingImageCopyData, instead of using tuple
Adding anything else to this tuple is awkward; defining a simple struct
makes this cleaner.

This also adds a `sync` property, which will come in handy later.
Containing simply the same-named argument that was passed to
`submit_buffer`.
2025-08-21 17:09:49 +02:00
Ian Douglas Scott
f0e0084608 Update smithay, and adjust to use sync points from blit calls 2025-08-21 17:09:49 +02:00
Vukašin Vojinović
7f7ab8bcbe chore: Rust 2024 edition
Set the formatting style to 2021 edition to avoid disrupting existing work.
Remove when possible.
2025-08-21 13:10:11 +02:00
Victoria Brekenfeld
310cf212eb kms/device: Don't reconfigure existing outputs on connector_added 2025-08-20 19:41:43 +02:00
Victoria Brekenfeld
74e90f793f state/lid-inhibit: Take current lid state into account 2025-08-11 18:47:57 +02:00
Victoria Brekenfeld
cb2289e7b1 kms: Don't reload outputs for every single event 2025-08-11 18:47:57 +02:00
Victoria Brekenfeld
6897f81984 kms/device: Don't re-enumerate disabled outputs 2025-08-11 18:47:57 +02:00
Christian Duvholt
1db1d8149b output_configuration: Set wlr_output_head serial number 2025-08-11 13:59:42 +02:00
Victoria Brekenfeld
680542e4e2 kms/surface: Don't attempt to use overlay planes during animations 2025-08-07 19:40:23 +02:00
Victoria Brekenfeld
66712009fb kms/surface: Only skip cursor updates if the application renders consistently 2025-08-07 19:40:23 +02:00
Victoria Brekenfeld
a2dda33abe kms: Add min_vrr refresh rate safety margin 2025-08-07 19:40:23 +02:00
Victoria Brekenfeld
db9380e6db kms: Fix direct scanout due to wrong node compare 2025-08-07 19:40:23 +02:00
Victoria Brekenfeld
7948a97334 kms/surface: Remove old feedback on node-removal 2025-08-04 17:11:22 +02:00
Victoria Brekenfeld
a409770df7 kms: Correctly handle the source node not being initialized 2025-07-31 19:12:10 +02:00