raw_window_handle_extensions/
android.rs

1use crate::{RawDisplayHandleType, RawWindowHandleType, VeryRawDisplayHandle, VeryRawWindowHandle};
2use raw_window_handle::{AndroidDisplayHandle, AndroidNdkWindowHandle};
3use std::ptr::NonNull;
4
5impl From<AndroidNdkWindowHandle> for VeryRawWindowHandle {
6    fn from(value: AndroidNdkWindowHandle) -> Self {
7        Self {
8            handle_type: RawWindowHandleType::AndroidNdk,
9            ptr_1: value.a_native_window.as_ptr(),
10            ptr_2: std::ptr::null_mut(),
11            ptr_3: std::ptr::null_mut(),
12            id_1: Default::default(),
13            id_2: Default::default(),
14        }
15    }
16}
17
18impl From<VeryRawWindowHandle> for AndroidNdkWindowHandle {
19    fn from(value: VeryRawWindowHandle) -> Self {
20        assert_eq!(value.handle_type, RawWindowHandleType::AndroidNdk);
21        Self::new(
22            NonNull::new(value.ptr_1.into())
23                .expect("Android native window pointer must not be null"),
24        )
25    }
26}
27
28impl From<AndroidDisplayHandle> for VeryRawDisplayHandle {
29    fn from(_value: AndroidDisplayHandle) -> Self {
30        Self {
31            handle_type: RawDisplayHandleType::Android,
32            ptr_1: std::ptr::null_mut(),
33            id_1: Default::default(),
34        }
35    }
36}
37
38impl From<VeryRawDisplayHandle> for AndroidDisplayHandle {
39    fn from(value: VeryRawDisplayHandle) -> Self {
40        assert_eq!(value.handle_type, RawDisplayHandleType::Android);
41        Self::new()
42    }
43}