Commit graph

26 commits

Author SHA1 Message Date
Ian Douglas Scott
094c28e105 cosmic-screencopy-v2 2024-03-25 10:24:47 -07:00
Ian Douglas Scott
5e290acbee Use log instead of println! 2024-03-06 14:05:32 -08:00
Ian Douglas Scott
7106001179 Address various warnings 2024-03-05 12:25:20 -08:00
Ian Douglas Scott
78b7bfe957 Use Wayland subsurfaces, dmabuf screencopy
More efficient than shm screencopy, and rendering an iced image into the
window. Done right, should espeically help with multiple GPUs, but more
testing and work is needed there.

Removes mmapping of dmabuf, which errored... I guess not allocated with
right options for that. Relevant only if we want a fallback/test that
involves reading dmabufs.

Using `OnDamage` doesn't seem to work correctly currently. Likely a
compositor issue.
2024-03-01 14:35:19 -08:00
Ian Douglas Scott
7ae2dc9e06 Fix reference to back buffer 2024-01-25 16:21:21 -08:00
Ian Douglas Scott
9faaa4d6c8 Use array instead of tuple for screencopy swapchain
Can switch to triple buffering by changing one character.
2024-01-25 16:16:26 -08:00
Ian Douglas Scott
6e422b740c Call attach_buffer_and_commit before reading front buffer
This way double buffering is somewhat useful; we can start another
capture before reading out the buffer.
2024-01-25 16:00:37 -08:00
Ian Douglas Scott
89910b8e75 Use double-buffering for screencopy
Currently this is unnecesssary, but it's needed if we use subsurfaces
(or import) instead of immedaitely converting to an image.
2024-01-25 15:58:34 -08:00
Ian Douglas Scott
6262329635 Clean up some of the screencopy code 2024-01-25 15:48:40 -08:00
Ian Douglas Scott
13b565e013 Add a ScreencopySession type
Allows cleaning up some of the relationship between `screencopy.rs` and
`capture.rs`, and groups variables that go together and are set to `Some`/`None`
together.

Should help for adding double buffering.
2024-01-25 15:44:30 -08:00
Ian Douglas Scott
43e9ef390a Move attach_buffer_and_commit 2024-01-24 16:07:00 -08:00
Ian Douglas Scott
6f1b391b00 Destroy screencopy session when not capturing 2024-01-24 15:59:18 -08:00
Ian Douglas Scott
14d2a66c9d Re-use screencopy session instead of creating one each frame 2024-01-24 15:29:03 -08:00
Ian Douglas Scott
5269356089 Use Weak<Capture> in session state 2024-01-24 13:59:18 -08:00
Ian Douglas Scott
80e4fb0227 Work around panic 2023-12-12 11:59:32 -08:00
Ian Douglas Scott
c939486ce6 Fix a panic 2023-12-06 15:35:25 -08:00
Ashley Wulber
791441ca10 refactor: single instance 2023-11-21 19:26:12 -05:00
Ian Douglas Scott
0c19ea7167 Add CaptureImage type 2023-11-16 19:38:42 -08:00
Ian Douglas Scott
39401bf3c3 screencopy: Pass the node we're using to attach_buffer
Seems to make sure the compositor renders workspace with that GPU, so it
actually captures successfully.
2023-11-09 13:45:28 -08:00
Ian Douglas Scott
c567cb30d3 Move Bufffer::new to AppData::create_buffer
Will be needed to add support for dmabuf buffers. Also slightly cleaner
in general.
2023-11-08 15:05:45 -08:00
Ian Douglas Scott
b1d986ee71 Remove workaround for compositor issue that should be fixed 2023-11-08 14:09:34 -08:00
Ian Douglas Scott
9598a9f8e4 Use WlOutput instead of output names for matching
With a shared wayland connection between the code here and iced, if we
don't bind outputs outselves, we can have `WlOutput`s that match.

This simplifies things.
2023-11-08 13:59:53 -08:00
Ian Douglas Scott
4e2ef433fd Handle global workspaces 2023-03-22 10:03:18 -07:00
Ian Douglas Scott
4ca7c9fb56 Handle toplevel info updates 2023-02-10 13:41:08 -08:00
Ian Douglas Scott
b5931cd240 Initial support for filtering what to capture to only what's needed 2023-02-10 10:12:26 -08:00
Ian Douglas Scott
b29f1149a4 Split up wayland code into more files 2023-02-09 16:04:36 -08:00