element: Allow overriding default scanout behaviour
This commit is contained in:
parent
be1424f1ca
commit
c3d2b5f0b7
8 changed files with 52 additions and 9 deletions
|
|
@ -618,6 +618,7 @@ impl CosmicMapped {
|
|||
location: smithay::utils::Point<i32, smithay::utils::Physical>,
|
||||
scale: smithay::utils::Scale<f64>,
|
||||
alpha: f32,
|
||||
scanout_override: Option<bool>,
|
||||
) -> Vec<C>
|
||||
where
|
||||
R: Renderer + ImportAll + ImportMem + AsGlowRenderer,
|
||||
|
|
@ -803,11 +804,19 @@ impl CosmicMapped {
|
|||
#[cfg_attr(not(feature = "debug"), allow(unused_mut))]
|
||||
elements.extend(match &self.element {
|
||||
CosmicMappedInternal::Stack(s) => s.render_elements::<R, CosmicMappedRenderElement<R>>(
|
||||
renderer, location, scale, alpha,
|
||||
renderer,
|
||||
location,
|
||||
scale,
|
||||
alpha,
|
||||
scanout_override,
|
||||
),
|
||||
CosmicMappedInternal::Window(w) => w
|
||||
.render_elements::<R, CosmicMappedRenderElement<R>>(
|
||||
renderer, location, scale, alpha,
|
||||
renderer,
|
||||
location,
|
||||
scale,
|
||||
alpha,
|
||||
scanout_override,
|
||||
),
|
||||
_ => unreachable!(),
|
||||
});
|
||||
|
|
|
|||
|
|
@ -649,6 +649,7 @@ impl CosmicStack {
|
|||
location: Point<i32, Physical>,
|
||||
scale: Scale<f64>,
|
||||
alpha: f32,
|
||||
scanout_override: Option<bool>,
|
||||
) -> Vec<C>
|
||||
where
|
||||
R: Renderer + ImportAll + ImportMem,
|
||||
|
|
@ -675,7 +676,11 @@ impl CosmicStack {
|
|||
let active = p.active.load(Ordering::SeqCst);
|
||||
|
||||
windows[active].render_elements::<R, CosmicStackRenderElement<R>>(
|
||||
renderer, window_loc, scale, alpha,
|
||||
renderer,
|
||||
window_loc,
|
||||
scale,
|
||||
alpha,
|
||||
scanout_override,
|
||||
)
|
||||
}));
|
||||
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ use smithay::{
|
|||
element::{
|
||||
surface::{render_elements_from_surface_tree, WaylandSurfaceRenderElement},
|
||||
utils::select_dmabuf_feedback,
|
||||
AsRenderElements, RenderElementStates,
|
||||
AsRenderElements, Kind, RenderElementStates,
|
||||
},
|
||||
ImportAll, Renderer,
|
||||
},
|
||||
|
|
@ -27,7 +27,7 @@ use smithay::{
|
|||
output::Output,
|
||||
reexports::{
|
||||
wayland_protocols::{
|
||||
wp::presentation_time::server::wp_presentation_feedback::Kind,
|
||||
wp::presentation_time::server::wp_presentation_feedback::Kind as PresentationKind,
|
||||
xdg::{
|
||||
decoration::zv1::server::zxdg_toplevel_decoration_v1::Mode as DecorationMode,
|
||||
shell::server::xdg_toplevel::State as ToplevelState,
|
||||
|
|
@ -699,7 +699,7 @@ impl CosmicSurface {
|
|||
presentation_feedback_flags: F2,
|
||||
) where
|
||||
F1: FnMut(&WlSurface, &SurfaceData) -> Option<Output> + Copy,
|
||||
F2: FnMut(&WlSurface, &SurfaceData) -> Kind + Copy,
|
||||
F2: FnMut(&WlSurface, &SurfaceData) -> PresentationKind + Copy,
|
||||
{
|
||||
self.0.take_presentation_feedback(
|
||||
output_feedback,
|
||||
|
|
@ -760,6 +760,7 @@ impl CosmicSurface {
|
|||
location: Point<i32, Physical>,
|
||||
scale: Scale<f64>,
|
||||
alpha: f32,
|
||||
scanout_override: Option<bool>,
|
||||
) -> Vec<C>
|
||||
where
|
||||
R: Renderer + ImportAll,
|
||||
|
|
@ -776,7 +777,16 @@ impl CosmicSurface {
|
|||
location,
|
||||
scale,
|
||||
alpha,
|
||||
FRAME_TIME_FILTER,
|
||||
scanout_override
|
||||
.map(|val| {
|
||||
if val {
|
||||
Kind::ScanoutCandidate
|
||||
} else {
|
||||
Kind::Unspecified
|
||||
}
|
||||
.into()
|
||||
})
|
||||
.unwrap_or(FRAME_TIME_FILTER),
|
||||
)
|
||||
}
|
||||
WindowSurface::X11(surface) => {
|
||||
|
|
@ -790,7 +800,16 @@ impl CosmicSurface {
|
|||
location,
|
||||
scale,
|
||||
alpha,
|
||||
FRAME_TIME_FILTER,
|
||||
scanout_override
|
||||
.map(|val| {
|
||||
if val {
|
||||
Kind::ScanoutCandidate
|
||||
} else {
|
||||
Kind::Unspecified
|
||||
}
|
||||
.into()
|
||||
})
|
||||
.unwrap_or(FRAME_TIME_FILTER),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -350,6 +350,7 @@ impl CosmicWindow {
|
|||
location: Point<i32, Physical>,
|
||||
scale: Scale<f64>,
|
||||
alpha: f32,
|
||||
scanout_override: Option<bool>,
|
||||
) -> Vec<C>
|
||||
where
|
||||
R: Renderer + ImportAll + ImportMem,
|
||||
|
|
@ -368,7 +369,11 @@ impl CosmicWindow {
|
|||
|
||||
elements.extend(self.0.with_program(|p| {
|
||||
p.window.render_elements::<R, CosmicWindowRenderElement<R>>(
|
||||
renderer, window_loc, scale, alpha,
|
||||
renderer,
|
||||
window_loc,
|
||||
scale,
|
||||
alpha,
|
||||
scanout_override,
|
||||
)
|
||||
}));
|
||||
|
||||
|
|
|
|||
|
|
@ -187,6 +187,7 @@ impl MoveGrabState {
|
|||
.to_physical_precise_round(output_scale),
|
||||
output_scale,
|
||||
alpha,
|
||||
Some(false),
|
||||
);
|
||||
let p_elements = self
|
||||
.window
|
||||
|
|
|
|||
|
|
@ -1468,6 +1468,7 @@ impl FloatingLayout {
|
|||
.to_physical_precise_round(output_scale),
|
||||
output_scale.into(),
|
||||
alpha,
|
||||
None,
|
||||
);
|
||||
|
||||
if let Some(anim) = self.animations.get(elem) {
|
||||
|
|
|
|||
|
|
@ -4983,6 +4983,7 @@ where
|
|||
geo.loc.as_logical().to_physical_precise_round(output_scale) - elem_geometry.loc,
|
||||
Scale::from(output_scale),
|
||||
alpha,
|
||||
None,
|
||||
);
|
||||
|
||||
elements.extend(window_elements.into_iter().flat_map(|element| {
|
||||
|
|
@ -5470,6 +5471,7 @@ where
|
|||
- elem_geometry.loc,
|
||||
Scale::from(output_scale),
|
||||
alpha,
|
||||
None,
|
||||
);
|
||||
|
||||
if swap_desc
|
||||
|
|
|
|||
|
|
@ -1556,6 +1556,7 @@ impl Workspace {
|
|||
render_loc,
|
||||
output_scale.into(),
|
||||
alpha,
|
||||
Some(true),
|
||||
)
|
||||
.into_iter()
|
||||
.map(|elem| RescaleRenderElement::from_element(elem, render_loc, scale))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue