diff options
author | 2021-07-22 13:23:36 -0500 | |
---|---|---|
committer | 2021-07-22 13:23:36 -0500 | |
commit | e5010b8ab87b2e30feea366396bc060c8e793d8d (patch) | |
tree | 73738efeafd4cf4151a9adb7523a31c848fa0cae /graphics | |
parent | a7d2834a6d15466eecca29bb6357d3539cb652cd (diff) | |
download | iced-e5010b8ab87b2e30feea366396bc060c8e793d8d.tar.gz iced-e5010b8ab87b2e30feea366396bc060c8e793d8d.tar.bz2 iced-e5010b8ab87b2e30feea366396bc060c8e793d8d.zip |
redo custom error for Compositor::draw()
Diffstat (limited to 'graphics')
-rw-r--r-- | graphics/src/window.rs | 2 | ||||
-rw-r--r-- | graphics/src/window/compositor.rs | 41 |
2 files changed, 21 insertions, 22 deletions
diff --git a/graphics/src/window.rs b/graphics/src/window.rs index 6813643d..365ddfbc 100644 --- a/graphics/src/window.rs +++ b/graphics/src/window.rs @@ -4,7 +4,7 @@ mod compositor; #[cfg(feature = "opengl")] mod gl_compositor; -pub use compositor::{Compositor, CompositorDrawError}; +pub use compositor::{Compositor, SwapChainError}; #[cfg(feature = "opengl")] pub use gl_compositor::GLCompositor; diff --git a/graphics/src/window/compositor.rs b/graphics/src/window/compositor.rs index 9f7cb43f..9811d95d 100644 --- a/graphics/src/window/compositor.rs +++ b/graphics/src/window/compositor.rs @@ -52,33 +52,32 @@ pub trait Compositor: Sized { background_color: Color, output: &<Self::Renderer as iced_native::Renderer>::Output, overlay: &[T], - ) -> Result<mouse::Interaction, CompositorDrawError>; + ) -> Result<mouse::Interaction, SwapChainError>; } /// Result of an unsuccessful call to [`Compositor::draw`]. -#[derive(Debug)] -pub enum CompositorDrawError { - /// The swapchain is outdated. Try rendering again next frame. - SwapchainOutdated(Box<dyn std::error::Error>), - /// A fatal swapchain error occured. Rendering cannot continue. - FatalSwapchainError(Box<dyn std::error::Error>), +/// Result of an unsuccessful call to [`SwapChain::get_current_frame`]. +#[derive(Clone, PartialEq, Eq, Debug)] +pub enum SwapChainError { + /// A timeout was encountered while trying to acquire the next frame. + Timeout, + /// The underlying surface has changed, and therefore the swap chain must be updated. + Outdated, + /// The swap chain has been lost and needs to be recreated. + Lost, + /// There is no more memory left to allocate a new frame. + OutOfMemory, } -impl std::error::Error for CompositorDrawError {} +impl std::error::Error for SwapChainError {} -impl std::fmt::Display for CompositorDrawError { +impl std::fmt::Display for SwapChainError { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - match self { - CompositorDrawError::SwapchainOutdated(e) => write!( - f, - "Swapchain is outdated: {}. Try rendering next frame.", - e - ), - CompositorDrawError::FatalSwapchainError(e) => write!( - f, - "Fatal swapchain error: {}. Rendering cannot continue.", - e - ), - } + write!(f, "{}", match self { + Self::Timeout => "A timeout was encountered while trying to acquire the next frame", + Self::Outdated => "The underlying surface has changed, and therefore the swap chain must be updated", + Self::Lost => "The swap chain has been lost and needs to be recreated", + Self::OutOfMemory => "There is no more memory left to allocate a new frame", + }) } } |