Update smithay to latest commit
This commit is contained in:
parent
dd970b8c64
commit
de544e1d31
10 changed files with 59 additions and 35 deletions
2
Cargo.lock
generated
2
Cargo.lock
generated
|
|
@ -4506,7 +4506,7 @@ checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "smithay"
|
name = "smithay"
|
||||||
version = "0.3.0"
|
version = "0.3.0"
|
||||||
source = "git+https://github.com/smithay//smithay?rev=f133e418#f133e418a25b1dfa4520000e08d3c6f548f4f58a"
|
source = "git+https://github.com/smithay//smithay?rev=ba0121a#ba0121aaed065c30ee4c42834126cce481cb0e57"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"appendlist",
|
"appendlist",
|
||||||
"ash",
|
"ash",
|
||||||
|
|
|
||||||
|
|
@ -118,4 +118,4 @@ inherits = "release"
|
||||||
lto = "fat"
|
lto = "fat"
|
||||||
|
|
||||||
[patch."https://github.com/Smithay/smithay.git"]
|
[patch."https://github.com/Smithay/smithay.git"]
|
||||||
smithay = {git = "https://github.com/smithay//smithay", rev = "f133e418"}
|
smithay = {git = "https://github.com/smithay//smithay", rev = "ba0121a"}
|
||||||
|
|
|
||||||
|
|
@ -1268,6 +1268,7 @@ impl Surface {
|
||||||
elements.truncate(old_len);
|
elements.truncate(old_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let res = res.map(|(a, b)| (a.cloned(), b));
|
||||||
std::mem::drop(damage_tracking);
|
std::mem::drop(damage_tracking);
|
||||||
(session, frame, res)
|
(session, frame, res)
|
||||||
})
|
})
|
||||||
|
|
@ -1295,7 +1296,7 @@ impl Surface {
|
||||||
|
|
||||||
if frame_result.needs_sync() {
|
if frame_result.needs_sync() {
|
||||||
if let PrimaryPlaneElement::Swapchain(elem) = &frame_result.primary_element {
|
if let PrimaryPlaneElement::Swapchain(elem) = &frame_result.primary_element {
|
||||||
elem.sync.wait();
|
elem.sync.wait()?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1404,7 +1405,13 @@ impl Surface {
|
||||||
|
|
||||||
let transform = self.output.current_transform();
|
let transform = self.output.current_transform();
|
||||||
|
|
||||||
match submit_buffer(frame, &mut renderer, transform, damage, sync) {
|
match submit_buffer(
|
||||||
|
frame,
|
||||||
|
&mut renderer,
|
||||||
|
transform,
|
||||||
|
damage.as_deref(),
|
||||||
|
sync,
|
||||||
|
) {
|
||||||
Ok(Some((frame, damage))) => {
|
Ok(Some((frame, damage))) => {
|
||||||
if frame_result.is_empty {
|
if frame_result.is_empty {
|
||||||
frame.success(transform, damage, state.clock.now());
|
frame.success(transform, damage, state.clock.now());
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ use smithay::{
|
||||||
Element, Id, RenderElement, UnderlyingStorage,
|
Element, Id, RenderElement, UnderlyingStorage,
|
||||||
},
|
},
|
||||||
glow::{GlowFrame, GlowRenderer},
|
glow::{GlowFrame, GlowRenderer},
|
||||||
utils::CommitCounter,
|
utils::{CommitCounter, DamageSet},
|
||||||
Frame, ImportAll, ImportMem, Renderer,
|
Frame, ImportAll, ImportMem, Renderer,
|
||||||
},
|
},
|
||||||
utils::{Buffer as BufferCoords, Logical, Physical, Point, Rectangle, Scale},
|
utils::{Buffer as BufferCoords, Logical, Physical, Point, Rectangle, Scale},
|
||||||
|
|
@ -116,7 +116,7 @@ where
|
||||||
&self,
|
&self,
|
||||||
scale: Scale<f64>,
|
scale: Scale<f64>,
|
||||||
commit: Option<CommitCounter>,
|
commit: Option<CommitCounter>,
|
||||||
) -> Vec<Rectangle<i32, Physical>> {
|
) -> DamageSet<i32, Physical> {
|
||||||
match self {
|
match self {
|
||||||
CosmicElement::Workspace(elem) => elem.damage_since(scale, commit),
|
CosmicElement::Workspace(elem) => elem.damage_since(scale, commit),
|
||||||
CosmicElement::Cursor(elem) => elem.damage_since(scale, commit),
|
CosmicElement::Cursor(elem) => elem.damage_since(scale, commit),
|
||||||
|
|
@ -374,11 +374,11 @@ impl Element for DamageElement {
|
||||||
&self,
|
&self,
|
||||||
scale: Scale<f64>,
|
scale: Scale<f64>,
|
||||||
_commit: Option<CommitCounter>,
|
_commit: Option<CommitCounter>,
|
||||||
) -> Vec<Rectangle<i32, Physical>> {
|
) -> DamageSet<i32, Physical> {
|
||||||
vec![Rectangle::from_loc_and_size(
|
DamageSet::from_slice(&[Rectangle::from_loc_and_size(
|
||||||
(0, 0),
|
(0, 0),
|
||||||
self.geometry(scale).size,
|
self.geometry(scale).size,
|
||||||
)]
|
)])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -938,17 +938,17 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[profiling::function]
|
#[profiling::function]
|
||||||
pub fn render_output<R, Target, OffTarget>(
|
pub fn render_output<'d, R, Target, OffTarget>(
|
||||||
gpu: Option<&DrmNode>,
|
gpu: Option<&DrmNode>,
|
||||||
renderer: &mut R,
|
renderer: &mut R,
|
||||||
target: Target,
|
target: Target,
|
||||||
damage_tracker: &mut OutputDamageTracker,
|
damage_tracker: &'d mut OutputDamageTracker,
|
||||||
age: usize,
|
age: usize,
|
||||||
state: &mut Common,
|
state: &mut Common,
|
||||||
output: &Output,
|
output: &Output,
|
||||||
cursor_mode: CursorMode,
|
cursor_mode: CursorMode,
|
||||||
fps: Option<&mut Fps>,
|
fps: Option<&mut Fps>,
|
||||||
) -> Result<RenderOutputResult, RenderError<R>>
|
) -> Result<RenderOutputResult<'d>, RenderError<R>>
|
||||||
where
|
where
|
||||||
R: Renderer
|
R: Renderer
|
||||||
+ ImportAll
|
+ ImportAll
|
||||||
|
|
@ -1058,7 +1058,7 @@ where
|
||||||
.bind(render_buffer)
|
.bind(render_buffer)
|
||||||
.map_err(RenderError::Rendering)?;
|
.map_err(RenderError::Rendering)?;
|
||||||
}
|
}
|
||||||
for rect in damage {
|
for rect in damage.iter() {
|
||||||
renderer
|
renderer
|
||||||
.blit_from(target.clone(), *rect, *rect, TextureFilter::Nearest)
|
.blit_from(target.clone(), *rect, *rect, TextureFilter::Nearest)
|
||||||
.map_err(RenderError::Rendering)?;
|
.map_err(RenderError::Rendering)?;
|
||||||
|
|
@ -1083,11 +1083,11 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[profiling::function]
|
#[profiling::function]
|
||||||
pub fn render_workspace<R, Target, OffTarget>(
|
pub fn render_workspace<'d, R, Target, OffTarget>(
|
||||||
gpu: Option<&DrmNode>,
|
gpu: Option<&DrmNode>,
|
||||||
renderer: &mut R,
|
renderer: &mut R,
|
||||||
target: Target,
|
target: Target,
|
||||||
damage_tracker: &mut OutputDamageTracker,
|
damage_tracker: &'d mut OutputDamageTracker,
|
||||||
age: usize,
|
age: usize,
|
||||||
additional_damage: Option<Vec<Rectangle<i32, Logical>>>,
|
additional_damage: Option<Vec<Rectangle<i32, Logical>>>,
|
||||||
state: &mut Common,
|
state: &mut Common,
|
||||||
|
|
@ -1097,7 +1097,7 @@ pub fn render_workspace<R, Target, OffTarget>(
|
||||||
cursor_mode: CursorMode,
|
cursor_mode: CursorMode,
|
||||||
mut fps: Option<&mut Fps>,
|
mut fps: Option<&mut Fps>,
|
||||||
exclude_workspace_overview: bool,
|
exclude_workspace_overview: bool,
|
||||||
) -> Result<(RenderOutputResult, Vec<CosmicElement<R>>), RenderError<R>>
|
) -> Result<(RenderOutputResult<'d>, Vec<CosmicElement<R>>), RenderError<R>>
|
||||||
where
|
where
|
||||||
R: Renderer
|
R: Renderer
|
||||||
+ ImportAll
|
+ ImportAll
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,7 @@ impl WinitState {
|
||||||
.bind()
|
.bind()
|
||||||
.with_context(|| "Failed to bind display")?;
|
.with_context(|| "Failed to bind display")?;
|
||||||
self.backend
|
self.backend
|
||||||
.submit(damage.as_deref())
|
.submit(damage.map(|x| x.as_slice()))
|
||||||
.with_context(|| "Failed to submit buffer for display")?;
|
.with_context(|| "Failed to submit buffer for display")?;
|
||||||
#[cfg(feature = "debug")]
|
#[cfg(feature = "debug")]
|
||||||
self.fps.displayed();
|
self.fps.displayed();
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ use smithay::{
|
||||||
},
|
},
|
||||||
gles::element::PixelShaderElement,
|
gles::element::PixelShaderElement,
|
||||||
glow::GlowRenderer,
|
glow::GlowRenderer,
|
||||||
|
utils::DamageSet,
|
||||||
ImportAll, ImportMem, Renderer,
|
ImportAll, ImportMem, Renderer,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
@ -1146,7 +1147,7 @@ where
|
||||||
&self,
|
&self,
|
||||||
scale: Scale<f64>,
|
scale: Scale<f64>,
|
||||||
commit: Option<smithay::backend::renderer::utils::CommitCounter>,
|
commit: Option<smithay::backend::renderer::utils::CommitCounter>,
|
||||||
) -> Vec<Rectangle<i32, Physical>> {
|
) -> DamageSet<i32, Physical> {
|
||||||
match self {
|
match self {
|
||||||
CosmicMappedRenderElement::Stack(elem) => elem.damage_since(scale, commit),
|
CosmicMappedRenderElement::Stack(elem) => elem.damage_since(scale, commit),
|
||||||
CosmicMappedRenderElement::Window(elem) => elem.damage_since(scale, commit),
|
CosmicMappedRenderElement::Window(elem) => elem.damage_since(scale, commit),
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ use smithay::{
|
||||||
},
|
},
|
||||||
gles::{GlesError, GlesTexture},
|
gles::{GlesError, GlesTexture},
|
||||||
glow::{GlowFrame, GlowRenderer},
|
glow::{GlowFrame, GlowRenderer},
|
||||||
|
utils::DamageSet,
|
||||||
ImportAll, ImportMem, Renderer,
|
ImportAll, ImportMem, Renderer,
|
||||||
},
|
},
|
||||||
desktop::{layer_map_for_output, space::SpaceElement},
|
desktop::{layer_map_for_output, space::SpaceElement},
|
||||||
|
|
@ -1325,7 +1326,7 @@ where
|
||||||
&self,
|
&self,
|
||||||
scale: Scale<f64>,
|
scale: Scale<f64>,
|
||||||
commit: Option<smithay::backend::renderer::utils::CommitCounter>,
|
commit: Option<smithay::backend::renderer::utils::CommitCounter>,
|
||||||
) -> Vec<Rectangle<i32, smithay::utils::Physical>> {
|
) -> DamageSet<i32, smithay::utils::Physical> {
|
||||||
match self {
|
match self {
|
||||||
WorkspaceRenderElement::OverrideRedirect(elem) => elem.damage_since(scale, commit),
|
WorkspaceRenderElement::OverrideRedirect(elem) => elem.damage_since(scale, commit),
|
||||||
WorkspaceRenderElement::Fullscreen(elem) => elem.damage_since(scale, commit),
|
WorkspaceRenderElement::Fullscreen(elem) => elem.damage_since(scale, commit),
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@ pub fn submit_buffer<R>(
|
||||||
frame: Frame,
|
frame: Frame,
|
||||||
renderer: &mut R,
|
renderer: &mut R,
|
||||||
transform: Transform,
|
transform: Transform,
|
||||||
damage: Option<Vec<Rectangle<i32, Physical>>>,
|
damage: Option<&[Rectangle<i32, Physical>]>,
|
||||||
sync: SyncPoint,
|
sync: SyncPoint,
|
||||||
) -> Result<Option<(Frame, Vec<Rectangle<i32, BufferCoords>>)>, <R as Renderer>::Error>
|
) -> Result<Option<(Frame, Vec<Rectangle<i32, BufferCoords>>)>, <R as Renderer>::Error>
|
||||||
where
|
where
|
||||||
|
|
@ -141,13 +141,13 @@ pub fn render_session<F, R>(
|
||||||
) -> Result<Option<(Frame, Vec<Rectangle<i32, BufferCoords>>)>, DTError<R>>
|
) -> Result<Option<(Frame, Vec<Rectangle<i32, BufferCoords>>)>, DTError<R>>
|
||||||
where
|
where
|
||||||
R: ExportMem,
|
R: ExportMem,
|
||||||
F: FnOnce(
|
F: for<'d> FnOnce(
|
||||||
&WlBuffer,
|
&WlBuffer,
|
||||||
&mut R,
|
&mut R,
|
||||||
&mut OutputDamageTracker,
|
&'d mut OutputDamageTracker,
|
||||||
usize,
|
usize,
|
||||||
Vec<Rectangle<i32, BufferCoords>>,
|
Vec<Rectangle<i32, BufferCoords>>,
|
||||||
) -> Result<RenderOutputResult, DTError<R>>,
|
) -> Result<RenderOutputResult<'d>, DTError<R>>,
|
||||||
{
|
{
|
||||||
#[cfg(feature = "debug")]
|
#[cfg(feature = "debug")]
|
||||||
puffin::profile_function!();
|
puffin::profile_function!();
|
||||||
|
|
@ -165,8 +165,14 @@ where
|
||||||
);
|
);
|
||||||
|
|
||||||
match res {
|
match res {
|
||||||
Ok(result) => submit_buffer(frame, renderer, transform, result.damage, result.sync)
|
Ok(result) => submit_buffer(
|
||||||
.map_err(DTError::Rendering),
|
frame,
|
||||||
|
renderer,
|
||||||
|
transform,
|
||||||
|
result.damage.map(|x| x.as_slice()),
|
||||||
|
result.sync,
|
||||||
|
)
|
||||||
|
.map_err(DTError::Rendering),
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
frame.fail(FailureReason::Unknown);
|
frame.fail(FailureReason::Unknown);
|
||||||
Err(err)
|
Err(err)
|
||||||
|
|
@ -214,17 +220,17 @@ pub fn render_workspace_to_buffer(
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn render_fn<R>(
|
fn render_fn<'d, R>(
|
||||||
buffer: &WlBuffer,
|
buffer: &WlBuffer,
|
||||||
renderer: &mut R,
|
renderer: &mut R,
|
||||||
dt: &mut OutputDamageTracker,
|
dt: &'d mut OutputDamageTracker,
|
||||||
age: usize,
|
age: usize,
|
||||||
additional_damage: Vec<Rectangle<i32, BufferCoords>>,
|
additional_damage: Vec<Rectangle<i32, BufferCoords>>,
|
||||||
draw_cursor: bool,
|
draw_cursor: bool,
|
||||||
common: &mut Common,
|
common: &mut Common,
|
||||||
output: &Output,
|
output: &Output,
|
||||||
handle: (WorkspaceHandle, usize),
|
handle: (WorkspaceHandle, usize),
|
||||||
) -> Result<RenderOutputResult, DTError<R>>
|
) -> Result<RenderOutputResult<'d>, DTError<R>>
|
||||||
where
|
where
|
||||||
R: Renderer
|
R: Renderer
|
||||||
+ ImportAll
|
+ ImportAll
|
||||||
|
|
@ -475,17 +481,17 @@ pub fn render_window_to_buffer(
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn render_fn<R>(
|
fn render_fn<'d, R>(
|
||||||
buffer: &WlBuffer,
|
buffer: &WlBuffer,
|
||||||
renderer: &mut R,
|
renderer: &mut R,
|
||||||
dt: &mut OutputDamageTracker,
|
dt: &'d mut OutputDamageTracker,
|
||||||
age: usize,
|
age: usize,
|
||||||
additional_damage: Vec<Rectangle<i32, BufferCoords>>,
|
additional_damage: Vec<Rectangle<i32, BufferCoords>>,
|
||||||
draw_cursor: bool,
|
draw_cursor: bool,
|
||||||
common: &mut Common,
|
common: &mut Common,
|
||||||
window: &CosmicSurface,
|
window: &CosmicSurface,
|
||||||
geometry: Rectangle<i32, Logical>,
|
geometry: Rectangle<i32, Logical>,
|
||||||
) -> Result<RenderOutputResult, DTError<R>>
|
) -> Result<RenderOutputResult<'d>, DTError<R>>
|
||||||
where
|
where
|
||||||
R: Renderer
|
R: Renderer
|
||||||
+ ImportAll
|
+ ImportAll
|
||||||
|
|
@ -734,15 +740,15 @@ pub fn render_cursor_to_buffer(
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn render_fn<R>(
|
fn render_fn<'d, R>(
|
||||||
buffer: &WlBuffer,
|
buffer: &WlBuffer,
|
||||||
renderer: &mut R,
|
renderer: &mut R,
|
||||||
dt: &mut OutputDamageTracker,
|
dt: &'d mut OutputDamageTracker,
|
||||||
age: usize,
|
age: usize,
|
||||||
additional_damage: Vec<Rectangle<i32, BufferCoords>>,
|
additional_damage: Vec<Rectangle<i32, BufferCoords>>,
|
||||||
common: &mut Common,
|
common: &mut Common,
|
||||||
seat: &Seat<State>,
|
seat: &Seat<State>,
|
||||||
) -> Result<RenderOutputResult, DTError<R>>
|
) -> Result<RenderOutputResult<'d>, DTError<R>>
|
||||||
where
|
where
|
||||||
R: Renderer
|
R: Renderer
|
||||||
+ ImportAll
|
+ ImportAll
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,15 @@
|
||||||
// SPDX-License-Identifier: GPL-3.0-only
|
// SPDX-License-Identifier: GPL-3.0-only
|
||||||
|
|
||||||
use crate::state::State;
|
use crate::state::State;
|
||||||
use smithay::delegate_tablet_manager;
|
use smithay::{
|
||||||
|
backend::input::TabletToolDescriptor, delegate_tablet_manager,
|
||||||
|
input::pointer::CursorImageStatus, wayland::tablet_manager::TabletSeatHandler,
|
||||||
|
};
|
||||||
|
|
||||||
|
impl TabletSeatHandler for State {
|
||||||
|
fn tablet_tool_image(&mut self, _tool: &TabletToolDescriptor, _image: CursorImageStatus) {
|
||||||
|
// TODO display cursor for each tablet tool
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
delegate_tablet_manager!(State);
|
delegate_tablet_manager!(State);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue