Commit graph

322 commits

Author SHA1 Message Date
Ian Douglas Scott
b685512127 Migrate away from Rectangle::from_loc_and_size
Deprecated in `smithay` by https://github.com/Smithay/smithay/pull/1621.
2025-01-07 12:50:35 +01:00
Victoria Brekenfeld
db13eea91c shell: Allow active workspace to be None 2025-01-06 20:23:05 +01:00
Victoria Brekenfeld
546966bf15 drm_lease: Disable overlay planes when active 2025-01-06 20:23:05 +01:00
Victoria Brekenfeld
8b87d6524e kms: Use new DrmOutput api 2025-01-06 20:23:05 +01:00
Victoria Brekenfeld
e356e3c589 xdg_activation: Also consider tiled windows 2025-01-06 20:23:05 +01:00
Victoria Brekenfeld
61b0dddf50 chore: Fix a few warnings 2025-01-06 20:23:05 +01:00
Victoria Brekenfeld
f12f4db0e1 chore: Update smithay 2025-01-06 20:23:05 +01:00
Ian Douglas Scott
1118aa2877 When removing output global, use disable_global, remove with timer
This should fix an issue where output hotplug can sometimes cause
clients (including XWayland) to crash with a protocol error trying to
bind the output.

Using a timer doesn't seem ideal, but seems to be the correct way to do
this at present. Wlroots `wlr_global_destroy_safe` is basically the same
as this.

Adding a `LoopHandle` argument to `OutputConfigurationState::new` seems
awkward, but maybe better than a handler method for removing globals.
(`IdleNotifierState::new` also takes a `LoopHandle`). Perhaps Smithay
could provide some kind of helper for this.
2024-12-19 00:17:38 +01:00
Ian Douglas Scott
6707c92522 toplevel-info: Fix behavior with multiple instances of global
Instead of looking for toplevel handles for the client, look for
toplevel handles for the specific global instance.
2024-12-14 09:32:11 +01:00
Ian Douglas Scott
0d0b89d538 Call data_init.init even if weak references are not alive 2024-12-11 10:58:42 +01:00
Ian Douglas Scott
16a1214207 output_configuration: Use unwrap in calls to Resource::data
Having if conditions for these is unnecessary when they should never be
reached. (This is commonly unwrapped in `smithay`.)

Some of these else conditions fail to call `data_init.init` with a new
id, so they'd result in a crash later anyway.
2024-12-11 10:58:42 +01:00
Ian Douglas Scott
fdfc5cbeb4 Use WeakOutput when accessing data of ZwlrOutputHeadV1
It seems cd9ff0b7bb broke mirroring.
Though it's also a bug that if any of these if conditions is not met,
the data will not be initialized.

Fixes https://github.com/pop-os/cosmic-epoch/issues/1341.
2024-12-11 10:58:42 +01:00
Ashley Wulber
2c01c94477 fix: activation of an element outside the current workspace
If the activated element is outside the current workspace, its workspace should be set to urgent
2024-12-10 17:37:01 +01:00
Ashley Wulber
76863aaf9b fix: filter by active workspace in overlap notify 2024-12-05 18:20:10 +01:00
Victoria Brekenfeld
fc84fa9948 shell: Fix windows global geometry to include ssd 2024-12-05 18:20:10 +01:00
Alyssa Ross
69d251fb74 screencopy: don't force opaque window backgrounds
This meant that, for windows that were not fully opaque, there was no
way to capture their transparency.  No way to put a window with
transparency on top of a background in OBS, for example.
2024-12-02 18:02:48 +01:00
Ashley Wulber
a14d075aa0 refactor: add namespace 2024-11-27 17:23:14 +01:00
Ashley Wulber
60558e18fd overlay-notify: Implement handler 2024-11-27 13:20:18 +01:00
Ashley Wulber
895261c2bf overlap-notify: Implementation fixes 2024-11-27 13:20:18 +01:00
Victoria Brekenfeld
81b9fb179b output-configuration: Support cosmic-ext v2 2024-11-27 09:37:01 +01:00
Victoria Brekenfeld
80965a61b9 kms: Adaptive VRR support 2024-11-27 09:37:01 +01:00
Victoria Brekenfeld
d72bf54628 deps: Update smithay 2024-11-27 09:37:01 +01:00
Ian Douglas Scott
cd9ff0b7bb output_configuration: Use WeakOutput as user data instead of Output 2024-11-18 18:24:53 +01:00
Ian Douglas Scott
8d7f491830 Use WeakOutput instead of Option<WeakOutput> 2024-11-18 18:24:53 +01:00
Ian Douglas Scott
61692b21ad Run cargo format 2024-11-18 18:24:53 +01:00
Ian Douglas Scott
4db2e3ec25 Use new primary scanout output if old output is disabled
`Output` in Smithay doesn't track if the output still exists, other than
based on whether or not it has strong references. Which doesn't seem to
be working correctly.

There may be leaked strong references to `Output`s somewhere, and maybe
Smithay should track if an output is still valid, generally when it is
exposed as a Wayland global
(https://github.com/Smithay/smithay/issues/1584). But a check like this
works for now.

Addresses https://github.com/pop-os/cosmic-comp/issues/985.
2024-11-13 23:34:30 +01:00
Ian Douglas Scott
9f354ab45f output_configuration: Set enabled to false in remove_heads
`add_heads` will set it to `true` again, if used on the same `Output`.
It doesn't like like cosmic-comp's usage of this does that currently
though.
2024-11-13 23:34:30 +01:00
Ian Douglas Scott
90883c6ab1 Add cosmic_atspi_v1 protocol
Used to provide a backend for `AtspiDevice` in `at-spi2-core`, so Orca
keybindings can work.
2024-10-31 18:49:56 +01:00
Victoria Brekenfeld
743e5d4360 toplevel_info: Fix racy data creation 2024-10-25 11:05:41 +02:00
Ian Douglas Scott
ea27ec5e28 DPMS with wlr-output-power-management-unstable-v1 protocol 2024-10-25 10:31:24 +02:00
Ian Douglas Scott
540ed3d170 Use to_ne_bytes() instead of unsound Vec::from_raw_parts
`from_raw_parts()` is only sound if the alignment is the same, so it
can't be used to covert to a `Vec<u8>` from a type with a greater
alignment.

This isn't hard to avoid, luckily.
2024-10-21 18:10:53 +02:00
Ian Douglas Scott
a96394f7a6 Update egui, smithay-egui, smithay 2024-10-02 23:55:10 +02:00
Christian Meissl
afdb656778 dnd: correct handling of cursor buffer offset 2024-09-23 11:13:21 +02:00
Victoria Brekenfeld
bd04d68106 overlap-notify: Initial implementation 2024-09-23 10:55:00 +02:00
Victoria Brekenfeld
9c7c41c508 toplevel-info/mgmt: Update to v2/v3 2024-09-23 10:55:00 +02:00
Victoria Brekenfeld
fc689118f8 toplevel_management: Don't warp cursor on activate 2024-09-09 20:02:56 +02:00
may
0ffe6ae718
wayland: Implement cursor-shape-v1 2024-09-09 16:21:27 +02:00
skewballfox
7da0bc430a added cursor_follows_focus and focus_follows_cursor 2024-09-04 20:22:40 +02:00
julianbraha
52280e9823 Remove unnecessary casting 2024-09-03 16:08:17 +02:00
julianbraha
52ad30c264 Remove unnecessary lifetimes 2024-08-30 17:53:56 +02:00
Ian Douglas Scott
ed64e26faf Add xdg-foreign-unstable-v2 protocol 2024-08-30 13:08:08 +02:00
Ian Douglas Scott
1342c000ab Add ext-foreign-toplevel-list-v1 protocol 2024-08-29 17:04:12 +02:00
Ian Douglas Scott
536484e9da screencopy: Use buffer age of 0 for render to temporary buffer
It seems we allocate a new `GlesRenderbuffer` every time we screencopy
to an shm buffer.

We probably should use a more complicated approach to do proper damage
tracking without any unnecessary copies, and re-using the GPU buffer,
but as long as this allocates a buffer the age of that buffer should be
treated as `0`.

Fixes corruption in cosmic-workspaces when shm screencopy is used. (For
instance, when Cosmic is run with software rendering.)
2024-08-27 23:28:13 +02:00
João Capucho
3c24934f48 Track if a move or resize request is client initiated 2024-08-23 17:18:39 +02:00
Ian Douglas Scott
3625454420 Use monotonic time instead of 0 for motion events
Update to https://github.com/Smithay/smithay/pull/1509, and adopt a
similar change.
2024-08-22 07:22:44 -06:00
Ian Douglas Scott
889499b64d Add single-pixel-buffer-v1 2024-08-21 09:26:13 -06:00
Ian Douglas Scott
e119f10cdc toplevel-management: Set active output if changed, and move cursor
Previously, alt-tab wouldn't actually focus a window if it was on
another output, since the active output/workspace was unchanged.

We need to move the cursor if we activate a window on another output.
2024-08-21 05:10:51 -06:00
Ian Douglas Scott
87020c79ba Define a RendererRef enum, referencing multi or glow renderer
Avoids a little duplication (matching two variants, instead of three
backends).

The behavior, including errors and panics, should be unchanged for now.
Performance should also not be impacted.

This should help for adding llvmpipe rendering without a device node on
the kms backend, or for adding a variant for pixman.
2024-08-07 10:49:39 -07:00
Ashley Wulber
b8eaf5dcb4 chore: update smithay 2024-08-02 15:54:05 +02:00
Ian Douglas Scott
c1bf410466 toplevel-info: Fix race between binding wl_ouput and output_enter
This fixes an issue with `cosmic-panel` where, when a workspace is moved
back to an output after a monitor is disconnected and reconnected, the
panel doesn't hide because `cosmic-panel` thinks no toplevel is open on
that monitor.

After some testing, it seems `output_enter` isn't being sent here. In
particular, the `output_leave` call happens before the client binds the
`wl_output`, so there is no `wl_output` to send in an event yet.

This is addressed by keeping track of a set of `wl_output`s that we have
sent the event to. So if an output is bound, `refresh` can add it to
this list and send the event.

This is not needed for workspaces (though it could be done similarly)
since the handle objects are created by server events. So no race should
occur as long as the workspaces global is bound before the toplevel info
one.
2024-08-01 16:35:26 +02:00