diff options
Diffstat (limited to 'wgpu/src/backend.rs')
-rw-r--r-- | wgpu/src/backend.rs | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/wgpu/src/backend.rs b/wgpu/src/backend.rs index 73fa5c5f..bb84cc8f 100644 --- a/wgpu/src/backend.rs +++ b/wgpu/src/backend.rs @@ -8,7 +8,6 @@ use iced_graphics::font; use iced_graphics::layer::Layer; use iced_graphics::{Primitive, Viewport}; use iced_native::alignment; -use iced_native::mouse; use iced_native::{Font, Size}; #[cfg(any(feature = "image_rs", feature = "svg"))] @@ -28,6 +27,7 @@ pub struct Backend { image_pipeline: image::Pipeline, default_text_size: u16, + primitive: Primitive, } impl Backend { @@ -60,6 +60,7 @@ impl Backend { image_pipeline, default_text_size: settings.default_text_size, + primitive: Primitive::None, } } @@ -67,23 +68,23 @@ impl Backend { /// /// The text provided as overlay will be rendered on top of the primitives. /// This is useful for rendering debug information. - pub fn draw<T: AsRef<str>>( + pub fn present<T: AsRef<str>>( &mut self, device: &wgpu::Device, staging_belt: &mut wgpu::util::StagingBelt, encoder: &mut wgpu::CommandEncoder, frame: &wgpu::TextureView, + primitives: &[Primitive], viewport: &Viewport, - (primitive, mouse_interaction): &(Primitive, mouse::Interaction), overlay_text: &[T], - ) -> mouse::Interaction { + ) { log::debug!("Drawing"); let target_size = viewport.physical_size(); let scale_factor = viewport.scale_factor() as f32; let transformation = viewport.projection(); - let mut layers = Layer::generate(primitive, viewport); + let mut layers = Layer::generate(primitives, viewport); layers.push(Layer::overlay(overlay_text, viewport)); for layer in layers { @@ -102,8 +103,6 @@ impl Backend { #[cfg(any(feature = "image_rs", feature = "svg"))] self.image_pipeline.trim_cache(); - - *mouse_interaction } fn flush( @@ -120,6 +119,10 @@ impl Backend { ) { let bounds = (layer.bounds * scale_factor).snap(); + if bounds.width < 1 || bounds.height < 1 { + return; + } + if !layer.quads.is_empty() { self.quad_pipeline.draw( device, |