raw_window_handle_ffi/handles/
xcb.rs1use crate::{RawWindowHandle, RawWindowHandleData};
2use std::num::NonZeroU32;
3
4#[repr(C)]
8#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
9pub struct XcbWindowHandle {
10 pub window: NonZeroU32, pub visual_id: Option<NonZeroU32>,
14}
15
16unsafe impl Send for XcbWindowHandle {}
17unsafe impl Sync for XcbWindowHandle {}
18
19impl From<raw_window_handle::XcbWindowHandle> for XcbWindowHandle {
20 fn from(value: raw_window_handle::XcbWindowHandle) -> Self {
21 Self {
22 window: value.window,
23 visual_id: value.visual_id,
24 }
25 }
26}
27
28impl XcbWindowHandle {
29 pub unsafe fn into(self) -> raw_window_handle::XcbWindowHandle {
35 let mut result = raw_window_handle::XcbWindowHandle::new(self.window);
36 result.visual_id = self.visual_id;
37 result
38 }
39}
40
41impl From<XcbWindowHandle> for RawWindowHandle {
42 fn from(val: XcbWindowHandle) -> RawWindowHandle {
43 RawWindowHandle {
44 kind: crate::RawWindowHandleKind::XcbWindowHandle,
45 data: RawWindowHandleData { xcb: val },
46 }
47 }
48}