Skip to content

Commit

Permalink
API review: move {window,display}_handle_06_rc() into WindowAdapterIn…
Browse files Browse the repository at this point in the history
…ternal
  • Loading branch information
tronical committed Jul 5, 2024
1 parent e35d05f commit 89b80eb
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 39 deletions.
40 changes: 20 additions & 20 deletions internal/backends/winit/winitwindowadapter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -874,26 +874,6 @@ impl WindowAdapter for WinitWindowAdapter {
fn internal(&self, _: corelib::InternalToken) -> Option<&dyn WindowAdapterInternal> {
Some(self)
}

#[cfg(feature = "raw-window-handle-06")]
fn window_handle_06_rc(
&self,
) -> Result<Rc<dyn raw_window_handle::HasWindowHandle>, raw_window_handle::HandleError> {
self.winit_window_or_none
.borrow()
.as_window()
.map_or(Err(raw_window_handle::HandleError::Unavailable), |window| Ok(window))
}

#[cfg(feature = "raw-window-handle-06")]
fn display_handle_06_rc(
&self,
) -> Result<Rc<dyn raw_window_handle::HasDisplayHandle>, raw_window_handle::HandleError> {
self.winit_window_or_none
.borrow()
.as_window()
.map_or(Err(raw_window_handle::HandleError::Unavailable), |window| Ok(window))
}
}

impl WindowAdapterInternal for WinitWindowAdapter {
Expand Down Expand Up @@ -1027,6 +1007,26 @@ impl WindowAdapterInternal for WinitWindowAdapter {
a.unregister_item_tree(component);
}
}

#[cfg(feature = "raw-window-handle-06")]
fn window_handle_06_rc(
&self,
) -> Result<Rc<dyn raw_window_handle::HasWindowHandle>, raw_window_handle::HandleError> {
self.winit_window_or_none
.borrow()
.as_window()
.map_or(Err(raw_window_handle::HandleError::Unavailable), |window| Ok(window))
}

#[cfg(feature = "raw-window-handle-06")]
fn display_handle_06_rc(
&self,
) -> Result<Rc<dyn raw_window_handle::HasDisplayHandle>, raw_window_handle::HandleError> {
self.winit_window_or_none
.borrow()
.as_window()
.map_or(Err(raw_window_handle::HandleError::Unavailable), |window| Ok(window))
}
}

impl Drop for WinitWindowAdapter {
Expand Down
4 changes: 3 additions & 1 deletion internal/core/api.rs
Original file line number Diff line number Diff line change
Expand Up @@ -643,7 +643,9 @@ impl Window {
pub fn window_handle(&self) -> WindowHandle {
let adapter = self.0.window_adapter();
if let Some((window_handle_provider, display_handle_provider)) =
adapter.window_handle_06_rc().ok().zip(adapter.display_handle_06_rc().ok())
adapter.internal(crate::InternalToken).and_then(|internal| {
internal.window_handle_06_rc().ok().zip(internal.display_handle_06_rc().ok())
})
{
WindowHandle {
inner: WindowHandleInner::HandleByRcRWH {
Expand Down
36 changes: 18 additions & 18 deletions internal/core/window.rs
Original file line number Diff line number Diff line change
Expand Up @@ -153,24 +153,6 @@ pub trait WindowAdapter {
) -> Result<raw_window_handle_06::DisplayHandle<'_>, raw_window_handle_06::HandleError> {
Err(raw_window_handle_06::HandleError::NotSupported)
}

/// Re-implement this to support exposing raw window handles (version 0.6).
#[cfg(feature = "raw-window-handle-06")]
fn window_handle_06_rc(
&self,
) -> Result<Rc<dyn raw_window_handle_06::HasWindowHandle>, raw_window_handle_06::HandleError>
{
Err(raw_window_handle_06::HandleError::NotSupported)
}

/// Re-implement this to support exposing raw display handles (version 0.6).
#[cfg(feature = "raw-window-handle-06")]
fn display_handle_06_rc(
&self,
) -> Result<Rc<dyn raw_window_handle_06::HasDisplayHandle>, raw_window_handle_06::HandleError>
{
Err(raw_window_handle_06::HandleError::NotSupported)
}
}

/// Implementation details behind [`WindowAdapter`], but since this
Expand Down Expand Up @@ -222,6 +204,24 @@ pub trait WindowAdapterInternal {
fn color_scheme(&self) -> ColorScheme {
ColorScheme::Unknown
}

/// Re-implement this to support exposing raw window handles (version 0.6).
#[cfg(feature = "raw-window-handle-06")]
fn window_handle_06_rc(
&self,
) -> Result<Rc<dyn raw_window_handle_06::HasWindowHandle>, raw_window_handle_06::HandleError>
{
Err(raw_window_handle_06::HandleError::NotSupported)
}

/// Re-implement this to support exposing raw display handles (version 0.6).
#[cfg(feature = "raw-window-handle-06")]
fn display_handle_06_rc(
&self,
) -> Result<Rc<dyn raw_window_handle_06::HasDisplayHandle>, raw_window_handle_06::HandleError>
{
Err(raw_window_handle_06::HandleError::NotSupported)
}
}

/// This is the parameter from [`WindowAdapterInternal::input_method_request()`] which lets the editable text input field
Expand Down

0 comments on commit 89b80eb

Please sign in to comment.