element: Introduce SurfaceRenderElement
This commit is contained in:
parent
8b990e5658
commit
178c6593dc
12 changed files with 254 additions and 213 deletions
|
|
@ -4,8 +4,8 @@ use super::{
|
|||
};
|
||||
use crate::{
|
||||
backend::render::{
|
||||
IndicatorShader, Key, Usage, clipped_surface::ClippedSurfaceRenderElement,
|
||||
cursor::CursorState, element::AsGlowRenderer, shadow::ShadowShader,
|
||||
IndicatorShader, Key, Usage, cursor::CursorState, element::AsGlowRenderer,
|
||||
shadow::ShadowShader, wayland::SurfaceRenderElement,
|
||||
},
|
||||
hooks::{Decorations, HOOKS},
|
||||
shell::{
|
||||
|
|
@ -41,7 +41,6 @@ use smithay::{
|
|||
element::{
|
||||
AsRenderElements, Element, Id as RendererId, Kind, RenderElement,
|
||||
UnderlyingStorage, memory::MemoryRenderBufferRenderElement,
|
||||
surface::WaylandSurfaceRenderElement,
|
||||
},
|
||||
gles::element::PixelShaderElement,
|
||||
glow::GlowRenderer,
|
||||
|
|
@ -820,32 +819,16 @@ impl CosmicStack {
|
|||
});
|
||||
|
||||
border.into_iter().chain(
|
||||
windows[active]
|
||||
.render_elements::<R, WaylandSurfaceRenderElement<R>>(
|
||||
renderer,
|
||||
window_loc,
|
||||
scale,
|
||||
alpha,
|
||||
scanout_override,
|
||||
scanout_node,
|
||||
)
|
||||
.into_iter()
|
||||
.map(move |elem| {
|
||||
let radii = radii.map(|[a, _, c, _]| [a, 0, c, 0]);
|
||||
if radii.is_some_and(|radii| {
|
||||
ClippedSurfaceRenderElement::will_clip(&elem, scale, geo, radii)
|
||||
}) {
|
||||
CosmicStackRenderElement::Clipped(ClippedSurfaceRenderElement::new(
|
||||
renderer,
|
||||
elem,
|
||||
scale,
|
||||
geo,
|
||||
radii.unwrap(),
|
||||
))
|
||||
} else {
|
||||
CosmicStackRenderElement::Window(elem)
|
||||
}
|
||||
}),
|
||||
windows[active].render_elements::<R, CosmicStackRenderElement<R>>(
|
||||
renderer,
|
||||
window_loc,
|
||||
scale,
|
||||
alpha,
|
||||
scanout_override,
|
||||
scanout_node,
|
||||
radii.is_some(),
|
||||
radii.unwrap_or([0; 4]),
|
||||
),
|
||||
)
|
||||
}));
|
||||
|
||||
|
|
@ -1885,8 +1868,7 @@ pub enum CosmicStackRenderElement<R: Renderer + ImportAll + ImportMem> {
|
|||
Header(MemoryRenderBufferRenderElement<R>),
|
||||
Shadow(PixelShaderElement),
|
||||
Border(PixelShaderElement),
|
||||
Window(WaylandSurfaceRenderElement<R>),
|
||||
Clipped(ClippedSurfaceRenderElement<R>),
|
||||
Window(SurfaceRenderElement<R>),
|
||||
}
|
||||
|
||||
impl<R: Renderer + ImportAll + ImportMem> From<MemoryRenderBufferRenderElement<R>>
|
||||
|
|
@ -1897,25 +1879,18 @@ impl<R: Renderer + ImportAll + ImportMem> From<MemoryRenderBufferRenderElement<R
|
|||
}
|
||||
}
|
||||
|
||||
impl<R: Renderer + ImportAll + ImportMem> From<WaylandSurfaceRenderElement<R>>
|
||||
impl<R: Renderer + ImportAll + ImportMem> From<SurfaceRenderElement<R>>
|
||||
for CosmicStackRenderElement<R>
|
||||
{
|
||||
fn from(value: WaylandSurfaceRenderElement<R>) -> Self {
|
||||
fn from(value: SurfaceRenderElement<R>) -> Self {
|
||||
Self::Window(value)
|
||||
}
|
||||
}
|
||||
|
||||
impl<R: Renderer + ImportAll + ImportMem> From<ClippedSurfaceRenderElement<R>>
|
||||
for CosmicStackRenderElement<R>
|
||||
{
|
||||
fn from(value: ClippedSurfaceRenderElement<R>) -> Self {
|
||||
Self::Clipped(value)
|
||||
}
|
||||
}
|
||||
|
||||
impl<R> Element for CosmicStackRenderElement<R>
|
||||
where
|
||||
R: Renderer + ImportAll + ImportMem,
|
||||
R: Renderer + ImportAll + ImportMem + AsGlowRenderer,
|
||||
R::TextureId: 'static,
|
||||
{
|
||||
fn id(&self) -> &RendererId {
|
||||
match self {
|
||||
|
|
@ -1923,7 +1898,6 @@ where
|
|||
CosmicStackRenderElement::Shadow(elem) => elem.id(),
|
||||
CosmicStackRenderElement::Border(elem) => elem.id(),
|
||||
CosmicStackRenderElement::Window(elem) => elem.id(),
|
||||
CosmicStackRenderElement::Clipped(elem) => elem.id(),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1933,7 +1907,6 @@ where
|
|||
CosmicStackRenderElement::Shadow(elem) => elem.current_commit(),
|
||||
CosmicStackRenderElement::Border(elem) => elem.current_commit(),
|
||||
CosmicStackRenderElement::Window(elem) => elem.current_commit(),
|
||||
CosmicStackRenderElement::Clipped(elem) => elem.current_commit(),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1943,7 +1916,6 @@ where
|
|||
CosmicStackRenderElement::Shadow(elem) => elem.src(),
|
||||
CosmicStackRenderElement::Border(elem) => elem.src(),
|
||||
CosmicStackRenderElement::Window(elem) => elem.src(),
|
||||
CosmicStackRenderElement::Clipped(elem) => elem.src(),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1953,7 +1925,6 @@ where
|
|||
CosmicStackRenderElement::Shadow(elem) => elem.geometry(scale),
|
||||
CosmicStackRenderElement::Border(elem) => elem.geometry(scale),
|
||||
CosmicStackRenderElement::Window(elem) => elem.geometry(scale),
|
||||
CosmicStackRenderElement::Clipped(elem) => elem.geometry(scale),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1963,7 +1934,6 @@ where
|
|||
CosmicStackRenderElement::Shadow(elem) => elem.location(scale),
|
||||
CosmicStackRenderElement::Border(elem) => elem.location(scale),
|
||||
CosmicStackRenderElement::Window(elem) => elem.location(scale),
|
||||
CosmicStackRenderElement::Clipped(elem) => elem.location(scale),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1973,7 +1943,6 @@ where
|
|||
CosmicStackRenderElement::Shadow(elem) => elem.transform(),
|
||||
CosmicStackRenderElement::Border(elem) => elem.transform(),
|
||||
CosmicStackRenderElement::Window(elem) => elem.transform(),
|
||||
CosmicStackRenderElement::Clipped(elem) => elem.transform(),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1987,7 +1956,6 @@ where
|
|||
CosmicStackRenderElement::Shadow(elem) => elem.damage_since(scale, commit),
|
||||
CosmicStackRenderElement::Border(elem) => elem.damage_since(scale, commit),
|
||||
CosmicStackRenderElement::Window(elem) => elem.damage_since(scale, commit),
|
||||
CosmicStackRenderElement::Clipped(elem) => elem.damage_since(scale, commit),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1997,7 +1965,6 @@ where
|
|||
CosmicStackRenderElement::Shadow(elem) => elem.opaque_regions(scale),
|
||||
CosmicStackRenderElement::Border(elem) => elem.opaque_regions(scale),
|
||||
CosmicStackRenderElement::Window(elem) => elem.opaque_regions(scale),
|
||||
CosmicStackRenderElement::Clipped(elem) => elem.opaque_regions(scale),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2007,7 +1974,6 @@ where
|
|||
CosmicStackRenderElement::Shadow(elem) => elem.alpha(),
|
||||
CosmicStackRenderElement::Border(elem) => elem.alpha(),
|
||||
CosmicStackRenderElement::Window(elem) => elem.alpha(),
|
||||
CosmicStackRenderElement::Clipped(elem) => elem.alpha(),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2017,7 +1983,6 @@ where
|
|||
CosmicStackRenderElement::Shadow(elem) => elem.kind(),
|
||||
CosmicStackRenderElement::Border(elem) => elem.kind(),
|
||||
CosmicStackRenderElement::Window(elem) => elem.kind(),
|
||||
CosmicStackRenderElement::Clipped(elem) => elem.kind(),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2027,7 +1992,6 @@ where
|
|||
CosmicStackRenderElement::Shadow(elem) => elem.is_framebuffer_effect(),
|
||||
CosmicStackRenderElement::Border(elem) => elem.is_framebuffer_effect(),
|
||||
CosmicStackRenderElement::Window(elem) => elem.is_framebuffer_effect(),
|
||||
CosmicStackRenderElement::Clipped(elem) => elem.is_framebuffer_effect(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2039,7 +2003,7 @@ where
|
|||
{
|
||||
fn draw(
|
||||
&self,
|
||||
frame: &mut <R>::Frame<'_, '_>,
|
||||
frame: &mut R::Frame<'_, '_>,
|
||||
src: Rectangle<f64, Buffer>,
|
||||
dst: Rectangle<i32, Physical>,
|
||||
damage: &[Rectangle<i32, Physical>],
|
||||
|
|
@ -2065,9 +2029,6 @@ where
|
|||
CosmicStackRenderElement::Window(elem) => {
|
||||
elem.draw(frame, src, dst, damage, opaque_regions, cache)
|
||||
}
|
||||
CosmicStackRenderElement::Clipped(elem) => {
|
||||
elem.draw(frame, src, dst, damage, opaque_regions, cache)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2078,7 +2039,6 @@ where
|
|||
elem.underlying_storage(renderer.glow_renderer_mut())
|
||||
}
|
||||
CosmicStackRenderElement::Window(elem) => elem.underlying_storage(renderer),
|
||||
CosmicStackRenderElement::Clipped(elem) => elem.underlying_storage(renderer),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2106,9 +2066,6 @@ where
|
|||
CosmicStackRenderElement::Window(elem) => {
|
||||
elem.capture_framebuffer(frame, src, dst, cache)
|
||||
}
|
||||
CosmicStackRenderElement::Clipped(elem) => {
|
||||
elem.capture_framebuffer(frame, src, dst, cache)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,8 @@
|
|||
use crate::{
|
||||
backend::render::{
|
||||
element::AsGlowRenderer,
|
||||
wayland::{SurfaceRenderElement, render_elements_from_surface_tree},
|
||||
},
|
||||
shell::focus::target::PointerFocusTarget,
|
||||
wayland::{
|
||||
handlers::compositor::frame_time_filter_fn, protocols::corner_radius::CacheableCorners,
|
||||
|
|
@ -18,12 +22,7 @@ use smithay::{
|
|||
drm::DrmNode,
|
||||
renderer::{
|
||||
ImportAll, Renderer,
|
||||
element::{
|
||||
AsRenderElements, Kind, RenderElementStates,
|
||||
surface::{
|
||||
KindEvaluation, WaylandSurfaceRenderElement, render_elements_from_surface_tree,
|
||||
},
|
||||
},
|
||||
element::{Kind, RenderElementStates, surface::KindEvaluation},
|
||||
utils::RendererSurfaceStateUserData,
|
||||
},
|
||||
},
|
||||
|
|
@ -869,9 +868,9 @@ impl CosmicSurface {
|
|||
scanout_node: Option<DrmNode>,
|
||||
) -> Vec<C>
|
||||
where
|
||||
R: Renderer + ImportAll,
|
||||
R: Renderer + ImportAll + AsGlowRenderer,
|
||||
R::TextureId: Clone + 'static,
|
||||
C: From<WaylandSurfaceRenderElement<R>>,
|
||||
C: From<SurfaceRenderElement<R>>,
|
||||
{
|
||||
match self.0.underlying_surface() {
|
||||
WindowSurface::Wayland(toplevel) => {
|
||||
|
|
@ -880,13 +879,18 @@ impl CosmicSurface {
|
|||
.flat_map(move |(popup, popup_offset)| {
|
||||
let offset = (self.0.geometry().loc + popup_offset - popup.geometry().loc)
|
||||
.to_physical_precise_round(scale);
|
||||
let mut geometry = popup.geometry().to_f64();
|
||||
geometry.loc += location.to_f64().to_logical(scale) + popup_offset.to_f64();
|
||||
|
||||
render_elements_from_surface_tree(
|
||||
renderer,
|
||||
popup.wl_surface(),
|
||||
location + offset,
|
||||
geometry,
|
||||
scale,
|
||||
alpha,
|
||||
false,
|
||||
[0; 4],
|
||||
scanout_kind_eval(None, scanout_node),
|
||||
)
|
||||
})
|
||||
|
|
@ -904,12 +908,17 @@ impl CosmicSurface {
|
|||
alpha: f32,
|
||||
scanout_override: Option<bool>,
|
||||
scanout_node: Option<DrmNode>,
|
||||
should_clip: bool,
|
||||
radii: [u8; 4],
|
||||
) -> Vec<C>
|
||||
where
|
||||
R: Renderer + ImportAll,
|
||||
R: Renderer + ImportAll + AsGlowRenderer,
|
||||
R::TextureId: Clone + 'static,
|
||||
C: From<WaylandSurfaceRenderElement<R>>,
|
||||
C: From<SurfaceRenderElement<R>>,
|
||||
{
|
||||
let mut geometry = self.0.geometry().to_f64();
|
||||
geometry.loc += location.to_f64().to_logical(scale);
|
||||
|
||||
match self.0.underlying_surface() {
|
||||
WindowSurface::Wayland(toplevel) => {
|
||||
let surface = toplevel.wl_surface();
|
||||
|
|
@ -918,8 +927,11 @@ impl CosmicSurface {
|
|||
renderer,
|
||||
surface,
|
||||
location,
|
||||
geometry,
|
||||
scale,
|
||||
alpha,
|
||||
should_clip,
|
||||
radii,
|
||||
scanout_kind_eval(scanout_override, scanout_node),
|
||||
)
|
||||
}
|
||||
|
|
@ -932,8 +944,11 @@ impl CosmicSurface {
|
|||
renderer,
|
||||
&surface,
|
||||
location,
|
||||
geometry,
|
||||
scale,
|
||||
alpha,
|
||||
should_clip,
|
||||
radii,
|
||||
scanout_kind_eval(scanout_override, scanout_node),
|
||||
)
|
||||
}
|
||||
|
|
@ -1078,24 +1093,6 @@ impl X11Relatable for CosmicSurface {
|
|||
}
|
||||
}
|
||||
|
||||
impl<R> AsRenderElements<R> for CosmicSurface
|
||||
where
|
||||
R: Renderer + ImportAll,
|
||||
R::TextureId: Clone + 'static,
|
||||
{
|
||||
type RenderElement = WaylandSurfaceRenderElement<R>;
|
||||
|
||||
fn render_elements<C: From<Self::RenderElement>>(
|
||||
&self,
|
||||
renderer: &mut R,
|
||||
location: Point<i32, Physical>,
|
||||
scale: Scale<f64>,
|
||||
alpha: f32,
|
||||
) -> Vec<C> {
|
||||
self.0.render_elements(renderer, location, scale, alpha)
|
||||
}
|
||||
}
|
||||
|
||||
fn with_toplevel_state<T, F: FnOnce(Option<&smithay::wayland::shell::xdg::ToplevelState>) -> T>(
|
||||
toplevel: &ToplevelSurface,
|
||||
pending: bool,
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
use crate::{
|
||||
backend::render::{
|
||||
IndicatorShader, Key, Usage, clipped_surface::ClippedSurfaceRenderElement,
|
||||
cursor::CursorState, element::AsGlowRenderer, shadow::ShadowShader,
|
||||
IndicatorShader, Key, Usage, cursor::CursorState, element::AsGlowRenderer,
|
||||
shadow::ShadowShader, wayland::SurfaceRenderElement,
|
||||
},
|
||||
hooks::{Decorations, HOOKS},
|
||||
shell::{
|
||||
|
|
@ -27,7 +27,6 @@ use smithay::{
|
|||
element::{
|
||||
AsRenderElements, Element, Id as RendererId, Kind, RenderElement,
|
||||
UnderlyingStorage, memory::MemoryRenderBufferRenderElement,
|
||||
surface::WaylandSurfaceRenderElement,
|
||||
},
|
||||
gles::element::PixelShaderElement,
|
||||
glow::GlowRenderer,
|
||||
|
|
@ -358,7 +357,7 @@ impl CosmicWindow {
|
|||
scanout_node: Option<DrmNode>,
|
||||
) -> Vec<C>
|
||||
where
|
||||
R: Renderer + ImportAll + ImportMem,
|
||||
R: Renderer + ImportAll + ImportMem + AsGlowRenderer,
|
||||
R::TextureId: Send + Clone + 'static,
|
||||
C: From<CosmicWindowRenderElement<R>>,
|
||||
{
|
||||
|
|
@ -549,36 +548,21 @@ impl CosmicWindow {
|
|||
elements.push(elem);
|
||||
}
|
||||
|
||||
let window_elements = self.0.with_program(|p| {
|
||||
p.window
|
||||
.render_elements::<R, WaylandSurfaceRenderElement<R>>(
|
||||
renderer,
|
||||
window_loc,
|
||||
scale,
|
||||
alpha,
|
||||
scanout_override,
|
||||
scanout_node,
|
||||
)
|
||||
});
|
||||
if window_elements.is_empty() {
|
||||
return Vec::new();
|
||||
if has_ssd {
|
||||
radii[1] = 0;
|
||||
radii[3] = 0;
|
||||
}
|
||||
|
||||
elements.extend(window_elements.into_iter().map(|elem| {
|
||||
if has_ssd {
|
||||
radii[1] = 0;
|
||||
radii[3] = 0;
|
||||
}
|
||||
if radii.iter().any(|x| *x != 0)
|
||||
&& clip
|
||||
&& ClippedSurfaceRenderElement::will_clip(&elem, scale, geo, radii)
|
||||
{
|
||||
CosmicWindowRenderElement::Clipped(ClippedSurfaceRenderElement::new(
|
||||
renderer, elem, scale, geo, radii,
|
||||
))
|
||||
} else {
|
||||
CosmicWindowRenderElement::Window(elem)
|
||||
}
|
||||
elements.extend(self.0.with_program(|p| {
|
||||
p.window.render_elements::<R, CosmicWindowRenderElement<R>>(
|
||||
renderer,
|
||||
window_loc,
|
||||
scale,
|
||||
alpha,
|
||||
scanout_override,
|
||||
scanout_node,
|
||||
clip,
|
||||
radii,
|
||||
)
|
||||
}));
|
||||
|
||||
if has_ssd {
|
||||
|
|
@ -1252,8 +1236,7 @@ pub enum CosmicWindowRenderElement<R: Renderer + ImportAll + ImportMem> {
|
|||
Header(MemoryRenderBufferRenderElement<R>),
|
||||
Shadow(PixelShaderElement),
|
||||
Border(PixelShaderElement),
|
||||
Window(WaylandSurfaceRenderElement<R>),
|
||||
Clipped(ClippedSurfaceRenderElement<R>),
|
||||
Window(SurfaceRenderElement<R>),
|
||||
}
|
||||
|
||||
impl<R: Renderer + ImportAll + ImportMem> From<MemoryRenderBufferRenderElement<R>>
|
||||
|
|
@ -1264,25 +1247,18 @@ impl<R: Renderer + ImportAll + ImportMem> From<MemoryRenderBufferRenderElement<R
|
|||
}
|
||||
}
|
||||
|
||||
impl<R: Renderer + ImportAll + ImportMem> From<WaylandSurfaceRenderElement<R>>
|
||||
impl<R: Renderer + ImportAll + ImportMem> From<SurfaceRenderElement<R>>
|
||||
for CosmicWindowRenderElement<R>
|
||||
{
|
||||
fn from(value: WaylandSurfaceRenderElement<R>) -> Self {
|
||||
fn from(value: SurfaceRenderElement<R>) -> Self {
|
||||
Self::Window(value)
|
||||
}
|
||||
}
|
||||
|
||||
impl<R: Renderer + ImportAll + ImportMem> From<ClippedSurfaceRenderElement<R>>
|
||||
for CosmicWindowRenderElement<R>
|
||||
{
|
||||
fn from(value: ClippedSurfaceRenderElement<R>) -> Self {
|
||||
Self::Clipped(value)
|
||||
}
|
||||
}
|
||||
|
||||
impl<R> Element for CosmicWindowRenderElement<R>
|
||||
where
|
||||
R: Renderer + ImportAll + ImportMem,
|
||||
R: Renderer + ImportAll + ImportMem + AsGlowRenderer,
|
||||
R::TextureId: 'static,
|
||||
{
|
||||
fn id(&self) -> &RendererId {
|
||||
match self {
|
||||
|
|
@ -1290,7 +1266,6 @@ where
|
|||
CosmicWindowRenderElement::Shadow(elem) => elem.id(),
|
||||
CosmicWindowRenderElement::Border(elem) => elem.id(),
|
||||
CosmicWindowRenderElement::Window(elem) => elem.id(),
|
||||
CosmicWindowRenderElement::Clipped(elem) => elem.id(),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1300,7 +1275,6 @@ where
|
|||
CosmicWindowRenderElement::Shadow(elem) => elem.current_commit(),
|
||||
CosmicWindowRenderElement::Border(elem) => elem.current_commit(),
|
||||
CosmicWindowRenderElement::Window(elem) => elem.current_commit(),
|
||||
CosmicWindowRenderElement::Clipped(elem) => elem.current_commit(),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1310,7 +1284,6 @@ where
|
|||
CosmicWindowRenderElement::Shadow(elem) => elem.src(),
|
||||
CosmicWindowRenderElement::Border(elem) => elem.src(),
|
||||
CosmicWindowRenderElement::Window(elem) => elem.src(),
|
||||
CosmicWindowRenderElement::Clipped(elem) => elem.src(),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1320,7 +1293,6 @@ where
|
|||
CosmicWindowRenderElement::Shadow(elem) => elem.geometry(scale),
|
||||
CosmicWindowRenderElement::Border(elem) => elem.geometry(scale),
|
||||
CosmicWindowRenderElement::Window(elem) => elem.geometry(scale),
|
||||
CosmicWindowRenderElement::Clipped(elem) => elem.geometry(scale),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1330,7 +1302,6 @@ where
|
|||
CosmicWindowRenderElement::Shadow(elem) => elem.location(scale),
|
||||
CosmicWindowRenderElement::Border(elem) => elem.location(scale),
|
||||
CosmicWindowRenderElement::Window(elem) => elem.location(scale),
|
||||
CosmicWindowRenderElement::Clipped(elem) => elem.location(scale),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1340,7 +1311,6 @@ where
|
|||
CosmicWindowRenderElement::Shadow(elem) => elem.transform(),
|
||||
CosmicWindowRenderElement::Border(elem) => elem.transform(),
|
||||
CosmicWindowRenderElement::Window(elem) => elem.transform(),
|
||||
CosmicWindowRenderElement::Clipped(elem) => elem.transform(),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1354,7 +1324,6 @@ where
|
|||
CosmicWindowRenderElement::Shadow(elem) => elem.damage_since(scale, commit),
|
||||
CosmicWindowRenderElement::Border(elem) => elem.damage_since(scale, commit),
|
||||
CosmicWindowRenderElement::Window(elem) => elem.damage_since(scale, commit),
|
||||
CosmicWindowRenderElement::Clipped(elem) => elem.damage_since(scale, commit),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1364,7 +1333,6 @@ where
|
|||
CosmicWindowRenderElement::Shadow(elem) => elem.opaque_regions(scale),
|
||||
CosmicWindowRenderElement::Border(elem) => elem.opaque_regions(scale),
|
||||
CosmicWindowRenderElement::Window(elem) => elem.opaque_regions(scale),
|
||||
CosmicWindowRenderElement::Clipped(elem) => elem.opaque_regions(scale),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1374,7 +1342,6 @@ where
|
|||
CosmicWindowRenderElement::Shadow(elem) => elem.alpha(),
|
||||
CosmicWindowRenderElement::Border(elem) => elem.alpha(),
|
||||
CosmicWindowRenderElement::Window(elem) => elem.alpha(),
|
||||
CosmicWindowRenderElement::Clipped(elem) => elem.alpha(),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1384,7 +1351,6 @@ where
|
|||
CosmicWindowRenderElement::Shadow(elem) => elem.kind(),
|
||||
CosmicWindowRenderElement::Border(elem) => elem.kind(),
|
||||
CosmicWindowRenderElement::Window(elem) => elem.kind(),
|
||||
CosmicWindowRenderElement::Clipped(elem) => elem.kind(),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1394,7 +1360,6 @@ where
|
|||
CosmicWindowRenderElement::Shadow(elem) => elem.is_framebuffer_effect(),
|
||||
CosmicWindowRenderElement::Border(elem) => elem.is_framebuffer_effect(),
|
||||
CosmicWindowRenderElement::Window(elem) => elem.is_framebuffer_effect(),
|
||||
CosmicWindowRenderElement::Clipped(elem) => elem.is_framebuffer_effect(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1432,9 +1397,6 @@ where
|
|||
CosmicWindowRenderElement::Window(elem) => {
|
||||
elem.draw(frame, src, dst, damage, opaque_regions, cache)
|
||||
}
|
||||
CosmicWindowRenderElement::Clipped(elem) => {
|
||||
elem.draw(frame, src, dst, damage, opaque_regions, cache)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1445,7 +1407,6 @@ where
|
|||
elem.underlying_storage(renderer.glow_renderer_mut())
|
||||
}
|
||||
CosmicWindowRenderElement::Window(elem) => elem.underlying_storage(renderer),
|
||||
CosmicWindowRenderElement::Clipped(elem) => elem.underlying_storage(renderer),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1473,9 +1434,6 @@ where
|
|||
CosmicWindowRenderElement::Window(elem) => {
|
||||
elem.capture_framebuffer(frame, src, dst, cache)
|
||||
}
|
||||
CosmicWindowRenderElement::Clipped(elem) => {
|
||||
elem.capture_framebuffer(frame, src, dst, cache)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5395,29 +5395,33 @@ where
|
|||
(swap_geo.loc.as_logical() - window_geo.loc).to_physical_precise_round(output_scale);
|
||||
|
||||
swap_elements.extend(
|
||||
AsRenderElements::render_elements::<CosmicWindowRenderElement<R>>(
|
||||
&window,
|
||||
renderer,
|
||||
render_loc,
|
||||
output_scale.into(),
|
||||
1.0,
|
||||
)
|
||||
.into_iter()
|
||||
.map(|window| {
|
||||
CosmicMappedRenderElement::GrabbedWindow(RescaleRenderElement::from_element(
|
||||
window,
|
||||
swap_geo
|
||||
.loc
|
||||
.as_logical()
|
||||
.to_physical_precise_round(output_scale),
|
||||
ease(
|
||||
Linear,
|
||||
1.0,
|
||||
swap_factor(window_geo.size),
|
||||
transition.unwrap_or(1.0),
|
||||
),
|
||||
))
|
||||
}),
|
||||
window
|
||||
.render_elements(
|
||||
renderer,
|
||||
render_loc,
|
||||
output_scale.into(),
|
||||
1.0,
|
||||
None,
|
||||
scanout_node,
|
||||
false,
|
||||
[0; 4],
|
||||
)
|
||||
.into_iter()
|
||||
.map(|window| {
|
||||
CosmicMappedRenderElement::GrabbedWindow(RescaleRenderElement::from_element(
|
||||
window,
|
||||
swap_geo
|
||||
.loc
|
||||
.as_logical()
|
||||
.to_physical_precise_round(output_scale),
|
||||
ease(
|
||||
Linear,
|
||||
1.0,
|
||||
swap_factor(window_geo.size),
|
||||
transition.unwrap_or(1.0),
|
||||
),
|
||||
))
|
||||
}),
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1711,6 +1711,8 @@ impl Workspace {
|
|||
alpha,
|
||||
Some(true),
|
||||
scanout_node,
|
||||
false,
|
||||
[0; 4],
|
||||
)
|
||||
.into_iter()
|
||||
.map(animation_rescale)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue