Skip to content

Commit

Permalink
Apply screencopy transform to subsurfaces
Browse files Browse the repository at this point in the history
Fixes #17.
  • Loading branch information
ids1024 committed Jan 15, 2025
1 parent 8c4e666 commit 764b4ae
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 3 deletions.
1 change: 1 addition & 0 deletions src/backend/mock.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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)),
}
Expand Down
1 change: 1 addition & 0 deletions src/backend/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
}
Expand Down
6 changes: 5 additions & 1 deletion src/backend/wayland/screencopy.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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,
Expand Down
7 changes: 5 additions & 2 deletions src/view/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -423,12 +423,15 @@ fn capture_image(image: Option<&CaptureImage>, alpha: f32) -> cosmic::Element<'s
if let Some(image) = image {
#[cfg(feature = "no-subsurfaces")]
{
// TODO alpha
// TODO alpha, transform
widget::Image::new(image.image.clone()).into()
}
#[cfg(not(feature = "no-subsurfaces"))]
{
Subsurface::new(image.wl_buffer.clone()).alpha(alpha).into()
Subsurface::new(image.wl_buffer.clone())
.alpha(alpha)
.transform(image.transform)
.into()
}
} else {
widget::Image::new(widget::image::Handle::from_rgba(1, 1, vec![0, 0, 0, 255])).into()
Expand Down

0 comments on commit 764b4ae

Please sign in to comment.