mirror of
https://github.com/italicsjenga/winit-sonoma-fix.git
synced 2024-12-24 06:11:30 +11:00
On Android, use HasRawWindowHandle
directly from the ndk
crate (#2318)
The `ndk` crate now implements [`HasRawWindowHandle` directly on `NativeWindow`], relieving the burden to reimplement it on `winit`. [`HasRawWindowHandle` directly on `NativeWindow`]: https://github.com/rust-windowing/android-ndk-rs/pull/274
This commit is contained in:
parent
c5eaa0ab69
commit
57981b533d
|
@ -38,9 +38,9 @@ image = { version = "0.24.0", default-features = false, features = ["png"] }
|
||||||
simple_logger = "2.1.0"
|
simple_logger = "2.1.0"
|
||||||
|
|
||||||
[target.'cfg(target_os = "android")'.dependencies]
|
[target.'cfg(target_os = "android")'.dependencies]
|
||||||
ndk = "0.6"
|
# Coordinate the next winit release with android-ndk-rs: https://github.com/rust-windowing/winit/issues/1995
|
||||||
ndk-sys = "0.3"
|
ndk = { git = "https://github.com/rust-windowing/android-ndk-rs", rev = "7e33384" }
|
||||||
ndk-glue = "0.6"
|
ndk-glue = { git = "https://github.com/rust-windowing/android-ndk-rs", rev = "7e33384" }
|
||||||
|
|
||||||
[target.'cfg(any(target_os = "ios", target_os = "macos"))'.dependencies]
|
[target.'cfg(any(target_os = "ios", target_os = "macos"))'.dependencies]
|
||||||
objc = "0.2.7"
|
objc = "0.2.7"
|
||||||
|
|
|
@ -13,7 +13,7 @@ use ndk::{
|
||||||
};
|
};
|
||||||
use ndk_glue::{Event, Rect};
|
use ndk_glue::{Event, Rect};
|
||||||
use once_cell::sync::Lazy;
|
use once_cell::sync::Lazy;
|
||||||
use raw_window_handle::{AndroidNdkHandle, RawWindowHandle};
|
use raw_window_handle::{HasRawWindowHandle, RawWindowHandle};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
dpi::{PhysicalPosition, PhysicalSize, Position, Size},
|
dpi::{PhysicalPosition, PhysicalSize, Position, Size},
|
||||||
|
@ -786,13 +786,11 @@ impl Window {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn raw_window_handle(&self) -> RawWindowHandle {
|
pub fn raw_window_handle(&self) -> RawWindowHandle {
|
||||||
let mut handle = AndroidNdkHandle::empty();
|
|
||||||
if let Some(native_window) = ndk_glue::native_window().as_ref() {
|
if let Some(native_window) = ndk_glue::native_window().as_ref() {
|
||||||
handle.a_native_window = unsafe { native_window.ptr().as_mut() as *mut _ as *mut _ }
|
native_window.raw_window_handle()
|
||||||
} else {
|
} else {
|
||||||
panic!("Cannot get the native window, it's null and will always be null before Event::Resumed and after Event::Suspended. Make sure you only call this function between those events.");
|
panic!("Cannot get the native window, it's null and will always be null before Event::Resumed and after Event::Suspended. Make sure you only call this function between those events.");
|
||||||
};
|
}
|
||||||
RawWindowHandle::AndroidNdk(handle)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn config(&self) -> Configuration {
|
pub fn config(&self) -> Configuration {
|
||||||
|
|
Loading…
Reference in a new issue