diff --git a/CHANGELOG.md b/CHANGELOG.md index 4ace3a0c1d..f613522474 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # Unreleased +# Version 0.32.1 + - Fixed EGL's `Device::query_devices()` being too strict about required extensions. - Fixed crash in `EglGetProcAddress` on Win32-x86 platform due to wrong calling convention. - Fixed EGL's `Display::device()` always returning an error due to invalid pointer-argument passing inside. @@ -7,6 +9,7 @@ - Added `Device::drm_device_node_path()` and `Device::drm_render_device_node_path()` getters to EGL via `EGL_EXT_device_drm`. - Added support for `DrmDisplayHandle` in EGL's `Display::with_device()` using `EGL_DRM_MASTER_FD_EXT` from `EGL_EXT_device_drm`. - Properly set up OpenGL-specific stuff on the `NSView`, instead of relying on Winit to do it. +- Added `OpenHarmony` platform support with EGL. - Added support for `Display::create_pbuffer_surface()` in WGL via `WGL_ARB_pbuffer`. # Version 0.32.0 diff --git a/glutin/Cargo.toml b/glutin/Cargo.toml index 4566af5fa7..ff9251eef4 100644 --- a/glutin/Cargo.toml +++ b/glutin/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "glutin" -version = "0.32.0" +version = "0.32.1" authors = ["Kirill Chibisov "] description = "Cross-platform OpenGL context provider." keywords = ["windowing", "opengl", "egl"] @@ -23,7 +23,7 @@ wayland = ["wayland-sys", "egl"] bitflags = "2.2.1" libloading = { version = "0.8.0", optional = true } once_cell = "1.13" -raw-window-handle = "0.6" +raw-window-handle = "0.6.2" [target.'cfg(windows)'.dependencies] glutin_egl_sys = { version = "0.7.0", path = "../glutin_egl_sys", optional = true } diff --git a/glutin/build.rs b/glutin/build.rs index c8eab1b931..b5f34354b0 100644 --- a/glutin/build.rs +++ b/glutin/build.rs @@ -5,11 +5,12 @@ fn main() { cfg_aliases! { // Systems. android_platform: { target_os = "android" }, + ohos_platform: { target_env = "ohos" }, wasm_platform: { target_family = "wasm" }, macos_platform: { target_os = "macos" }, ios_platform: { target_os = "ios" }, apple: { any(ios_platform, macos_platform) }, - free_unix: { all(unix, not(apple), not(android_platform)) }, + free_unix: { all(unix, not(apple), not(android_platform), not(ohos_platform)) }, // Native displays. x11_platform: { all(feature = "x11", free_unix, not(wasm_platform)) }, diff --git a/glutin/src/api/egl/display.rs b/glutin/src/api/egl/display.rs index 3cc47653bb..4c2454d467 100644 --- a/glutin/src/api/egl/display.rs +++ b/glutin/src/api/egl/display.rs @@ -441,7 +441,9 @@ impl Display { RawDisplayHandle::Xlib(XlibDisplayHandle { display, .. }) => { display.map_or(egl::DEFAULT_DISPLAY as *mut _, |d| d.as_ptr()) }, - RawDisplayHandle::Android(_) => egl::DEFAULT_DISPLAY as *mut _, + RawDisplayHandle::Android(_) | RawDisplayHandle::Ohos(_) => { + egl::DEFAULT_DISPLAY as *mut _ + }, _ => { return Err( ErrorKind::NotSupported("provided display handle is not supported").into() diff --git a/glutin/src/api/egl/surface.rs b/glutin/src/api/egl/surface.rs index 800d911c01..222e033b74 100644 --- a/glutin/src/api/egl/surface.rs +++ b/glutin/src/api/egl/surface.rs @@ -456,6 +456,9 @@ enum NativeWindow { #[cfg(android_platform)] Android(*mut ffi::c_void), + #[cfg(ohos_platform)] + Ohos(*mut ffi::c_void), + #[cfg(windows)] Win32(isize), @@ -498,6 +501,10 @@ impl NativeWindow { RawWindowHandle::AndroidNdk(window_handle) => { Self::Android(window_handle.a_native_window.as_ptr()) }, + #[cfg(ohos_platform)] + RawWindowHandle::OhosNdk(window_handle) => { + Self::Ohos(window_handle.native_window.as_ptr()) + }, #[cfg(windows)] RawWindowHandle::Win32(window_handle) => Self::Win32(window_handle.hwnd.get() as _), #[cfg(free_unix)] @@ -542,6 +549,8 @@ impl NativeWindow { Self::Win32(hwnd) => hwnd, #[cfg(android_platform)] Self::Android(a_native_window) => a_native_window, + #[cfg(ohos_platform)] + Self::Ohos(native_window) => native_window, #[cfg(free_unix)] Self::Gbm(gbm_surface) => gbm_surface, } @@ -573,6 +582,8 @@ impl NativeWindow { Self::Win32(hwnd) => *hwnd as *const ffi::c_void as *mut _, #[cfg(android_platform)] Self::Android(a_native_window) => *a_native_window, + #[cfg(ohos_platform)] + Self::Ohos(native_window) => *native_window, #[cfg(free_unix)] Self::Gbm(gbm_surface) => *gbm_surface, }