Commit graph

487 commits

Author SHA1 Message Date
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
Ashley Wulber
3465ce7602 feat: corner radius for CosmicMapped 2025-10-03 20:11:16 +02:00
Ashley Wulber
c6320eec0c fix: support per-corner radius
also adjusts the radius by half of the outline thickness. I believe this is the radius at the center of the outline.
2025-10-03 20:11:16 +02:00
Ashley Wulber
b3aa10436a feat: corner-radius protocol support 2025-10-03 20:11:16 +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
7684cd1b2c render: Fix shader obj leak 2025-09-08 14:47:06 +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
905d021552 screencopy: Use send_success_when_ready for other forms of capture
A little annoying to add a `loop_handle` argument to `render_output`,
but generally straightforward.
2025-08-21 17:09:49 +02: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
Ian Douglas Scott
2fbf0081ea Fix compile warnings on nightly
Should fix CI test.
2025-08-12 18:03:27 -04:00
Ian Douglas Scott
4031f584ef Don't crash if GreeterAccessibilityState::config() fails
`cosmic-comp` should run without needing the greeter to be running (or
installed).
2025-08-12 18:03:27 -04:00
Ashley Wulber
b3a67bca50 feat: sync state with greeter 2025-08-12 12:51:54 -04: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
be1424f1ca render/wayland: filter scanout candidates by frametime estimation 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
Victoria Brekenfeld
c688786d42 kms/device: Cleanup unused code 2025-07-28 17:46:46 +02:00
Victoria Brekenfeld
fd85e4ea56 kms: Don't incorrectly re-use iterator in update_surface_nodes 2025-07-28 17:46:46 +02:00
Victoria Brekenfeld
6492629f90 kms: Change awkward new trait to InnerDevice 2025-07-25 17:51:01 +02:00
Victoria Brekenfeld
87742c1e0c kms: Don't commit anything before updating the mode 2025-07-25 17:51:01 +02:00
Victoria Brekenfeld
e34a289c01 kms: lock during screen conf changes 2025-07-25 17:51:01 +02:00