diff --git a/src/backend/kms/render/gles.rs b/src/backend/kms/render/gles.rs index 4a75c0ab..f6e44861 100644 --- a/src/backend/kms/render/gles.rs +++ b/src/backend/kms/render/gles.rs @@ -12,10 +12,9 @@ use smithay::{ }, drm::{CreateDrmNodeError, DrmNode}, renderer::{ - RendererSuper, gles::{GlesError, GlesRenderer, ffi}, glow::GlowRenderer, - multigpu::{ApiDevice, Error as MultiError, GraphicsApi}, + multigpu::{ApiDevice, GraphicsApi}, }, }, reexports::drm::control::Device, @@ -32,8 +31,6 @@ use std::{ sync::atomic::{AtomicBool, Ordering}, }; -use crate::backend::render::element::FromGlesError; - /// Errors raised by the [`GbmGlesBackend`] #[derive(Debug, thiserror::Error)] pub enum Error { @@ -213,15 +210,3 @@ impl ApiDevice for GbmGlowDevice { !self.intel_export_quirk } } - -impl FromGlesError - for MultiError, T> -where - T::Error: 'static, - <::Renderer as RendererSuper>::Error: 'static, -{ - #[inline] - fn from_gles_error(err: GlesError) -> MultiError, T> { - MultiError::Render(err) - } -} diff --git a/src/backend/render/element.rs b/src/backend/render/element.rs index 496702d0..04f7fd9e 100644 --- a/src/backend/render/element.rs +++ b/src/backend/render/element.rs @@ -1,4 +1,7 @@ -use crate::shell::{CosmicMappedRenderElement, WorkspaceRenderElement}; +use crate::{ + backend::render::GlMultiError, + shell::{CosmicMappedRenderElement, WorkspaceRenderElement}, +}; #[cfg(feature = "debug")] use smithay::backend::renderer::element::texture::TextureRenderElement; @@ -203,7 +206,6 @@ impl RenderElement for CosmicElement where R: AsGlowRenderer, R::TextureId: 'static, - R::Error: FromGlesError, CosmicMappedRenderElement: RenderElement, { fn draw( @@ -237,7 +239,7 @@ where opaque_regions, cache, ) - .map_err(FromGlesError::from_gles_error) + .map_err(R::from_gles_error) } CosmicElement::Zoom(elem) => elem.draw(frame, src, dst, damage, opaque_regions, cache), #[cfg(feature = "debug")] @@ -252,7 +254,7 @@ where opaque_regions, cache, ) - .map_err(FromGlesError::from_gles_error) + .map_err(R::from_gles_error) } } } @@ -293,7 +295,7 @@ where RenderElement::::capture_framebuffer( elem, glow_frame, src, dst, cache, ) - .map_err(FromGlesError::from_gles_error) + .map_err(R::from_gles_error) } CosmicElement::Zoom(elem) => elem.capture_framebuffer(frame, src, dst, cache), #[cfg(feature = "debug")] @@ -302,7 +304,7 @@ where RenderElement::::capture_framebuffer( elem, glow_frame, src, dst, cache, ) - .map_err(FromGlesError::from_gles_error) + .map_err(R::from_gles_error) } } } @@ -365,6 +367,7 @@ pub trait AsGlowRenderer: fn glow_frame_mut<'a, 'frame, 'buffer>( frame: &'a mut Self::Frame<'frame, 'buffer>, ) -> &'a mut GlowFrame<'frame, 'buffer>; + fn from_gles_error(err: GlesError) -> Self::Error; } impl AsGlowRenderer for GlowRenderer { @@ -384,6 +387,9 @@ impl AsGlowRenderer for GlowRenderer { ) -> &'a mut GlowFrame<'frame, 'buffer> { frame } + fn from_gles_error(err: GlesError) -> Self::Error { + err + } } impl AsGlowRenderer for GlMultiRenderer<'_> { @@ -403,6 +409,9 @@ impl AsGlowRenderer for GlMultiRenderer<'_> { ) -> &'b mut GlowFrame<'frame, 'buffer> { frame.as_mut() } + fn from_gles_error(err: GlesError) -> Self::Error { + GlMultiError::Render(err) + } } pub struct DamageElement { @@ -458,13 +467,3 @@ impl RenderElement for DamageElement { Ok(()) } } - -pub trait FromGlesError { - fn from_gles_error(err: GlesError) -> Self; -} - -impl FromGlesError for GlesError { - fn from_gles_error(err: GlesError) -> Self { - err - } -} diff --git a/src/backend/render/mod.rs b/src/backend/render/mod.rs index d847f533..6a2f02da 100644 --- a/src/backend/render/mod.rs +++ b/src/backend/render/mod.rs @@ -42,7 +42,6 @@ use crate::{ }; use cosmic::Theme; -use element::FromGlesError; use smithay::{ backend::{ allocator::Fourcc, @@ -628,7 +627,6 @@ pub fn output_elements( where R: AsGlowRenderer, R::TextureId: Send + Clone + 'static, - R::Error: FromGlesError, CosmicMappedRenderElement: RenderElement, WorkspaceRenderElement: RenderElement, { @@ -655,7 +653,7 @@ where ), scale, ) - .map_err(FromGlesError::from_gles_error) + .map_err(R::from_gles_error) .map_err(RenderError::Rendering)? .into(), ] @@ -728,7 +726,6 @@ pub fn workspace_elements( where R: AsGlowRenderer, R::TextureId: Send + Clone + 'static, - R::Error: FromGlesError, CosmicMappedRenderElement: RenderElement, WorkspaceRenderElement: RenderElement, { @@ -1205,7 +1202,6 @@ pub fn render_output<'d, R>( where R: AsGlowRenderer, R::TextureId: Send + Clone + 'static, - R::Error: FromGlesError, CosmicElement: RenderElement, CosmicMappedRenderElement: RenderElement, WorkspaceRenderElement: RenderElement, @@ -1510,7 +1506,6 @@ pub fn render_workspace<'d, R>( where R: AsGlowRenderer, R::TextureId: Send + Clone + 'static, - R::Error: FromGlesError, CosmicElement: RenderElement, CosmicMappedRenderElement: RenderElement, WorkspaceRenderElement: RenderElement, diff --git a/src/shell/element/mod.rs b/src/shell/element/mod.rs index 4c8ca171..69a8391f 100644 --- a/src/shell/element/mod.rs +++ b/src/shell/element/mod.rs @@ -1,5 +1,5 @@ use crate::{ - backend::render::element::{AsGlowRenderer, FromGlesError}, + backend::render::element::AsGlowRenderer, state::State, utils::{iced::IcedElementInternal, prelude::*}, }; @@ -1366,7 +1366,6 @@ impl RenderElement for CosmicMappedRenderElement where R: AsGlowRenderer, R::TextureId: 'static, - R::Error: FromGlesError, { fn draw( &self, @@ -1399,7 +1398,7 @@ where opaque_regions, cache, ) - .map_err(FromGlesError::from_gles_error), + .map_err(R::from_gles_error), CosmicMappedRenderElement::MovingStack(elem) => { elem.draw(frame, src, dst, damage, opaque_regions, cache) } @@ -1421,7 +1420,7 @@ where opaque_regions, cache, ) - .map_err(FromGlesError::from_gles_error), + .map_err(R::from_gles_error), CosmicMappedRenderElement::Overlay(elem) => RenderElement::::draw( elem, R::glow_frame_mut(frame), @@ -1431,7 +1430,7 @@ where opaque_regions, cache, ) - .map_err(FromGlesError::from_gles_error), + .map_err(R::from_gles_error), CosmicMappedRenderElement::StackHoverIndicator(elem) => { elem.draw(frame, src, dst, damage, opaque_regions, cache) } @@ -1447,7 +1446,7 @@ where opaque_regions, cache, ) - .map_err(FromGlesError::from_gles_error) + .map_err(R::from_gles_error) } } } @@ -1510,7 +1509,7 @@ where dst, cache, ) - .map_err(FromGlesError::from_gles_error) + .map_err(R::from_gles_error) } CosmicMappedRenderElement::MovingStack(elem) => { elem.capture_framebuffer(frame, src, dst, cache) @@ -1532,7 +1531,7 @@ where dst, cache, ) - .map_err(FromGlesError::from_gles_error) + .map_err(R::from_gles_error) } CosmicMappedRenderElement::Overlay(elem) => { RenderElement::::capture_framebuffer( @@ -1542,7 +1541,7 @@ where dst, cache, ) - .map_err(FromGlesError::from_gles_error) + .map_err(R::from_gles_error) } CosmicMappedRenderElement::StackHoverIndicator(elem) => { elem.capture_framebuffer(frame, src, dst, cache) @@ -1553,7 +1552,7 @@ where RenderElement::::capture_framebuffer( elem, glow_frame, src, dst, cache, ) - .map_err(FromGlesError::from_gles_error) + .map_err(R::from_gles_error) } } } diff --git a/src/shell/element/stack.rs b/src/shell/element/stack.rs index 17df320f..f3ae21ad 100644 --- a/src/shell/element/stack.rs +++ b/src/shell/element/stack.rs @@ -4,11 +4,8 @@ use super::{ }; use crate::{ backend::render::{ - IndicatorShader, Key, Usage, - clipped_surface::ClippedSurfaceRenderElement, - cursor::CursorState, - element::{AsGlowRenderer, FromGlesError}, - shadow::ShadowShader, + IndicatorShader, Key, Usage, clipped_surface::ClippedSurfaceRenderElement, + cursor::CursorState, element::AsGlowRenderer, shadow::ShadowShader, }, hooks::{Decorations, HOOKS}, shell::{ @@ -2039,7 +2036,6 @@ impl RenderElement for CosmicStackRenderElement where R: AsGlowRenderer, R::TextureId: 'static, - R::Error: FromGlesError, { fn draw( &self, @@ -2064,7 +2060,7 @@ where opaque_regions, cache, ) - .map_err(FromGlesError::from_gles_error) + .map_err(R::from_gles_error) } CosmicStackRenderElement::Window(elem) => { elem.draw(frame, src, dst, damage, opaque_regions, cache) @@ -2105,7 +2101,7 @@ where dst, cache, ) - .map_err(FromGlesError::from_gles_error) + .map_err(R::from_gles_error) } CosmicStackRenderElement::Window(elem) => { elem.capture_framebuffer(frame, src, dst, cache) diff --git a/src/shell/element/window.rs b/src/shell/element/window.rs index 52ffd16d..6ebbafa0 100644 --- a/src/shell/element/window.rs +++ b/src/shell/element/window.rs @@ -1,10 +1,7 @@ use crate::{ backend::render::{ - IndicatorShader, Key, Usage, - clipped_surface::ClippedSurfaceRenderElement, - cursor::CursorState, - element::{AsGlowRenderer, FromGlesError}, - shadow::ShadowShader, + IndicatorShader, Key, Usage, clipped_surface::ClippedSurfaceRenderElement, + cursor::CursorState, element::AsGlowRenderer, shadow::ShadowShader, }, hooks::{Decorations, HOOKS}, shell::{ @@ -1406,7 +1403,6 @@ impl RenderElement for CosmicWindowRenderElement where R: AsGlowRenderer, R::TextureId: 'static, - R::Error: FromGlesError, { fn draw( &self, @@ -1431,7 +1427,7 @@ where opaque_regions, cache, ) - .map_err(FromGlesError::from_gles_error) + .map_err(R::from_gles_error) } CosmicWindowRenderElement::Window(elem) => { elem.draw(frame, src, dst, damage, opaque_regions, cache) @@ -1472,7 +1468,7 @@ where dst, cache, ) - .map_err(FromGlesError::from_gles_error) + .map_err(R::from_gles_error) } CosmicWindowRenderElement::Window(elem) => { elem.capture_framebuffer(frame, src, dst, cache) diff --git a/src/shell/workspace.rs b/src/shell/workspace.rs index e3dcec5a..18ec24cc 100644 --- a/src/shell/workspace.rs +++ b/src/shell/workspace.rs @@ -2,10 +2,7 @@ use crate::shell::focus::FocusTarget; use crate::shell::layout::tiling::RestoreTilingState; use crate::wayland::handlers::xdg_activation::ActivationContext; use crate::{ - backend::render::{ - BackdropShader, - element::{AsGlowRenderer, FromGlesError}, - }, + backend::render::{BackdropShader, element::AsGlowRenderer}, shell::{ ANIMATION_DURATION, OverviewMode, SeatMoveGrabState, layout::{ @@ -2138,7 +2135,6 @@ impl RenderElement for WorkspaceRenderElement where R: AsGlowRenderer, R::TextureId: 'static, - R::Error: FromGlesError, { fn draw( &self, @@ -2171,7 +2167,7 @@ where opaque_regions, cache, ) - .map_err(FromGlesError::from_gles_error), + .map_err(R::from_gles_error), } } @@ -2218,7 +2214,7 @@ where dst, cache, ) - .map_err(FromGlesError::from_gles_error) + .map_err(R::from_gles_error) } } } diff --git a/src/wayland/handlers/image_copy_capture/render.rs b/src/wayland/handlers/image_copy_capture/render.rs index 21370f31..aa358b7f 100644 --- a/src/wayland/handlers/image_copy_capture/render.rs +++ b/src/wayland/handlers/image_copy_capture/render.rs @@ -41,7 +41,7 @@ use tracing::warn; use crate::{ backend::render::{ CursorMode, ElementFilter, RendererRef, cursor, - element::{AsGlowRenderer, CosmicElement, DamageElement, FromGlesError}, + element::{AsGlowRenderer, CosmicElement, DamageElement}, render_workspace, }, shell::{CosmicMappedRenderElement, CosmicSurface, WorkspaceRenderElement}, @@ -105,8 +105,7 @@ pub fn submit_buffer( mut sync: SyncPoint, ) -> Result, R::Error> where - R: ExportMem, - R::Error: FromGlesError, + R: ExportMem + AsGlowRenderer, { let Some(damage) = damage else { frame.success( @@ -164,7 +163,7 @@ where Ok(()) }) - .map_err(|err| R::Error::from_gles_error(GlesError::BufferAccessError(err))) + .map_err(|err| R::from_gles_error(GlesError::BufferAccessError(err))) .and_then(|x| x) { frame.fail(CaptureFailureReason::Unknown); @@ -194,7 +193,6 @@ pub fn render_session( ) -> Result, DTError> where R: AsGlowRenderer, - R::Error: FromGlesError, F: for<'d> FnOnce( &WlBuffer, &mut R, @@ -321,7 +319,6 @@ pub fn render_workspace_to_buffer( where R: AsGlowRenderer, R::TextureId: Send + Clone + 'static, - R::Error: FromGlesError, CosmicElement: RenderElement, CosmicMappedRenderElement: RenderElement, WorkspaceRenderElement: RenderElement, @@ -554,7 +551,6 @@ pub fn render_window_to_buffer( where R: AsGlowRenderer, R::TextureId: Send + Clone + 'static, - R::Error: FromGlesError, CosmicElement: RenderElement, CosmicMappedRenderElement: RenderElement, { @@ -793,7 +789,6 @@ pub fn render_cursor_to_buffer( where R: AsGlowRenderer, R::TextureId: Send + Clone + 'static, - R::Error: FromGlesError, CosmicElement: RenderElement, CosmicMappedRenderElement: RenderElement, {