aboutsummaryrefslogtreecommitdiff
path: root/src/render_helpers
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-08-20 11:43:32 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2024-08-22 14:15:04 +0300
commit618fa08aa5649e867c24db5ae941ca7f5064eeca (patch)
tree085dbbd37c3069c258c33f819fcfcd5ea3868a8a /src/render_helpers
parenta40e7b44707692335910532c33e41cad0023844e (diff)
downloadniri-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.rs4
-rw-r--r--src/render_helpers/solid_color.rs33
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 {