raw_window_handle_ffi/handles/
ui_kit.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 UiKitWindowHandle {
10 pub ui_view: NonNull<c_void>,
12 pub ui_view_controller: Option<NonNull<c_void>>,
14}
15
16unsafe impl Send for UiKitWindowHandle {}
17unsafe impl Sync for UiKitWindowHandle {}
18
19impl From<raw_window_handle::UiKitWindowHandle> for UiKitWindowHandle {
20 fn from(value: raw_window_handle::UiKitWindowHandle) -> Self {
21 Self {
22 ui_view: value.ui_view,
23 ui_view_controller: value.ui_view_controller,
24 }
25 }
26}
27
28impl UiKitWindowHandle {
29 pub unsafe fn into(self) -> raw_window_handle::UiKitWindowHandle {
35 let mut result = raw_window_handle::UiKitWindowHandle::new(self.ui_view);
36 result.ui_view_controller = self.ui_view_controller;
37 result
38 }
39}
40
41impl From<UiKitWindowHandle> for RawWindowHandle {
42 fn from(val: UiKitWindowHandle) -> RawWindowHandle {
43 RawWindowHandle {
44 kind: crate::RawWindowHandleKind::UiKitWindowHandle,
45 data: RawWindowHandleData { ui_kit: val },
46 }
47 }
48}