Skip to content

Commit 3406271

Browse files
committed
WIP image-capture-source / image-copy-capture
1 parent 37c55f4 commit 3406271

File tree

5 files changed

+505
-3
lines changed

5 files changed

+505
-3
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ thiserror = "1.0.30"
2727
wayland-backend = "0.3.0"
2828
wayland-client = "0.31.1"
2929
wayland-cursor = "0.31.0"
30-
wayland-protocols = { version = "0.32.1", features = ["client", "staging", "unstable"] }
30+
wayland-protocols = { version = "0.32.4", features = ["client", "staging", "unstable"] }
3131
wayland-protocols-wlr = { version = "0.3.1", features = ["client"] }
3232
wayland-scanner = "0.31.0"
3333
wayland-csd-frame = "0.3.0"

examples/image_copy_capture.rs

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
use smithay_client_toolkit::{
2+
delegate_image_copy_capture,
3+
image_copy_capture::{
4+
BufferConstraints, Frame, ImageCopyCaptureHandler, ImageCopyCaptureState,
5+
ImageCopyFrameData, ImageCopyFrameDataExt, ImageCopySessionData, ImageCopySessionDataExt,
6+
},
7+
};
8+
use wayland_client::{Connection, QueueHandle, WEnum};
9+
use wayland_protocols::ext::image_copy_capture::v1::client::{
10+
ext_image_copy_capture_cursor_session_v1, ext_image_copy_capture_frame_v1,
11+
ext_image_copy_capture_manager_v1, ext_image_copy_capture_session_v1,
12+
};
13+
14+
struct State {
15+
image_copy_capture_state: ImageCopyCaptureState,
16+
}
17+
18+
struct SessionData {
19+
session_data: ImageCopySessionData,
20+
}
21+
22+
impl ImageCopySessionDataExt for SessionData {
23+
fn image_copy_session_data(&self) -> &ImageCopySessionData {
24+
&self.session_data
25+
}
26+
}
27+
28+
struct FrameData {
29+
frame_data: ImageCopyFrameData,
30+
}
31+
32+
impl ImageCopyFrameDataExt for FrameData {
33+
fn image_copy_frame_data(&self) -> &ImageCopyFrameData {
34+
&self.frame_data
35+
}
36+
}
37+
38+
struct CursorSessionData {}
39+
40+
fn main() {}
41+
42+
impl ImageCopyCaptureHandler for State {
43+
fn image_copy_capture_state(&mut self) -> &mut ImageCopyCaptureState {
44+
&mut self.image_copy_capture_state
45+
}
46+
47+
fn buffer_constraints(
48+
&mut self,
49+
conn: &Connection,
50+
qh: &QueueHandle<Self>,
51+
session: &ext_image_copy_capture_session_v1::ExtImageCopyCaptureSessionV1,
52+
constraints: BufferConstraints,
53+
) {
54+
}
55+
56+
fn stopped(
57+
&mut self,
58+
conn: &Connection,
59+
qh: &QueueHandle<Self>,
60+
session: &ext_image_copy_capture_session_v1::ExtImageCopyCaptureSessionV1,
61+
) {
62+
}
63+
64+
fn ready(
65+
&mut self,
66+
conn: &Connection,
67+
qh: &QueueHandle<Self>,
68+
image_copy_frame: &ext_image_copy_capture_frame_v1::ExtImageCopyCaptureFrameV1,
69+
frame: Frame,
70+
) {
71+
}
72+
73+
fn failed(
74+
&mut self,
75+
conn: &Connection,
76+
qh: &QueueHandle<Self>,
77+
image_copy_frame: &ext_image_copy_capture_frame_v1::ExtImageCopyCaptureFrameV1,
78+
reason: WEnum<ext_image_copy_capture_frame_v1::FailureReason>,
79+
) {
80+
}
81+
}
82+
83+
delegate_image_copy_capture!(State, session: [SessionData], frame: [FrameData], cursor_session: [CursorSessionData]);

src/dmabuf.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ use wayland_protocols::wp::linux_dmabuf::zv1::client::{
1414

1515
// Workaround until `libc` updates to FreeBSD 12 ABI
1616
#[cfg(target_os = "freebsd")]
17-
type dev_t = u64;
17+
pub(crate) type dev_t = u64;
1818
#[cfg(not(target_os = "freebsd"))]
19-
use libc::dev_t;
19+
pub(crate) use libc::dev_t;
2020

2121
/// A preference tranche of dmabuf formats
2222
#[derive(Debug)]
@@ -42,6 +42,7 @@ impl Default for DmabufFeedbackTranche {
4242

4343
/// A single dmabuf format/modifier pair
4444
// Must have correct representation to be able to mmap format table
45+
#[derive(Clone)]
4546
#[repr(C)]
4647
pub struct DmabufFormat {
4748
/// Fourcc format

0 commit comments

Comments
 (0)