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