Skip to content

Commit

Permalink
egl: add openharmony support
Browse files Browse the repository at this point in the history
  • Loading branch information
richerfu authored Sep 22, 2024
1 parent 0d80a76 commit 7e46179
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 3 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,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.

# Version 0.32.0

Expand Down
2 changes: 1 addition & 1 deletion glutin/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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 }
Expand Down
3 changes: 2 additions & 1 deletion glutin/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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)) },
Expand Down
4 changes: 3 additions & 1 deletion glutin/src/api/egl/display.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down
11 changes: 11 additions & 0 deletions glutin/src/api/egl/surface.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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),

Expand Down Expand Up @@ -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)]
Expand Down Expand Up @@ -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,
}
Expand Down Expand Up @@ -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,
}
Expand Down

0 comments on commit 7e46179

Please sign in to comment.