From 5176dd6a7ad1dce2d34424ef330e9a987400db78 Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Sat, 27 Nov 2021 11:16:34 +0100 Subject: [PATCH] Clean up raw_window_handle functions a bit --- src/platform_impl/android/mod.rs | 12 ++++++------ src/platform_impl/ios/window.rs | 12 +++++------- src/platform_impl/linux/wayland/window/mod.rs | 12 ++++-------- src/platform_impl/linux/x11/window.rs | 9 ++++----- src/platform_impl/macos/window.rs | 8 +++----- src/platform_impl/web/window.rs | 13 +++++-------- src/platform_impl/windows/window.rs | 10 ++++------ 7 files changed, 31 insertions(+), 45 deletions(-) diff --git a/src/platform_impl/android/mod.rs b/src/platform_impl/android/mod.rs index a007629bbd..0691bcc1e8 100644 --- a/src/platform_impl/android/mod.rs +++ b/src/platform_impl/android/mod.rs @@ -12,6 +12,7 @@ use ndk::{ looper::{ForeignLooper, Poll, ThreadLooper}, }; use ndk_glue::{Event, Rect}; +use raw_window_handle::{AndroidNdkHandle, RawWindowHandle}; use std::{ collections::VecDeque, sync::{Arc, Mutex, RwLock}, @@ -589,15 +590,14 @@ impl Window { )) } - pub fn raw_window_handle(&self) -> raw_window_handle::RawWindowHandle { - let a_native_window = if let Some(native_window) = ndk_glue::native_window().as_ref() { - unsafe { native_window.ptr().as_mut() as *mut _ as *mut _ } + pub fn raw_window_handle(&self) -> RawWindowHandle { + let mut handle = AndroidNdkHandle::empty(); + 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 _ } } 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."); }; - let mut handle = raw_window_handle::AndroidNdkHandle::empty(); - handle.a_native_window = a_native_window; - raw_window_handle::RawWindowHandle::AndroidNdk(handle) + RawWindowHandle::AndroidNdk(handle) } pub fn config(&self) -> Configuration { diff --git a/src/platform_impl/ios/window.rs b/src/platform_impl/ios/window.rs index 294a532923..594bcdc6ad 100644 --- a/src/platform_impl/ios/window.rs +++ b/src/platform_impl/ios/window.rs @@ -1,4 +1,4 @@ -use raw_window_handle::{UiKitHandle, RawWindowHandle}; +use raw_window_handle::{RawWindowHandle, UiKitHandle}; use std::{ collections::VecDeque, ops::{Deref, DerefMut}, @@ -307,12 +307,10 @@ impl Inner { } pub fn raw_window_handle(&self) -> RawWindowHandle { - let handle = UiKitHandle { - ui_window: self.window as _, - ui_view: self.view as _, - ui_view_controller: self.view_controller as _, - ..UiKitHandle::empty() - }; + let mut handle = UiKitHandle::empty(); + handle.ui_window = self.window as _; + handle.ui_view = self.view as _; + handle.ui_view_controller = self.view_controller as _; RawWindowHandle::UiKit(handle) } } diff --git a/src/platform_impl/linux/wayland/window/mod.rs b/src/platform_impl/linux/wayland/window/mod.rs index 272d253396..8af9ca20b1 100644 --- a/src/platform_impl/linux/wayland/window/mod.rs +++ b/src/platform_impl/linux/wayland/window/mod.rs @@ -488,14 +488,10 @@ impl Window { #[inline] pub fn raw_window_handle(&self) -> WaylandHandle { - let display = self.display.get_display_ptr() as *mut _; - let surface = self.surface.as_ref().c_ptr() as *mut _; - - WaylandHandle { - display, - surface, - ..WaylandHandle::empty() - } + let mut handle = WaylandHandle::empty(); + handle.display = self.display.get_display_ptr() as *mut _; + handle.surface = self.surface.as_ref().c_ptr() as *mut _; + handle } #[inline] diff --git a/src/platform_impl/linux/x11/window.rs b/src/platform_impl/linux/x11/window.rs index b0c213ea68..35beb01441 100644 --- a/src/platform_impl/linux/x11/window.rs +++ b/src/platform_impl/linux/x11/window.rs @@ -1458,10 +1458,9 @@ impl UnownedWindow { #[inline] pub fn raw_window_handle(&self) -> XlibHandle { - XlibHandle { - window: self.xwindow, - display: self.xconn.display as _, - ..XlibHandle::empty() - } + let mut handle = XlibHandle::empty(); + handle.window = self.xlib_window(); + handle.display = self.xlib_display(); + handle } } diff --git a/src/platform_impl/macos/window.rs b/src/platform_impl/macos/window.rs index aef20db50d..763439dada 100644 --- a/src/platform_impl/macos/window.rs +++ b/src/platform_impl/macos/window.rs @@ -1059,11 +1059,9 @@ impl UnownedWindow { #[inline] pub fn raw_window_handle(&self) -> RawWindowHandle { - let handle = AppKitHandle { - ns_window: *self.ns_window as *mut _, - ns_view: *self.ns_view as *mut _, - ..AppKitHandle::empty() - }; + let mut handle = AppKitHandle::empty(); + handle.ns_window = *self.ns_window as *mut _; + handle.ns_view = *self.ns_view as *mut _; RawWindowHandle::AppKit(handle) } } diff --git a/src/platform_impl/web/window.rs b/src/platform_impl/web/window.rs index 11def402ed..02bce57389 100644 --- a/src/platform_impl/web/window.rs +++ b/src/platform_impl/web/window.rs @@ -7,7 +7,7 @@ use crate::window::{ CursorIcon, Fullscreen, UserAttentionType, WindowAttributes, WindowId as RootWI, }; -use raw_window_handle::WebHandle; +use raw_window_handle::{RawWindowHandle, WebHandle}; use super::{backend, monitor, EventLoopWindowTarget}; @@ -322,13 +322,10 @@ impl Window { } #[inline] - pub fn raw_window_handle(&self) -> raw_window_handle::RawWindowHandle { - let handle = WebHandle { - id: self.id.0, - ..WebHandle::empty() - }; - - raw_window_handle::RawWindowHandle::Web(handle) + pub fn raw_window_handle(&self) -> RawWindowHandle { + let mut handle = WebHandle::empty(); + handle.id = self.id.0; + RawWindowHandle::Web(handle) } } diff --git a/src/platform_impl/windows/window.rs b/src/platform_impl/windows/window.rs index 71d76b6b1c..81af6c4bf0 100644 --- a/src/platform_impl/windows/window.rs +++ b/src/platform_impl/windows/window.rs @@ -1,7 +1,7 @@ #![cfg(target_os = "windows")] use parking_lot::Mutex; -use raw_window_handle::{Win32Handle, RawWindowHandle}; +use raw_window_handle::{RawWindowHandle, Win32Handle}; use std::{ cell::Cell, ffi::OsStr, @@ -233,11 +233,9 @@ impl Window { #[inline] pub fn raw_window_handle(&self) -> RawWindowHandle { - let handle = Win32Handle { - hwnd: self.window.0 as *mut _, - hinstance: self.hinstance() as *mut _, - ..Win32Handle::empty() - }; + let mut handle = Win32Handle::empty(); + handle.hwnd = self.window.0 as *mut _; + handle.hinstance = self.hinstance() as *mut _; RawWindowHandle::Win32(handle) }