Apply screencopy transform to subsurfaces

Fixes https://github.com/pop-os/cosmic-workspaces-epoch/issues/17.
This commit is contained in:
Ian Douglas Scott 2025-01-15 10:18:50 -08:00
parent 8c4e66691c
commit 764b4ae5f8
4 changed files with 12 additions and 3 deletions

View file

@ -60,6 +60,7 @@ fn create_solid_capture_image(r: u8, g: u8, b: u8) -> CaptureImage {
.into(),
))
.0,
transform: wl_output::Transform::Normal,
#[cfg(feature = "no-subsurfaces")]
image: cosmic::widget::image::Handle::from_rgba(512, 512, [r, g, b, 255].repeat(512 * 512)),
}

View file

@ -47,6 +47,7 @@ pub struct CaptureImage {
pub width: u32,
pub height: u32,
pub wl_buffer: SubsurfaceBuffer,
pub transform: wl_output::Transform,
#[cfg(feature = "no-subsurfaces")]
pub image: cosmic::widget::image::Handle,
}

View file

@ -162,7 +162,7 @@ impl ScreencopyHandler for AppData {
conn: &Connection,
qh: &QueueHandle<Self>,
screencopy_frame: &zcosmic_screencopy_frame_v2::ZcosmicScreencopyFrameV2,
_frame: Frame,
frame: Frame,
) {
let session = &screencopy_frame.data::<FrameData>().unwrap().session;
let Some(capture) = Capture::for_session(session) else {
@ -207,6 +207,10 @@ impl ScreencopyHandler for AppData {
wl_buffer: buffer,
width: front.size.0,
height: front.size.1,
transform: match frame.transform {
WEnum::Value(value) => value,
WEnum::Unknown(value) => panic!("invalid capture transform: {}", value),
},
#[cfg(feature = "no-subsurfaces")]
image: cosmic::widget::image::Handle::from_rgba(
front.size.0,