chore: Update smithay
This commit is contained in:
parent
ce5ac893a4
commit
53e0db28ac
10 changed files with 378 additions and 40 deletions
|
|
@ -11,7 +11,7 @@ use smithay::{
|
|||
input::KeyState,
|
||||
renderer::{
|
||||
element::{
|
||||
Element, RenderElement, UnderlyingStorage,
|
||||
Element, Kind, RenderElement, UnderlyingStorage,
|
||||
memory::MemoryRenderBufferRenderElement,
|
||||
utils::{CropRenderElement, RelocateRenderElement, RescaleRenderElement},
|
||||
},
|
||||
|
|
@ -30,6 +30,7 @@ use smithay::{
|
|||
space_elements,
|
||||
utils::{
|
||||
Buffer as BufferCoords, IsAlive, Logical, Physical, Point, Rectangle, Scale, Serial, Size,
|
||||
user_data::UserDataMap,
|
||||
},
|
||||
wayland::seat::WaylandFocus,
|
||||
xwayland::{X11Surface, xwm::X11Relatable},
|
||||
|
|
@ -1282,6 +1283,44 @@ where
|
|||
CosmicMappedRenderElement::Egui(elem) => elem.alpha(),
|
||||
}
|
||||
}
|
||||
|
||||
fn kind(&self) -> Kind {
|
||||
match self {
|
||||
CosmicMappedRenderElement::Stack(elem) => elem.kind(),
|
||||
CosmicMappedRenderElement::Window(elem) => elem.kind(),
|
||||
CosmicMappedRenderElement::TiledStack(elem) => elem.kind(),
|
||||
CosmicMappedRenderElement::TiledWindow(elem) => elem.kind(),
|
||||
CosmicMappedRenderElement::TiledOverlay(elem) => elem.kind(),
|
||||
CosmicMappedRenderElement::MovingStack(elem) => elem.kind(),
|
||||
CosmicMappedRenderElement::MovingWindow(elem) => elem.kind(),
|
||||
CosmicMappedRenderElement::GrabbedStack(elem) => elem.kind(),
|
||||
CosmicMappedRenderElement::GrabbedWindow(elem) => elem.kind(),
|
||||
CosmicMappedRenderElement::FocusIndicator(elem) => elem.kind(),
|
||||
CosmicMappedRenderElement::Overlay(elem) => elem.kind(),
|
||||
CosmicMappedRenderElement::StackHoverIndicator(elem) => elem.kind(),
|
||||
#[cfg(feature = "debug")]
|
||||
CosmicMappedRenderElement::Egui(elem) => elem.kind(),
|
||||
}
|
||||
}
|
||||
|
||||
fn is_framebuffer_effect(&self) -> bool {
|
||||
match self {
|
||||
CosmicMappedRenderElement::Stack(elem) => elem.is_framebuffer_effect(),
|
||||
CosmicMappedRenderElement::Window(elem) => elem.is_framebuffer_effect(),
|
||||
CosmicMappedRenderElement::TiledStack(elem) => elem.is_framebuffer_effect(),
|
||||
CosmicMappedRenderElement::TiledWindow(elem) => elem.is_framebuffer_effect(),
|
||||
CosmicMappedRenderElement::TiledOverlay(elem) => elem.is_framebuffer_effect(),
|
||||
CosmicMappedRenderElement::MovingStack(elem) => elem.is_framebuffer_effect(),
|
||||
CosmicMappedRenderElement::MovingWindow(elem) => elem.is_framebuffer_effect(),
|
||||
CosmicMappedRenderElement::GrabbedStack(elem) => elem.is_framebuffer_effect(),
|
||||
CosmicMappedRenderElement::GrabbedWindow(elem) => elem.is_framebuffer_effect(),
|
||||
CosmicMappedRenderElement::FocusIndicator(elem) => elem.is_framebuffer_effect(),
|
||||
CosmicMappedRenderElement::Overlay(elem) => elem.is_framebuffer_effect(),
|
||||
CosmicMappedRenderElement::StackHoverIndicator(elem) => elem.is_framebuffer_effect(),
|
||||
#[cfg(feature = "debug")]
|
||||
CosmicMappedRenderElement::Egui(elem) => elem.is_framebuffer_effect(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<R> RenderElement<R> for CosmicMappedRenderElement<R>
|
||||
|
|
@ -1297,19 +1336,20 @@ where
|
|||
dst: Rectangle<i32, Physical>,
|
||||
damage: &[Rectangle<i32, Physical>],
|
||||
opaque_regions: &[Rectangle<i32, Physical>],
|
||||
cache: Option<&UserDataMap>,
|
||||
) -> Result<(), R::Error> {
|
||||
match self {
|
||||
CosmicMappedRenderElement::Stack(elem) => {
|
||||
elem.draw(frame, src, dst, damage, opaque_regions)
|
||||
elem.draw(frame, src, dst, damage, opaque_regions, cache)
|
||||
}
|
||||
CosmicMappedRenderElement::Window(elem) => {
|
||||
elem.draw(frame, src, dst, damage, opaque_regions)
|
||||
elem.draw(frame, src, dst, damage, opaque_regions, cache)
|
||||
}
|
||||
CosmicMappedRenderElement::TiledStack(elem) => {
|
||||
elem.draw(frame, src, dst, damage, opaque_regions)
|
||||
elem.draw(frame, src, dst, damage, opaque_regions, cache)
|
||||
}
|
||||
CosmicMappedRenderElement::TiledWindow(elem) => {
|
||||
elem.draw(frame, src, dst, damage, opaque_regions)
|
||||
elem.draw(frame, src, dst, damage, opaque_regions, cache)
|
||||
}
|
||||
CosmicMappedRenderElement::TiledOverlay(elem) => RenderElement::<GlowRenderer>::draw(
|
||||
elem,
|
||||
|
|
@ -1318,19 +1358,20 @@ where
|
|||
dst,
|
||||
damage,
|
||||
opaque_regions,
|
||||
cache,
|
||||
)
|
||||
.map_err(FromGlesError::from_gles_error),
|
||||
CosmicMappedRenderElement::MovingStack(elem) => {
|
||||
elem.draw(frame, src, dst, damage, opaque_regions)
|
||||
elem.draw(frame, src, dst, damage, opaque_regions, cache)
|
||||
}
|
||||
CosmicMappedRenderElement::MovingWindow(elem) => {
|
||||
elem.draw(frame, src, dst, damage, opaque_regions)
|
||||
elem.draw(frame, src, dst, damage, opaque_regions, cache)
|
||||
}
|
||||
CosmicMappedRenderElement::GrabbedStack(elem) => {
|
||||
elem.draw(frame, src, dst, damage, opaque_regions)
|
||||
elem.draw(frame, src, dst, damage, opaque_regions, cache)
|
||||
}
|
||||
CosmicMappedRenderElement::GrabbedWindow(elem) => {
|
||||
elem.draw(frame, src, dst, damage, opaque_regions)
|
||||
elem.draw(frame, src, dst, damage, opaque_regions, cache)
|
||||
}
|
||||
CosmicMappedRenderElement::FocusIndicator(elem) => RenderElement::<GlowRenderer>::draw(
|
||||
elem,
|
||||
|
|
@ -1339,6 +1380,7 @@ where
|
|||
dst,
|
||||
damage,
|
||||
opaque_regions,
|
||||
cache,
|
||||
)
|
||||
.map_err(FromGlesError::from_gles_error),
|
||||
CosmicMappedRenderElement::Overlay(elem) => RenderElement::<GlowRenderer>::draw(
|
||||
|
|
@ -1348,10 +1390,11 @@ where
|
|||
dst,
|
||||
damage,
|
||||
opaque_regions,
|
||||
cache,
|
||||
)
|
||||
.map_err(FromGlesError::from_gles_error),
|
||||
CosmicMappedRenderElement::StackHoverIndicator(elem) => {
|
||||
elem.draw(frame, src, dst, damage, opaque_regions)
|
||||
elem.draw(frame, src, dst, damage, opaque_regions, cache)
|
||||
}
|
||||
#[cfg(feature = "debug")]
|
||||
CosmicMappedRenderElement::Egui(elem) => {
|
||||
|
|
@ -1363,6 +1406,7 @@ where
|
|||
dst,
|
||||
damage,
|
||||
opaque_regions,
|
||||
cache,
|
||||
)
|
||||
.map_err(FromGlesError::from_gles_error)
|
||||
}
|
||||
|
|
@ -1398,6 +1442,82 @@ where
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn capture_framebuffer(
|
||||
&self,
|
||||
frame: &mut R::Frame<'_, '_>,
|
||||
src: Rectangle<f64, BufferCoords>,
|
||||
dst: Rectangle<i32, Physical>,
|
||||
cache: &UserDataMap,
|
||||
) -> Result<(), R::Error> {
|
||||
match self {
|
||||
CosmicMappedRenderElement::Stack(elem) => {
|
||||
elem.capture_framebuffer(frame, src, dst, cache)
|
||||
}
|
||||
CosmicMappedRenderElement::Window(elem) => {
|
||||
elem.capture_framebuffer(frame, src, dst, cache)
|
||||
}
|
||||
CosmicMappedRenderElement::TiledStack(elem) => {
|
||||
elem.capture_framebuffer(frame, src, dst, cache)
|
||||
}
|
||||
CosmicMappedRenderElement::TiledWindow(elem) => {
|
||||
elem.capture_framebuffer(frame, src, dst, cache)
|
||||
}
|
||||
CosmicMappedRenderElement::TiledOverlay(elem) => {
|
||||
RenderElement::<GlowRenderer>::capture_framebuffer(
|
||||
elem,
|
||||
R::glow_frame_mut(frame),
|
||||
src,
|
||||
dst,
|
||||
cache,
|
||||
)
|
||||
.map_err(FromGlesError::from_gles_error)
|
||||
}
|
||||
CosmicMappedRenderElement::MovingStack(elem) => {
|
||||
elem.capture_framebuffer(frame, src, dst, cache)
|
||||
}
|
||||
CosmicMappedRenderElement::MovingWindow(elem) => {
|
||||
elem.capture_framebuffer(frame, src, dst, cache)
|
||||
}
|
||||
CosmicMappedRenderElement::GrabbedStack(elem) => {
|
||||
elem.capture_framebuffer(frame, src, dst, cache)
|
||||
}
|
||||
CosmicMappedRenderElement::GrabbedWindow(elem) => {
|
||||
elem.capture_framebuffer(frame, src, dst, cache)
|
||||
}
|
||||
CosmicMappedRenderElement::FocusIndicator(elem) => {
|
||||
RenderElement::<GlowRenderer>::capture_framebuffer(
|
||||
elem,
|
||||
R::glow_frame_mut(frame),
|
||||
src,
|
||||
dst,
|
||||
cache,
|
||||
)
|
||||
.map_err(FromGlesError::from_gles_error)
|
||||
}
|
||||
CosmicMappedRenderElement::Overlay(elem) => {
|
||||
RenderElement::<GlowRenderer>::capture_framebuffer(
|
||||
elem,
|
||||
R::glow_frame_mut(frame),
|
||||
src,
|
||||
dst,
|
||||
cache,
|
||||
)
|
||||
.map_err(FromGlesError::from_gles_error)
|
||||
}
|
||||
CosmicMappedRenderElement::StackHoverIndicator(elem) => {
|
||||
elem.capture_framebuffer(frame, src, dst, cache)
|
||||
}
|
||||
#[cfg(feature = "debug")]
|
||||
CosmicMappedRenderElement::Egui(elem) => {
|
||||
let glow_frame = R::glow_frame_mut(frame);
|
||||
RenderElement::<GlowRenderer>::capture_framebuffer(
|
||||
elem, glow_frame, src, dst, cache,
|
||||
)
|
||||
.map_err(FromGlesError::from_gles_error)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<R> From<stack::CosmicStackRenderElement<R>> for CosmicMappedRenderElement<R>
|
||||
|
|
|
|||
|
|
@ -67,7 +67,10 @@ use smithay::{
|
|||
},
|
||||
output::Output,
|
||||
reexports::wayland_server::protocol::wl_surface::WlSurface,
|
||||
utils::{Buffer, IsAlive, Logical, Physical, Point, Rectangle, Scale, Serial, Size, Transform},
|
||||
utils::{
|
||||
Buffer, IsAlive, Logical, Physical, Point, Rectangle, Scale, Serial, Size, Transform,
|
||||
user_data::UserDataMap,
|
||||
},
|
||||
wayland::seat::WaylandFocus,
|
||||
};
|
||||
use std::{
|
||||
|
|
@ -1995,6 +1998,16 @@ where
|
|||
CosmicStackRenderElement::Clipped(elem) => elem.kind(),
|
||||
}
|
||||
}
|
||||
|
||||
fn is_framebuffer_effect(&self) -> bool {
|
||||
match self {
|
||||
CosmicStackRenderElement::Header(elem) => elem.is_framebuffer_effect(),
|
||||
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(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<R> RenderElement<R> for CosmicStackRenderElement<R>
|
||||
|
|
@ -2010,10 +2023,11 @@ where
|
|||
dst: Rectangle<i32, Physical>,
|
||||
damage: &[Rectangle<i32, Physical>],
|
||||
opaque_regions: &[Rectangle<i32, Physical>],
|
||||
cache: Option<&UserDataMap>,
|
||||
) -> Result<(), <R>::Error> {
|
||||
match self {
|
||||
CosmicStackRenderElement::Header(elem) => {
|
||||
elem.draw(frame, src, dst, damage, opaque_regions)
|
||||
elem.draw(frame, src, dst, damage, opaque_regions, cache)
|
||||
}
|
||||
CosmicStackRenderElement::Shadow(elem) | CosmicStackRenderElement::Border(elem) => {
|
||||
RenderElement::<GlowRenderer>::draw(
|
||||
|
|
@ -2023,14 +2037,15 @@ where
|
|||
dst,
|
||||
damage,
|
||||
opaque_regions,
|
||||
cache,
|
||||
)
|
||||
.map_err(FromGlesError::from_gles_error)
|
||||
}
|
||||
CosmicStackRenderElement::Window(elem) => {
|
||||
elem.draw(frame, src, dst, damage, opaque_regions)
|
||||
elem.draw(frame, src, dst, damage, opaque_regions, cache)
|
||||
}
|
||||
CosmicStackRenderElement::Clipped(elem) => {
|
||||
elem.draw(frame, src, dst, damage, opaque_regions)
|
||||
elem.draw(frame, src, dst, damage, opaque_regions, cache)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2045,4 +2060,34 @@ where
|
|||
CosmicStackRenderElement::Clipped(elem) => elem.underlying_storage(renderer),
|
||||
}
|
||||
}
|
||||
|
||||
fn capture_framebuffer(
|
||||
&self,
|
||||
frame: &mut R::Frame<'_, '_>,
|
||||
src: Rectangle<f64, Buffer>,
|
||||
dst: Rectangle<i32, Physical>,
|
||||
cache: &UserDataMap,
|
||||
) -> Result<(), <R>::Error> {
|
||||
match self {
|
||||
CosmicStackRenderElement::Header(elem) => {
|
||||
elem.capture_framebuffer(frame, src, dst, cache)
|
||||
}
|
||||
CosmicStackRenderElement::Shadow(elem) | CosmicStackRenderElement::Border(elem) => {
|
||||
RenderElement::<GlowRenderer>::capture_framebuffer(
|
||||
elem,
|
||||
R::glow_frame_mut(frame),
|
||||
src,
|
||||
dst,
|
||||
cache,
|
||||
)
|
||||
.map_err(FromGlesError::from_gles_error)
|
||||
}
|
||||
CosmicStackRenderElement::Window(elem) => {
|
||||
elem.capture_framebuffer(frame, src, dst, cache)
|
||||
}
|
||||
CosmicStackRenderElement::Clipped(elem) => {
|
||||
elem.capture_framebuffer(frame, src, dst, cache)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -53,7 +53,10 @@ use smithay::{
|
|||
},
|
||||
output::Output,
|
||||
reexports::wayland_server::protocol::wl_surface::WlSurface,
|
||||
utils::{Buffer, IsAlive, Logical, Physical, Point, Rectangle, Scale, Serial, Size, Transform},
|
||||
utils::{
|
||||
Buffer, IsAlive, Logical, Physical, Point, Rectangle, Scale, Serial, Size, Transform,
|
||||
user_data::UserDataMap,
|
||||
},
|
||||
wayland::seat::WaylandFocus,
|
||||
};
|
||||
use std::{
|
||||
|
|
@ -1366,6 +1369,16 @@ where
|
|||
CosmicWindowRenderElement::Clipped(elem) => elem.kind(),
|
||||
}
|
||||
}
|
||||
|
||||
fn is_framebuffer_effect(&self) -> bool {
|
||||
match self {
|
||||
CosmicWindowRenderElement::Header(elem) => elem.is_framebuffer_effect(),
|
||||
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(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<R> RenderElement<R> for CosmicWindowRenderElement<R>
|
||||
|
|
@ -1381,10 +1394,11 @@ where
|
|||
dst: Rectangle<i32, Physical>,
|
||||
damage: &[Rectangle<i32, Physical>],
|
||||
opaque_regions: &[Rectangle<i32, Physical>],
|
||||
cache: Option<&UserDataMap>,
|
||||
) -> Result<(), <R>::Error> {
|
||||
match self {
|
||||
CosmicWindowRenderElement::Header(elem) => {
|
||||
elem.draw(frame, src, dst, damage, opaque_regions)
|
||||
elem.draw(frame, src, dst, damage, opaque_regions, cache)
|
||||
}
|
||||
CosmicWindowRenderElement::Shadow(elem) | CosmicWindowRenderElement::Border(elem) => {
|
||||
RenderElement::<GlowRenderer>::draw(
|
||||
|
|
@ -1394,14 +1408,15 @@ where
|
|||
dst,
|
||||
damage,
|
||||
opaque_regions,
|
||||
cache,
|
||||
)
|
||||
.map_err(FromGlesError::from_gles_error)
|
||||
}
|
||||
CosmicWindowRenderElement::Window(elem) => {
|
||||
elem.draw(frame, src, dst, damage, opaque_regions)
|
||||
elem.draw(frame, src, dst, damage, opaque_regions, cache)
|
||||
}
|
||||
CosmicWindowRenderElement::Clipped(elem) => {
|
||||
elem.draw(frame, src, dst, damage, opaque_regions)
|
||||
elem.draw(frame, src, dst, damage, opaque_regions, cache)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1416,4 +1431,34 @@ where
|
|||
CosmicWindowRenderElement::Clipped(elem) => elem.underlying_storage(renderer),
|
||||
}
|
||||
}
|
||||
|
||||
fn capture_framebuffer(
|
||||
&self,
|
||||
frame: &mut <R>::Frame<'_, '_>,
|
||||
src: Rectangle<f64, Buffer>,
|
||||
dst: Rectangle<i32, Physical>,
|
||||
cache: &UserDataMap,
|
||||
) -> Result<(), <R>::Error> {
|
||||
match self {
|
||||
CosmicWindowRenderElement::Header(elem) => {
|
||||
elem.capture_framebuffer(frame, src, dst, cache)
|
||||
}
|
||||
CosmicWindowRenderElement::Shadow(elem) | CosmicWindowRenderElement::Border(elem) => {
|
||||
RenderElement::<GlowRenderer>::capture_framebuffer(
|
||||
elem,
|
||||
R::glow_frame_mut(frame),
|
||||
src,
|
||||
dst,
|
||||
cache,
|
||||
)
|
||||
.map_err(FromGlesError::from_gles_error)
|
||||
}
|
||||
CosmicWindowRenderElement::Window(elem) => {
|
||||
elem.capture_framebuffer(frame, src, dst, cache)
|
||||
}
|
||||
CosmicWindowRenderElement::Clipped(elem) => {
|
||||
elem.capture_framebuffer(frame, src, dst, cache)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4859,6 +4859,7 @@ impl Shell {
|
|||
|surface, _| {
|
||||
surface_presentation_feedback_flags_from_states(
|
||||
surface,
|
||||
None,
|
||||
render_element_states,
|
||||
)
|
||||
},
|
||||
|
|
@ -4875,6 +4876,7 @@ impl Shell {
|
|||
|surface, _| {
|
||||
surface_presentation_feedback_flags_from_states(
|
||||
surface,
|
||||
None,
|
||||
render_element_states,
|
||||
)
|
||||
},
|
||||
|
|
@ -4888,7 +4890,11 @@ impl Shell {
|
|||
&mut output_presentation_feedback,
|
||||
surface_primary_scanout_output,
|
||||
|surface, _| {
|
||||
surface_presentation_feedback_flags_from_states(surface, render_element_states)
|
||||
surface_presentation_feedback_flags_from_states(
|
||||
surface,
|
||||
None,
|
||||
render_element_states,
|
||||
)
|
||||
},
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,7 +31,9 @@ use cosmic_protocols::workspace::v2::server::zcosmic_workspace_handle_v2::Tiling
|
|||
use id_tree::Tree;
|
||||
use indexmap::IndexSet;
|
||||
use keyframe::{ease, functions::EaseInOutCubic};
|
||||
use smithay::backend::renderer::element::Kind;
|
||||
use smithay::output::WeakOutput;
|
||||
use smithay::utils::user_data::UserDataMap;
|
||||
use smithay::{
|
||||
backend::renderer::{
|
||||
element::{
|
||||
|
|
@ -1987,6 +1989,26 @@ where
|
|||
WorkspaceRenderElement::Backdrop(elem) => elem.alpha(),
|
||||
}
|
||||
}
|
||||
|
||||
fn kind(&self) -> Kind {
|
||||
match self {
|
||||
WorkspaceRenderElement::OverrideRedirect(elem) => elem.kind(),
|
||||
WorkspaceRenderElement::Fullscreen(elem) => elem.kind(),
|
||||
WorkspaceRenderElement::FullscreenPopup(elem) => elem.kind(),
|
||||
WorkspaceRenderElement::Window(elem) => elem.kind(),
|
||||
WorkspaceRenderElement::Backdrop(elem) => elem.kind(),
|
||||
}
|
||||
}
|
||||
|
||||
fn is_framebuffer_effect(&self) -> bool {
|
||||
match self {
|
||||
WorkspaceRenderElement::OverrideRedirect(elem) => elem.is_framebuffer_effect(),
|
||||
WorkspaceRenderElement::Fullscreen(elem) => elem.is_framebuffer_effect(),
|
||||
WorkspaceRenderElement::FullscreenPopup(elem) => elem.is_framebuffer_effect(),
|
||||
WorkspaceRenderElement::Window(elem) => elem.is_framebuffer_effect(),
|
||||
WorkspaceRenderElement::Backdrop(elem) => elem.is_framebuffer_effect(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<R> RenderElement<R> for WorkspaceRenderElement<R>
|
||||
|
|
@ -2002,19 +2024,20 @@ where
|
|||
dst: Rectangle<i32, Physical>,
|
||||
damage: &[Rectangle<i32, smithay::utils::Physical>],
|
||||
opaque_regions: &[Rectangle<i32, Physical>],
|
||||
cache: Option<&UserDataMap>,
|
||||
) -> Result<(), R::Error> {
|
||||
match self {
|
||||
WorkspaceRenderElement::OverrideRedirect(elem) => {
|
||||
elem.draw(frame, src, dst, damage, opaque_regions)
|
||||
elem.draw(frame, src, dst, damage, opaque_regions, cache)
|
||||
}
|
||||
WorkspaceRenderElement::Fullscreen(elem) => {
|
||||
elem.draw(frame, src, dst, damage, opaque_regions)
|
||||
elem.draw(frame, src, dst, damage, opaque_regions, cache)
|
||||
}
|
||||
WorkspaceRenderElement::FullscreenPopup(elem) => {
|
||||
elem.draw(frame, src, dst, damage, opaque_regions)
|
||||
elem.draw(frame, src, dst, damage, opaque_regions, cache)
|
||||
}
|
||||
WorkspaceRenderElement::Window(elem) => {
|
||||
elem.draw(frame, src, dst, damage, opaque_regions)
|
||||
elem.draw(frame, src, dst, damage, opaque_regions, cache)
|
||||
}
|
||||
WorkspaceRenderElement::Backdrop(elem) => RenderElement::<GlowRenderer>::draw(
|
||||
elem,
|
||||
|
|
@ -2023,6 +2046,7 @@ where
|
|||
dst,
|
||||
damage,
|
||||
opaque_regions,
|
||||
cache,
|
||||
)
|
||||
.map_err(FromGlesError::from_gles_error),
|
||||
}
|
||||
|
|
@ -2042,6 +2066,39 @@ where
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn capture_framebuffer(
|
||||
&self,
|
||||
frame: &mut R::Frame<'_, '_>,
|
||||
src: Rectangle<f64, BufferCoords>,
|
||||
dst: Rectangle<i32, Physical>,
|
||||
cache: &UserDataMap,
|
||||
) -> Result<(), R::Error> {
|
||||
match self {
|
||||
WorkspaceRenderElement::OverrideRedirect(elem) => {
|
||||
elem.capture_framebuffer(frame, src, dst, cache)
|
||||
}
|
||||
WorkspaceRenderElement::Fullscreen(elem) => {
|
||||
elem.capture_framebuffer(frame, src, dst, cache)
|
||||
}
|
||||
WorkspaceRenderElement::FullscreenPopup(elem) => {
|
||||
elem.capture_framebuffer(frame, src, dst, cache)
|
||||
}
|
||||
WorkspaceRenderElement::Window(elem) => {
|
||||
elem.capture_framebuffer(frame, src, dst, cache)
|
||||
}
|
||||
WorkspaceRenderElement::Backdrop(elem) => {
|
||||
RenderElement::<GlowRenderer>::capture_framebuffer(
|
||||
elem,
|
||||
R::glow_frame_mut(frame),
|
||||
src,
|
||||
dst,
|
||||
cache,
|
||||
)
|
||||
.map_err(FromGlesError::from_gles_error)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<R> From<RescaleRenderElement<CosmicWindowRenderElement<R>>> for WorkspaceRenderElement<R>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue