shell: Fix missing titlebars
This commit is contained in:
parent
659933b039
commit
5d173a46a6
11 changed files with 208 additions and 38 deletions
|
|
@ -1,7 +1,9 @@
|
||||||
// SPDX-License-Identifier: GPL-3.0-only
|
// SPDX-License-Identifier: GPL-3.0-only
|
||||||
|
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
|
use crate::backend::render::element::AsGlowRenderer;
|
||||||
use crate::{
|
use crate::{
|
||||||
backend::render::{element::CosmicElement, workspace_elements, CLEAR_COLOR},
|
backend::render::{workspace_elements, CLEAR_COLOR},
|
||||||
config::OutputConfig,
|
config::OutputConfig,
|
||||||
shell::Shell,
|
shell::Shell,
|
||||||
state::{BackendData, ClientState, Common, Data, Fps},
|
state::{BackendData, ClientState, Common, Data, Fps},
|
||||||
|
|
@ -944,15 +946,6 @@ impl Surface {
|
||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
|
|
||||||
self.fps.start();
|
|
||||||
#[cfg(feature = "debug")]
|
|
||||||
if let Some(rd) = self.fps.rd.as_mut() {
|
|
||||||
rd.start_frame_capture(
|
|
||||||
renderer.glow_renderer().egl_context().get_context_handle(),
|
|
||||||
std::ptr::null(),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
let compositor = self.surface.as_mut().unwrap();
|
let compositor = self.surface.as_mut().unwrap();
|
||||||
let (render_node, mut renderer) = match render_node {
|
let (render_node, mut renderer) = match render_node {
|
||||||
Some((render_node, allocator)) => (
|
Some((render_node, allocator)) => (
|
||||||
|
|
@ -963,8 +956,17 @@ impl Surface {
|
||||||
None => (target_node, api.single_renderer(&target_node).unwrap()),
|
None => (target_node, api.single_renderer(&target_node).unwrap()),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
self.fps.start();
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
|
if let Some(rd) = self.fps.rd.as_mut() {
|
||||||
|
rd.start_frame_capture(
|
||||||
|
renderer.glow_renderer().egl_context().get_context_handle(),
|
||||||
|
std::ptr::null(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
let handle = state.shell.workspaces.active(&self.output).handle;
|
let handle = state.shell.workspaces.active(&self.output).handle;
|
||||||
let elements: Vec<CosmicElement<GlMultiRenderer<'_, '_>>> = workspace_elements(
|
let elements = workspace_elements(
|
||||||
Some(&render_node),
|
Some(&render_node),
|
||||||
&mut renderer,
|
&mut renderer,
|
||||||
state,
|
state,
|
||||||
|
|
@ -973,7 +975,10 @@ impl Surface {
|
||||||
CursorMode::All,
|
CursorMode::All,
|
||||||
&mut Some(&mut self.fps),
|
&mut Some(&mut self.fps),
|
||||||
false,
|
false,
|
||||||
)?;
|
)
|
||||||
|
.map_err(|err| {
|
||||||
|
anyhow::format_err!("Failed to accumulate elements for rendering: {:?}", err)
|
||||||
|
})?;
|
||||||
self.fps.elements();
|
self.fps.elements();
|
||||||
|
|
||||||
let res = compositor.render_frame::<_, _, Gles2Renderbuffer>(
|
let res = compositor.render_frame::<_, _, Gles2Renderbuffer>(
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,8 @@ use crate::{
|
||||||
};
|
};
|
||||||
use crate::{
|
use crate::{
|
||||||
shell::{
|
shell::{
|
||||||
layout::floating::SeatMoveGrabState, CosmicMappedRenderElement, WorkspaceRenderElement,
|
element::window::CosmicWindowRenderElement, layout::floating::SeatMoveGrabState,
|
||||||
|
CosmicMappedRenderElement,
|
||||||
},
|
},
|
||||||
state::{Common, Fps},
|
state::{Common, Fps},
|
||||||
utils::prelude::SeatExt,
|
utils::prelude::SeatExt,
|
||||||
|
|
@ -169,6 +170,7 @@ where
|
||||||
R: Renderer + ImportAll + ImportMem + AsGlowRenderer,
|
R: Renderer + ImportAll + ImportMem + AsGlowRenderer,
|
||||||
<R as Renderer>::TextureId: Clone + 'static,
|
<R as Renderer>::TextureId: Clone + 'static,
|
||||||
CosmicMappedRenderElement<R>: RenderElement<R>,
|
CosmicMappedRenderElement<R>: RenderElement<R>,
|
||||||
|
CosmicWindowRenderElement<R>: RenderElement<R>,
|
||||||
E: From<CursorRenderElement<R>> + From<CosmicMappedRenderElement<R>>,
|
E: From<CursorRenderElement<R>> + From<CosmicMappedRenderElement<R>>,
|
||||||
{
|
{
|
||||||
#[cfg(feature = "debug")]
|
#[cfg(feature = "debug")]
|
||||||
|
|
@ -222,7 +224,7 @@ where
|
||||||
elements
|
elements
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn workspace_elements<R, E>(
|
pub fn workspace_elements<R>(
|
||||||
_gpu: Option<&DrmNode>,
|
_gpu: Option<&DrmNode>,
|
||||||
renderer: &mut R,
|
renderer: &mut R,
|
||||||
state: &mut Common,
|
state: &mut Common,
|
||||||
|
|
@ -231,19 +233,18 @@ pub fn workspace_elements<R, E>(
|
||||||
cursor_mode: CursorMode,
|
cursor_mode: CursorMode,
|
||||||
_fps: &mut Option<&mut Fps>,
|
_fps: &mut Option<&mut Fps>,
|
||||||
exclude_workspace_overview: bool,
|
exclude_workspace_overview: bool,
|
||||||
) -> Result<Vec<E>, OutputNoMode>
|
) -> Result<Vec<CosmicElement<R>>, RenderError<R>>
|
||||||
where
|
where
|
||||||
R: Renderer + ImportAll + ImportMem + AsGlowRenderer,
|
R: Renderer + ImportAll + ImportMem + AsGlowRenderer,
|
||||||
<R as Renderer>::TextureId: Clone + 'static,
|
<R as Renderer>::TextureId: Clone + 'static,
|
||||||
|
<R as Renderer>::Error: From<Gles2Error>,
|
||||||
CosmicMappedRenderElement<R>: RenderElement<R>,
|
CosmicMappedRenderElement<R>: RenderElement<R>,
|
||||||
E: From<CursorRenderElement<R>>
|
CosmicWindowRenderElement<R>: RenderElement<R>,
|
||||||
+ From<CosmicMappedRenderElement<R>>
|
|
||||||
+ From<WorkspaceRenderElement<R>>,
|
|
||||||
{
|
{
|
||||||
#[cfg(feature = "debug")]
|
#[cfg(feature = "debug")]
|
||||||
puffin::profile_function!();
|
puffin::profile_function!();
|
||||||
|
|
||||||
let mut elements: Vec<E> = cursor_elements(renderer, state, output, cursor_mode);
|
let mut elements = cursor_elements(renderer, state, output, cursor_mode);
|
||||||
|
|
||||||
#[cfg(feature = "debug")]
|
#[cfg(feature = "debug")]
|
||||||
{
|
{
|
||||||
|
|
@ -336,6 +337,7 @@ where
|
||||||
<R as Renderer>::Error: From<Gles2Error>,
|
<R as Renderer>::Error: From<Gles2Error>,
|
||||||
CosmicElement<R>: RenderElement<R>,
|
CosmicElement<R>: RenderElement<R>,
|
||||||
CosmicMappedRenderElement<R>: RenderElement<R>,
|
CosmicMappedRenderElement<R>: RenderElement<R>,
|
||||||
|
CosmicWindowRenderElement<R>: RenderElement<R>,
|
||||||
Source: Clone,
|
Source: Clone,
|
||||||
{
|
{
|
||||||
let handle = state.shell.workspaces.active(output).handle;
|
let handle = state.shell.workspaces.active(output).handle;
|
||||||
|
|
@ -385,6 +387,7 @@ where
|
||||||
<R as Renderer>::Error: From<Gles2Error>,
|
<R as Renderer>::Error: From<Gles2Error>,
|
||||||
CosmicElement<R>: RenderElement<R>,
|
CosmicElement<R>: RenderElement<R>,
|
||||||
CosmicMappedRenderElement<R>: RenderElement<R>,
|
CosmicMappedRenderElement<R>: RenderElement<R>,
|
||||||
|
CosmicWindowRenderElement<R>: RenderElement<R>,
|
||||||
Source: Clone,
|
Source: Clone,
|
||||||
{
|
{
|
||||||
#[cfg(feature = "debug")]
|
#[cfg(feature = "debug")]
|
||||||
|
|
|
||||||
|
|
@ -50,6 +50,7 @@ pub mod stack;
|
||||||
pub use self::stack::CosmicStack;
|
pub use self::stack::CosmicStack;
|
||||||
pub mod window;
|
pub mod window;
|
||||||
pub use self::window::CosmicWindow;
|
pub use self::window::CosmicWindow;
|
||||||
|
use self::window::CosmicWindowRenderElement;
|
||||||
|
|
||||||
#[cfg(feature = "debug")]
|
#[cfg(feature = "debug")]
|
||||||
use egui::plot::{Corner, Legend, Plot, PlotPoints, Polygon};
|
use egui::plot::{Corner, Legend, Plot, PlotPoints, Polygon};
|
||||||
|
|
@ -886,6 +887,7 @@ where
|
||||||
R: Renderer + ImportAll + ImportMem + AsGlowRenderer,
|
R: Renderer + ImportAll + ImportMem + AsGlowRenderer,
|
||||||
<R as Renderer>::TextureId: 'static,
|
<R as Renderer>::TextureId: 'static,
|
||||||
CosmicMappedRenderElement<R>: RenderElement<R>,
|
CosmicMappedRenderElement<R>: RenderElement<R>,
|
||||||
|
CosmicWindowRenderElement<R>: RenderElement<R>,
|
||||||
{
|
{
|
||||||
type RenderElement = CosmicMappedRenderElement<R>;
|
type RenderElement = CosmicMappedRenderElement<R>;
|
||||||
fn render_elements<C: From<Self::RenderElement>>(
|
fn render_elements<C: From<Self::RenderElement>>(
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,8 @@
|
||||||
use crate::{
|
use crate::{
|
||||||
|
backend::render::{
|
||||||
|
element::{AsGlowFrame, AsGlowRenderer},
|
||||||
|
GlMultiFrame, GlMultiRenderer,
|
||||||
|
},
|
||||||
shell::Shell,
|
shell::Shell,
|
||||||
state::State,
|
state::State,
|
||||||
utils::{
|
utils::{
|
||||||
|
|
@ -8,7 +12,7 @@ use crate::{
|
||||||
wayland::handlers::screencopy::ScreencopySessions,
|
wayland::handlers::screencopy::ScreencopySessions,
|
||||||
};
|
};
|
||||||
use calloop::LoopHandle;
|
use calloop::LoopHandle;
|
||||||
use cosmic::{iced_native::Command, Element};
|
use cosmic::iced_native::Command;
|
||||||
use cosmic_protocols::screencopy::v1::server::zcosmic_screencopy_session_v1::InputType;
|
use cosmic_protocols::screencopy::v1::server::zcosmic_screencopy_session_v1::InputType;
|
||||||
use iced_softbuffer::native::raqote::{DrawOptions, DrawTarget, PathBuilder, SolidSource, Source};
|
use iced_softbuffer::native::raqote::{DrawOptions, DrawTarget, PathBuilder, SolidSource, Source};
|
||||||
use smithay::{
|
use smithay::{
|
||||||
|
|
@ -17,8 +21,11 @@ use smithay::{
|
||||||
renderer::{
|
renderer::{
|
||||||
element::{
|
element::{
|
||||||
memory::MemoryRenderBufferRenderElement, surface::WaylandSurfaceRenderElement,
|
memory::MemoryRenderBufferRenderElement, surface::WaylandSurfaceRenderElement,
|
||||||
AsRenderElements,
|
AsRenderElements, Element, Id, RenderElement,
|
||||||
},
|
},
|
||||||
|
glow::GlowRenderer,
|
||||||
|
multigpu::Error as MultiError,
|
||||||
|
utils::CommitCounter,
|
||||||
ImportAll, ImportMem, Renderer,
|
ImportAll, ImportMem, Renderer,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
@ -29,8 +36,7 @@ use smithay::{
|
||||||
Seat,
|
Seat,
|
||||||
},
|
},
|
||||||
output::Output,
|
output::Output,
|
||||||
render_elements,
|
utils::{IsAlive, Logical, Physical, Point, Rectangle, Scale, Serial, Size, Transform},
|
||||||
utils::{IsAlive, Logical, Physical, Point, Rectangle, Scale, Serial, Size},
|
|
||||||
wayland::seat::WaylandFocus,
|
wayland::seat::WaylandFocus,
|
||||||
};
|
};
|
||||||
use std::{
|
use std::{
|
||||||
|
|
@ -240,7 +246,7 @@ impl Program for CosmicWindowInternal {
|
||||||
target.pop_clip();
|
target.pop_clip();
|
||||||
}
|
}
|
||||||
|
|
||||||
fn view(&self) -> Element<'_, Self::Message> {
|
fn view(&self) -> cosmic::Element<'_, Self::Message> {
|
||||||
cosmic::widget::header_bar()
|
cosmic::widget::header_bar()
|
||||||
.title(self.last_title.lock().unwrap().clone())
|
.title(self.last_title.lock().unwrap().clone())
|
||||||
.on_drag(Message::DragStart)
|
.on_drag(Message::DragStart)
|
||||||
|
|
@ -536,16 +542,162 @@ impl PointerTarget<State> for CosmicWindow {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
render_elements! {
|
pub enum CosmicWindowRenderElement<R>
|
||||||
pub CosmicWindowRenderElement<R> where R: ImportAll + ImportMem;
|
where
|
||||||
Header=MemoryRenderBufferRenderElement<R>,
|
R: ImportAll + ImportMem + AsGlowRenderer + Renderer,
|
||||||
Window=WaylandSurfaceRenderElement<R>,
|
<R as Renderer>::TextureId: 'static,
|
||||||
|
{
|
||||||
|
Header(MemoryRenderBufferRenderElement<GlowRenderer>),
|
||||||
|
Window(WaylandSurfaceRenderElement<R>),
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<R> From<WaylandSurfaceRenderElement<R>> for CosmicWindowRenderElement<R>
|
||||||
|
where
|
||||||
|
R: ImportAll + ImportMem + AsGlowRenderer + Renderer,
|
||||||
|
<R as Renderer>::TextureId: 'static,
|
||||||
|
{
|
||||||
|
fn from(elem: WaylandSurfaceRenderElement<R>) -> Self {
|
||||||
|
CosmicWindowRenderElement::Window(elem)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<R> From<MemoryRenderBufferRenderElement<GlowRenderer>> for CosmicWindowRenderElement<R>
|
||||||
|
where
|
||||||
|
R: ImportAll + ImportMem + AsGlowRenderer + Renderer,
|
||||||
|
<R as Renderer>::TextureId: 'static,
|
||||||
|
{
|
||||||
|
fn from(elem: MemoryRenderBufferRenderElement<GlowRenderer>) -> Self {
|
||||||
|
CosmicWindowRenderElement::Header(elem)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<R> Element for CosmicWindowRenderElement<R>
|
||||||
|
where
|
||||||
|
R: AsGlowRenderer + Renderer + ImportAll + ImportMem,
|
||||||
|
<R as Renderer>::TextureId: 'static,
|
||||||
|
{
|
||||||
|
fn id(&self) -> &Id {
|
||||||
|
match self {
|
||||||
|
CosmicWindowRenderElement::Header(h) => h.id(),
|
||||||
|
CosmicWindowRenderElement::Window(w) => w.id(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn current_commit(&self) -> CommitCounter {
|
||||||
|
match self {
|
||||||
|
CosmicWindowRenderElement::Header(h) => h.current_commit(),
|
||||||
|
CosmicWindowRenderElement::Window(w) => w.current_commit(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn src(&self) -> Rectangle<f64, smithay::utils::Buffer> {
|
||||||
|
match self {
|
||||||
|
CosmicWindowRenderElement::Header(h) => h.src(),
|
||||||
|
CosmicWindowRenderElement::Window(w) => w.src(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn geometry(&self, scale: Scale<f64>) -> Rectangle<i32, Physical> {
|
||||||
|
match self {
|
||||||
|
CosmicWindowRenderElement::Header(h) => h.geometry(scale),
|
||||||
|
CosmicWindowRenderElement::Window(w) => w.geometry(scale),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn location(&self, scale: Scale<f64>) -> Point<i32, Physical> {
|
||||||
|
match self {
|
||||||
|
CosmicWindowRenderElement::Header(h) => h.location(scale),
|
||||||
|
CosmicWindowRenderElement::Window(w) => w.location(scale),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn transform(&self) -> Transform {
|
||||||
|
match self {
|
||||||
|
CosmicWindowRenderElement::Header(h) => h.transform(),
|
||||||
|
CosmicWindowRenderElement::Window(w) => w.transform(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn damage_since(
|
||||||
|
&self,
|
||||||
|
scale: Scale<f64>,
|
||||||
|
commit: Option<CommitCounter>,
|
||||||
|
) -> Vec<Rectangle<i32, Physical>> {
|
||||||
|
match self {
|
||||||
|
CosmicWindowRenderElement::Header(h) => h.damage_since(scale, commit),
|
||||||
|
CosmicWindowRenderElement::Window(w) => w.damage_since(scale, commit),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn opaque_regions(&self, scale: Scale<f64>) -> Vec<Rectangle<i32, Physical>> {
|
||||||
|
match self {
|
||||||
|
CosmicWindowRenderElement::Header(h) => h.opaque_regions(scale),
|
||||||
|
CosmicWindowRenderElement::Window(w) => w.opaque_regions(scale),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl RenderElement<GlowRenderer> for CosmicWindowRenderElement<GlowRenderer> {
|
||||||
|
fn draw<'a>(
|
||||||
|
&self,
|
||||||
|
frame: &mut <GlowRenderer as Renderer>::Frame<'a>,
|
||||||
|
src: Rectangle<f64, smithay::utils::Buffer>,
|
||||||
|
dst: Rectangle<i32, Physical>,
|
||||||
|
damage: &[Rectangle<i32, Physical>],
|
||||||
|
) -> Result<(), <GlowRenderer as Renderer>::Error> {
|
||||||
|
match self {
|
||||||
|
CosmicWindowRenderElement::Header(h) => h.draw(frame, src, dst, damage),
|
||||||
|
CosmicWindowRenderElement::Window(w) => w.draw(frame, src, dst, damage),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn underlying_storage(
|
||||||
|
&self,
|
||||||
|
renderer: &mut GlowRenderer,
|
||||||
|
) -> Option<smithay::backend::renderer::element::UnderlyingStorage> {
|
||||||
|
match self {
|
||||||
|
CosmicWindowRenderElement::Header(h) => h.underlying_storage(renderer),
|
||||||
|
CosmicWindowRenderElement::Window(w) => w.underlying_storage(renderer),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a, 'b> RenderElement<GlMultiRenderer<'a, 'b>>
|
||||||
|
for CosmicWindowRenderElement<GlMultiRenderer<'a, 'b>>
|
||||||
|
{
|
||||||
|
fn draw<'c>(
|
||||||
|
&self,
|
||||||
|
frame: &mut GlMultiFrame<'a, 'b, 'c>,
|
||||||
|
src: Rectangle<f64, smithay::utils::Buffer>,
|
||||||
|
dst: Rectangle<i32, Physical>,
|
||||||
|
damage: &[Rectangle<i32, Physical>],
|
||||||
|
) -> Result<(), <GlMultiRenderer<'a, 'b> as Renderer>::Error> {
|
||||||
|
match self {
|
||||||
|
CosmicWindowRenderElement::Header(h) => h
|
||||||
|
.draw(frame.glow_frame_mut(), src, dst, damage)
|
||||||
|
.map_err(|err| MultiError::Render(err)),
|
||||||
|
CosmicWindowRenderElement::Window(w) => w.draw(frame, src, dst, damage),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn underlying_storage(
|
||||||
|
&self,
|
||||||
|
renderer: &mut GlMultiRenderer<'a, 'b>,
|
||||||
|
) -> Option<smithay::backend::renderer::element::UnderlyingStorage> {
|
||||||
|
match self {
|
||||||
|
CosmicWindowRenderElement::Header(h) => {
|
||||||
|
h.underlying_storage(renderer.glow_renderer_mut())
|
||||||
|
}
|
||||||
|
CosmicWindowRenderElement::Window(w) => w.underlying_storage(renderer),
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<R> AsRenderElements<R> for CosmicWindow
|
impl<R> AsRenderElements<R> for CosmicWindow
|
||||||
where
|
where
|
||||||
R: Renderer + ImportAll + ImportMem,
|
R: Renderer + ImportAll + ImportMem + AsGlowRenderer,
|
||||||
<R as Renderer>::TextureId: 'static,
|
<R as Renderer>::TextureId: 'static,
|
||||||
|
CosmicWindowRenderElement<R>: RenderElement<R>,
|
||||||
{
|
{
|
||||||
type RenderElement = CosmicWindowRenderElement<R>;
|
type RenderElement = CosmicWindowRenderElement<R>;
|
||||||
fn render_elements<C: From<Self::RenderElement>>(
|
fn render_elements<C: From<Self::RenderElement>>(
|
||||||
|
|
@ -568,9 +720,11 @@ where
|
||||||
)
|
)
|
||||||
});
|
});
|
||||||
if has_ssd {
|
if has_ssd {
|
||||||
elements.extend(AsRenderElements::<R>::render_elements::<
|
elements.extend(AsRenderElements::<GlowRenderer>::render_elements::<
|
||||||
CosmicWindowRenderElement<R>,
|
CosmicWindowRenderElement<R>,
|
||||||
>(&self.0, renderer, location, scale))
|
>(
|
||||||
|
&self.0, renderer.glow_renderer_mut(), location, scale
|
||||||
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
elements.into_iter().map(C::from).collect()
|
elements.into_iter().map(C::from).collect()
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
use crate::{
|
use crate::{
|
||||||
backend::render::{element::AsGlowRenderer, IndicatorShader},
|
backend::render::{element::AsGlowRenderer, IndicatorShader},
|
||||||
shell::{
|
shell::{
|
||||||
element::{CosmicMapped, CosmicMappedRenderElement},
|
element::{window::CosmicWindowRenderElement, CosmicMapped, CosmicMappedRenderElement},
|
||||||
focus::target::{KeyboardFocusTarget, PointerFocusTarget},
|
focus::target::{KeyboardFocusTarget, PointerFocusTarget},
|
||||||
},
|
},
|
||||||
utils::prelude::*,
|
utils::prelude::*,
|
||||||
|
|
@ -42,6 +42,7 @@ impl MoveGrabState {
|
||||||
R: Renderer + ImportAll + ImportMem + AsGlowRenderer,
|
R: Renderer + ImportAll + ImportMem + AsGlowRenderer,
|
||||||
<R as Renderer>::TextureId: 'static,
|
<R as Renderer>::TextureId: 'static,
|
||||||
CosmicMappedRenderElement<R>: RenderElement<R>,
|
CosmicMappedRenderElement<R>: RenderElement<R>,
|
||||||
|
CosmicWindowRenderElement<R>: RenderElement<R>,
|
||||||
I: From<CosmicMappedRenderElement<R>>,
|
I: From<CosmicMappedRenderElement<R>>,
|
||||||
{
|
{
|
||||||
#[cfg(feature = "debug")]
|
#[cfg(feature = "debug")]
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ use std::collections::HashMap;
|
||||||
use crate::{
|
use crate::{
|
||||||
backend::render::{element::AsGlowRenderer, IndicatorShader},
|
backend::render::{element::AsGlowRenderer, IndicatorShader},
|
||||||
shell::{
|
shell::{
|
||||||
element::{CosmicMapped, CosmicMappedRenderElement},
|
element::{window::CosmicWindowRenderElement, CosmicMapped, CosmicMappedRenderElement},
|
||||||
grabs::ResizeEdge,
|
grabs::ResizeEdge,
|
||||||
CosmicSurface,
|
CosmicSurface,
|
||||||
},
|
},
|
||||||
|
|
@ -354,6 +354,7 @@ impl FloatingLayout {
|
||||||
R: Renderer + ImportAll + ImportMem + AsGlowRenderer,
|
R: Renderer + ImportAll + ImportMem + AsGlowRenderer,
|
||||||
<R as Renderer>::TextureId: 'static,
|
<R as Renderer>::TextureId: 'static,
|
||||||
CosmicMappedRenderElement<R>: RenderElement<R>,
|
CosmicMappedRenderElement<R>: RenderElement<R>,
|
||||||
|
CosmicWindowRenderElement<R>: RenderElement<R>,
|
||||||
{
|
{
|
||||||
#[cfg(feature = "debug")]
|
#[cfg(feature = "debug")]
|
||||||
puffin::profile_function!();
|
puffin::profile_function!();
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
use crate::{
|
use crate::{
|
||||||
backend::render::{element::AsGlowRenderer, IndicatorShader},
|
backend::render::{element::AsGlowRenderer, IndicatorShader},
|
||||||
shell::{
|
shell::{
|
||||||
element::{CosmicMapped, CosmicMappedRenderElement},
|
element::{window::CosmicWindowRenderElement, CosmicMapped, CosmicMappedRenderElement},
|
||||||
focus::{
|
focus::{
|
||||||
target::{KeyboardFocusTarget, WindowGroup},
|
target::{KeyboardFocusTarget, WindowGroup},
|
||||||
FocusDirection,
|
FocusDirection,
|
||||||
|
|
@ -1311,6 +1311,7 @@ impl TilingLayout {
|
||||||
R: Renderer + ImportAll + ImportMem + AsGlowRenderer,
|
R: Renderer + ImportAll + ImportMem + AsGlowRenderer,
|
||||||
<R as Renderer>::TextureId: 'static,
|
<R as Renderer>::TextureId: 'static,
|
||||||
CosmicMappedRenderElement<R>: RenderElement<R>,
|
CosmicMappedRenderElement<R>: RenderElement<R>,
|
||||||
|
CosmicWindowRenderElement<R>: RenderElement<R>,
|
||||||
{
|
{
|
||||||
#[cfg(feature = "debug")]
|
#[cfg(feature = "debug")]
|
||||||
puffin::profile_function!();
|
puffin::profile_function!();
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ use crate::{
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
mod element;
|
pub mod element;
|
||||||
pub mod focus;
|
pub mod focus;
|
||||||
pub mod grabs;
|
pub mod grabs;
|
||||||
pub mod layout;
|
pub mod layout;
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ use std::collections::HashMap;
|
||||||
use tracing::warn;
|
use tracing::warn;
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
element::CosmicMapped,
|
element::{window::CosmicWindowRenderElement, CosmicMapped},
|
||||||
focus::{FocusStack, FocusStackMut},
|
focus::{FocusStack, FocusStackMut},
|
||||||
grabs::{ResizeEdge, ResizeGrab},
|
grabs::{ResizeEdge, ResizeGrab},
|
||||||
CosmicMappedRenderElement, CosmicSurface,
|
CosmicMappedRenderElement, CosmicSurface,
|
||||||
|
|
@ -445,6 +445,7 @@ impl Workspace {
|
||||||
R: Renderer + ImportAll + ImportMem + AsGlowRenderer,
|
R: Renderer + ImportAll + ImportMem + AsGlowRenderer,
|
||||||
<R as Renderer>::TextureId: 'static,
|
<R as Renderer>::TextureId: 'static,
|
||||||
CosmicMappedRenderElement<R>: RenderElement<R>,
|
CosmicMappedRenderElement<R>: RenderElement<R>,
|
||||||
|
CosmicWindowRenderElement<R>: RenderElement<R>,
|
||||||
{
|
{
|
||||||
#[cfg(feature = "debug")]
|
#[cfg(feature = "debug")]
|
||||||
puffin::profile_function!();
|
puffin::profile_function!();
|
||||||
|
|
|
||||||
|
|
@ -230,10 +230,10 @@ impl<P: Program + Send + 'static> IcedElement<P> {
|
||||||
|
|
||||||
pub fn force_update(&self) {
|
pub fn force_update(&self) {
|
||||||
let mut internal = self.0.lock().unwrap();
|
let mut internal = self.0.lock().unwrap();
|
||||||
internal.update(true);
|
|
||||||
for (_buffer, ref mut needs_redraw) in internal.buffers.values_mut() {
|
for (_buffer, ref mut needs_redraw) in internal.buffers.values_mut() {
|
||||||
*needs_redraw = true;
|
*needs_redraw = true;
|
||||||
}
|
}
|
||||||
|
internal.update(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ use crate::{
|
||||||
element::{AsGlowRenderer, CosmicElement},
|
element::{AsGlowRenderer, CosmicElement},
|
||||||
render_output, render_workspace, CursorMode, CLEAR_COLOR,
|
render_output, render_workspace, CursorMode, CLEAR_COLOR,
|
||||||
},
|
},
|
||||||
shell::{CosmicMappedRenderElement, CosmicSurface},
|
shell::{element::window::CosmicWindowRenderElement, CosmicMappedRenderElement, CosmicSurface},
|
||||||
state::{BackendData, ClientState, Common, Data, State},
|
state::{BackendData, ClientState, Common, Data, State},
|
||||||
utils::prelude::OutputExt,
|
utils::prelude::OutputExt,
|
||||||
wayland::protocols::{
|
wayland::protocols::{
|
||||||
|
|
@ -627,6 +627,7 @@ pub fn render_output_to_buffer(
|
||||||
<R as Renderer>::Error: From<Gles2Error>,
|
<R as Renderer>::Error: From<Gles2Error>,
|
||||||
CosmicElement<R>: RenderElement<R>,
|
CosmicElement<R>: RenderElement<R>,
|
||||||
CosmicMappedRenderElement<R>: RenderElement<R>,
|
CosmicMappedRenderElement<R>: RenderElement<R>,
|
||||||
|
CosmicWindowRenderElement<R>: RenderElement<R>,
|
||||||
{
|
{
|
||||||
let cursor_mode = match session.cursor_mode() {
|
let cursor_mode = match session.cursor_mode() {
|
||||||
ScreencopyCursorMode::Embedded => CursorMode::All,
|
ScreencopyCursorMode::Embedded => CursorMode::All,
|
||||||
|
|
@ -756,6 +757,7 @@ pub fn render_workspace_to_buffer(
|
||||||
<R as Renderer>::Error: From<Gles2Error>,
|
<R as Renderer>::Error: From<Gles2Error>,
|
||||||
CosmicElement<R>: RenderElement<R>,
|
CosmicElement<R>: RenderElement<R>,
|
||||||
CosmicMappedRenderElement<R>: RenderElement<R>,
|
CosmicMappedRenderElement<R>: RenderElement<R>,
|
||||||
|
CosmicWindowRenderElement<R>: RenderElement<R>,
|
||||||
{
|
{
|
||||||
let cursor_mode = match session.cursor_mode() {
|
let cursor_mode = match session.cursor_mode() {
|
||||||
ScreencopyCursorMode::Embedded => CursorMode::All,
|
ScreencopyCursorMode::Embedded => CursorMode::All,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue