diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-08-20 11:43:32 +0300 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-08-22 14:15:04 +0300 |
| commit | 618fa08aa5649e867c24db5ae941ca7f5064eeca (patch) | |
| tree | 085dbbd37c3069c258c33f819fcfcd5ea3868a8a /src/render_helpers | |
| parent | a40e7b44707692335910532c33e41cad0023844e (diff) | |
| download | niri-618fa08aa5649e867c24db5ae941ca7f5064eeca.tar.gz niri-618fa08aa5649e867c24db5ae941ca7f5064eeca.tar.bz2 niri-618fa08aa5649e867c24db5ae941ca7f5064eeca.zip | |
Update Smithay (apply state in post commit)
Diffstat (limited to 'src/render_helpers')
| -rw-r--r-- | src/render_helpers/mod.rs | 4 | ||||
| -rw-r--r-- | src/render_helpers/solid_color.rs | 33 |
2 files changed, 17 insertions, 20 deletions
diff --git a/src/render_helpers/mod.rs b/src/render_helpers/mod.rs index f69eec05..1af6aeab 100644 --- a/src/render_helpers/mod.rs +++ b/src/render_helpers/mod.rs @@ -8,7 +8,7 @@ use smithay::backend::renderer::element::utils::{Relocate, RelocateRenderElement use smithay::backend::renderer::element::{Kind, RenderElement}; use smithay::backend::renderer::gles::{GlesMapping, GlesRenderer, GlesTexture}; use smithay::backend::renderer::sync::SyncPoint; -use smithay::backend::renderer::{Bind, ExportMem, Frame, Offscreen, Renderer}; +use smithay::backend::renderer::{Bind, Color32F, ExportMem, Frame, Offscreen, Renderer}; use smithay::reexports::wayland_server::protocol::wl_buffer::WlBuffer; use smithay::reexports::wayland_server::protocol::wl_shm; use smithay::utils::{Logical, Physical, Point, Rectangle, Scale, Size, Transform}; @@ -302,7 +302,7 @@ fn render_elements( .context("error starting frame")?; frame - .clear([0., 0., 0., 0.], &[output_rect]) + .clear(Color32F::TRANSPARENT, &[output_rect]) .context("error clearing")?; for element in elements { diff --git a/src/render_helpers/solid_color.rs b/src/render_helpers/solid_color.rs index 5ce29f47..cdda19c8 100644 --- a/src/render_helpers/solid_color.rs +++ b/src/render_helpers/solid_color.rs @@ -1,6 +1,6 @@ use smithay::backend::renderer::element::{Element, Id, Kind, RenderElement, UnderlyingStorage}; use smithay::backend::renderer::utils::{CommitCounter, OpaqueRegions}; -use smithay::backend::renderer::{Frame as _, Renderer}; +use smithay::backend::renderer::{Color32F, Frame as _, Renderer}; use smithay::utils::{Buffer, Logical, Physical, Point, Rectangle, Scale, Size}; /// Smithay's solid color buffer, but with fractional scale. @@ -9,7 +9,7 @@ pub struct SolidColorBuffer { id: Id, size: Size<f64, Logical>, commit: CommitCounter, - color: [f32; 4], + color: Color32F, } /// Render element for a [`SolidColorBuffer`]. @@ -18,7 +18,7 @@ pub struct SolidColorRenderElement { id: Id, geometry: Rectangle<f64, Logical>, commit: CommitCounter, - color: [f32; 4], + color: Color32F, kind: Kind, } @@ -34,10 +34,10 @@ impl Default for SolidColorBuffer { } impl SolidColorBuffer { - pub fn new(size: impl Into<Size<f64, Logical>>, color: [f32; 4]) -> Self { + pub fn new(size: impl Into<Size<f64, Logical>>, color: impl Into<Color32F>) -> Self { SolidColorBuffer { id: Id::new(), - color, + color: color.into(), commit: CommitCounter::default(), size: size.into(), } @@ -51,15 +51,17 @@ impl SolidColorBuffer { } } - pub fn set_color(&mut self, color: [f32; 4]) { + pub fn set_color(&mut self, color: impl Into<Color32F>) { + let color = color.into(); if color != self.color { self.color = color; self.commit.increment(); } } - pub fn update(&mut self, size: impl Into<Size<f64, Logical>>, color: [f32; 4]) { + pub fn update(&mut self, size: impl Into<Size<f64, Logical>>, color: impl Into<Color32F>) { let size = size.into(); + let color = color.into(); if size != self.size || color != self.color { self.size = size; self.color = color; @@ -67,7 +69,7 @@ impl SolidColorBuffer { } } - pub fn color(&self) -> [f32; 4] { + pub fn color(&self) -> Color32F { self.color } @@ -84,12 +86,7 @@ impl SolidColorRenderElement { kind: Kind, ) -> Self { let geo = Rectangle::from_loc_and_size(location, buffer.size()); - let color = [ - buffer.color[0] * alpha, - buffer.color[1] * alpha, - buffer.color[2] * alpha, - buffer.color[3] * alpha, - ]; + let color = buffer.color * alpha; Self::new(buffer.id.clone(), geo, buffer.commit, color, kind) } @@ -97,7 +94,7 @@ impl SolidColorRenderElement { id: Id, geometry: Rectangle<f64, Logical>, commit: CommitCounter, - color: [f32; 4], + color: Color32F, kind: Kind, ) -> Self { SolidColorRenderElement { @@ -109,7 +106,7 @@ impl SolidColorRenderElement { } } - pub fn color(&self) -> [f32; 4] { + pub fn color(&self) -> Color32F { self.color } @@ -136,7 +133,7 @@ impl Element for SolidColorRenderElement { } fn opaque_regions(&self, scale: Scale<f64>) -> OpaqueRegions<i32, Physical> { - if self.color[3] == 1f32 { + if self.color.is_opaque() { let rect = Rectangle::from_loc_and_size((0., 0.), self.geometry.size) .to_physical_precise_down(scale); OpaqueRegions::from_slice(&[rect]) @@ -146,7 +143,7 @@ impl Element for SolidColorRenderElement { } fn alpha(&self) -> f32 { - self.color[3] + self.color.a() } fn kind(&self) -> Kind { |
