diff options
| -rw-r--r-- | engine/src/rendering/backend/opengl/glutin_compat.rs | 90 |
1 files changed, 45 insertions, 45 deletions
diff --git a/engine/src/rendering/backend/opengl/glutin_compat.rs b/engine/src/rendering/backend/opengl/glutin_compat.rs index cfd6ea7..4cdf18a 100644 --- a/engine/src/rendering/backend/opengl/glutin_compat.rs +++ b/engine/src/rendering/backend/opengl/glutin_compat.rs @@ -35,8 +35,8 @@ use glutin::config::{Config, ConfigTemplateBuilder}; use glutin::display::{Display, DisplayApiPreference}; use glutin::error::Error as GlutinError; -#[cfg(x11_platform)] -use glutin::platform::x11::X11GlConfigExt; +// #[cfg(x11_platform)] +// use glutin::platform::x11::X11GlConfigExt; use glutin::prelude::*; use raw_window_handle::{DisplayHandle, RawWindowHandle, WindowHandle}; @@ -131,8 +131,9 @@ impl DisplayBuilder // XXX the native window must be passed to config picker when WGL is used // otherwise very limited OpenGL features will be supported. - #[cfg(wgl_backend)] - let template_builder = if let Some(raw_window_handle) = raw_window_handle { + let template_builder = if let Some(raw_window_handle) = + raw_window_handle.filter(|_| cfg!(wgl_backend)) + { template_builder.compatible_with_native_window(raw_window_handle) } else { template_builder @@ -150,12 +151,12 @@ impl DisplayBuilder let picked_gl_config = config_picker_fn(gl_configs).ok_or(Error::NoConfigPicked)?; - #[cfg(not(wgl_backend))] - let window_attrs = - { finalize_window_creation_attrs(self.window_attributes, &picked_gl_config) }; - - #[cfg(wgl_backend)] - let window_attrs = self.window_attributes; + let window_attrs = cfg_select! { + wgl_backend => { self.window_attributes } + _ => { + finalize_window_creation_attrs(self.window_attributes, &picked_gl_config) + } + }; Ok((window_attrs, picked_gl_config)) } @@ -183,40 +184,40 @@ fn create_display( _raw_window_handle: Option<RawWindowHandle>, ) -> Result<Display, GlutinError> { - #[cfg(egl_backend)] - let _preference = DisplayApiPreference::Egl; - - #[cfg(glx_backend)] - let _preference = DisplayApiPreference::Glx(Box::new( - crate::windowing::window::platform::x11::register_xlib_error_hook, - )); - - #[cfg(cgl_backend)] - let _preference = DisplayApiPreference::Cgl; - - #[cfg(wgl_backend)] - let _preference = DisplayApiPreference::Wgl(_raw_window_handle); - - #[cfg(all(egl_backend, glx_backend))] - let _preference = match _api_preference { - ApiPreference::PreferEgl => DisplayApiPreference::EglThenGlx(Box::new( - crate::windowing::window::platform::x11::register_xlib_error_hook, - )), - ApiPreference::FallbackEgl => DisplayApiPreference::GlxThenEgl(Box::new( - crate::windowing::window::platform::x11::register_xlib_error_hook, - )), - }; - - #[cfg(all(wgl_backend, egl_backend))] - let _preference = match _api_preference { - ApiPreference::PreferEgl => DisplayApiPreference::EglThenWgl(_raw_window_handle), - ApiPreference::FallbackEgl => { - DisplayApiPreference::WglThenEgl(_raw_window_handle) + let preference = cfg_select! { + all(wgl_backend, egl_backend) => { + match _api_preference { + ApiPreference::PreferEgl => { + DisplayApiPreference::EglThenWgl(_raw_window_handle) + } + ApiPreference::FallbackEgl => { + DisplayApiPreference::WglThenEgl(_raw_window_handle) + } + } + } + all(egl_backend, glx_backend) => { + match _api_preference { + ApiPreference::PreferEgl => DisplayApiPreference::EglThenGlx(Box::new( + crate::windowing::window::platform::x11::register_xlib_error_hook, + )), + ApiPreference::FallbackEgl => DisplayApiPreference::GlxThenEgl(Box::new( + crate::windowing::window::platform::x11::register_xlib_error_hook, + )), + } } + wgl_backend => { DisplayApiPreference::Wgl(_raw_window_handle) } + cgl_backend => { DisplayApiPreference::Cgl } + glx_backend => { + DisplayApiPreference::Glx(Box::new( + crate::windowing::window::platform::x11::register_xlib_error_hook, + )) + } + egl_backend => { DisplayApiPreference::Egl } }; let handle = display_handle.as_raw(); - unsafe { Ok(Display::new(handle, _preference)?) } + + unsafe { Ok(Display::new(handle, preference)?) } } /// Finalize [`Window`] creation by applying the options from the [`Config`], be @@ -237,11 +238,10 @@ fn finalize_window_creation_attrs( } #[cfg(x11_platform)] - let attributes = if let Some(x11_visual) = gl_config.x11_visual() { - attributes.with_x11_visual(x11_visual.visual_id() as _) - } else { - attributes - }; + if let Some(x11_visual) = glutin::platform::x11::X11GlConfigExt::x11_visual(gl_config) + { + return attributes.with_x11_visual(x11_visual.visual_id() as _); + } attributes } |
