diff --git a/src/backend/graphics/egl.rs b/src/backend/graphics/egl.rs index 6c14ca7..54909b1 100644 --- a/src/backend/graphics/egl.rs +++ b/src/backend/graphics/egl.rs @@ -67,7 +67,7 @@ pub enum NativeSurface { Gbm(ffi::NativeWindowType), } -#[derive(PartialEq)] +#[derive(Clone, Copy, PartialEq)] enum NativeType { X11, Wayland, @@ -568,30 +568,18 @@ impl EGLContext { -> Result, CreationError> { trace!(self.logger, "Creating EGL window surface..."); - match native { - NativeSurface::X11(_) if self.backend_type != NativeType::X11 => { - return Err(CreationError::NonMatchingSurfaceType) - } - NativeSurface::Wayland(_) if self.backend_type != NativeType::Wayland => { - return Err(CreationError::NonMatchingSurfaceType) - } - NativeSurface::Gbm(_) if self.backend_type != NativeType::Gbm => { - return Err(CreationError::NonMatchingSurfaceType) - } - _ => {} - }; - let surface = { - let surface = match native { - NativeSurface::X11(window) | - NativeSurface::Wayland(window) | - NativeSurface::Gbm(window) => { + let surface = match (native, self.backend_type) { + (NativeSurface::X11(window), NativeType::X11) | + (NativeSurface::Wayland(window), NativeType::Wayland) | + (NativeSurface::Gbm(window), NativeType::Gbm) => { self.egl .CreateWindowSurface(self.display, self.config_id, window, self.surface_attributes.as_ptr()) } + _ => return Err(CreationError::NonMatchingSurfaceType), }; if surface.is_null() {