mirror of
https://github.com/niri-wm/niri.git
synced 2026-06-21 02:01:55 +07:00
Update Smithay (apply state in post commit)
This commit is contained in:
Generated
+2
-2
@@ -3479,7 +3479,7 @@ checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c"
|
||||
[[package]]
|
||||
name = "smithay"
|
||||
version = "0.3.0"
|
||||
source = "git+https://github.com/Smithay/smithay.git#c4844428f8de024222a44cd906060f2af77f4ba1"
|
||||
source = "git+https://github.com/Smithay/smithay.git#e97bff13dd404bf350f3872de726803d7aed8b85"
|
||||
dependencies = [
|
||||
"appendlist",
|
||||
"bitflags 2.6.0",
|
||||
@@ -3553,7 +3553,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "smithay-drm-extras"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/Smithay/smithay.git#c4844428f8de024222a44cd906060f2af77f4ba1"
|
||||
source = "git+https://github.com/Smithay/smithay.git#e97bff13dd404bf350f3872de726803d7aed8b85"
|
||||
dependencies = [
|
||||
"drm",
|
||||
"edid-rs",
|
||||
|
||||
@@ -13,6 +13,7 @@ use knuffel::Decode as _;
|
||||
use miette::{miette, Context, IntoDiagnostic, NarratableReportHandler};
|
||||
use niri_ipc::{ConfiguredMode, LayoutSwitchTarget, SizeChange, Transform, WorkspaceReferenceArg};
|
||||
use regex::Regex;
|
||||
use smithay::backend::renderer::Color32F;
|
||||
use smithay::input::keyboard::keysyms::KEY_NoSymbol;
|
||||
use smithay::input::keyboard::xkb::{keysym_from_name, KEYSYM_CASE_INSENSITIVE};
|
||||
use smithay::input::keyboard::{Keysym, XkbConfig};
|
||||
@@ -580,6 +581,10 @@ impl Color {
|
||||
Self { r, g, b, a }
|
||||
}
|
||||
|
||||
pub fn from_color32f(color: Color32F) -> Self {
|
||||
Self::from_array_premul(color.components())
|
||||
}
|
||||
|
||||
pub fn to_array_unpremul(self) -> [f32; 4] {
|
||||
[self.r, self.g, self.b, self.a]
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ mod imp {
|
||||
use smithay::backend::egl::ffi::egl;
|
||||
use smithay::backend::egl::EGLContext;
|
||||
use smithay::backend::renderer::gles::GlesRenderer;
|
||||
use smithay::backend::renderer::{Frame, Renderer, Unbind};
|
||||
use smithay::backend::renderer::{Color32F, Frame, Renderer, Unbind};
|
||||
use smithay::utils::{Physical, Rectangle, Scale, Transform};
|
||||
|
||||
use super::*;
|
||||
@@ -147,7 +147,7 @@ mod imp {
|
||||
.context("error creating frame")?;
|
||||
|
||||
frame
|
||||
.clear([0.3, 0.3, 0.3, 1.], &[rect])
|
||||
.clear(Color32F::from([0.3, 0.3, 0.3, 1.]), &[rect])
|
||||
.context("error clearing")?;
|
||||
|
||||
for element in elements.iter().rev() {
|
||||
|
||||
+2
-2
@@ -758,8 +758,8 @@ impl<W: LayoutElement> Tile<W> {
|
||||
geo.size,
|
||||
Rectangle::from_loc_and_size((0., 0.), geo.size),
|
||||
GradientInterpolation::default(),
|
||||
Color::from_array_premul(elem.color()),
|
||||
Color::from_array_premul(elem.color()),
|
||||
Color::from_color32f(elem.color()),
|
||||
Color::from_color32f(elem.color()),
|
||||
0.,
|
||||
Rectangle::from_loc_and_size((0., 0.), geo.size),
|
||||
0.,
|
||||
|
||||
+2
-1
@@ -32,7 +32,7 @@ use smithay::backend::renderer::element::{
|
||||
};
|
||||
use smithay::backend::renderer::gles::GlesRenderer;
|
||||
use smithay::backend::renderer::sync::SyncPoint;
|
||||
use smithay::backend::renderer::Unbind;
|
||||
use smithay::backend::renderer::{Color32F, Unbind};
|
||||
use smithay::desktop::utils::{
|
||||
bbox_from_surface_tree, output_update, send_dmabuf_feedback_surface_tree,
|
||||
send_frames_surface_tree, surface_presentation_feedback_flags_from_states,
|
||||
@@ -1137,6 +1137,7 @@ impl State {
|
||||
.unwrap_or(DEFAULT_BACKGROUND_COLOR)
|
||||
.to_array_unpremul();
|
||||
background_color[3] = 1.;
|
||||
let background_color = Color32F::from(background_color);
|
||||
|
||||
if let Some(state) = self.niri.output_state.get_mut(output) {
|
||||
if state.background_buffer.color() != background_color {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -290,8 +290,8 @@ impl Mapped {
|
||||
geo.size,
|
||||
Rectangle::from_loc_and_size((0., 0.), geo.size),
|
||||
GradientInterpolation::default(),
|
||||
Color::from_array_premul(elem.color()),
|
||||
Color::from_array_premul(elem.color()),
|
||||
Color::from_color32f(elem.color()),
|
||||
Color::from_color32f(elem.color()),
|
||||
0.,
|
||||
Rectangle::from_loc_and_size((0., 0.), geo.size),
|
||||
0.,
|
||||
|
||||
Reference in New Issue
Block a user