shell: Fix missing titlebars

This commit is contained in:
Victoria Brekenfeld 2023-03-07 22:20:44 +01:00
parent 659933b039
commit 5d173a46a6
11 changed files with 208 additions and 38 deletions

View file

@ -1,7 +1,9 @@
// SPDX-License-Identifier: GPL-3.0-only
#[cfg(feature = "debug")]
use crate::backend::render::element::AsGlowRenderer;
use crate::{
backend::render::{element::CosmicElement, workspace_elements, CLEAR_COLOR},
backend::render::{workspace_elements, CLEAR_COLOR},
config::OutputConfig,
shell::Shell,
state::{BackendData, ClientState, Common, Data, Fps},
@ -944,15 +946,6 @@ impl Surface {
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 (render_node, mut renderer) = match render_node {
Some((render_node, allocator)) => (
@ -963,8 +956,17 @@ impl Surface {
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 elements: Vec<CosmicElement<GlMultiRenderer<'_, '_>>> = workspace_elements(
let elements = workspace_elements(
Some(&render_node),
&mut renderer,
state,
@ -973,7 +975,10 @@ impl Surface {
CursorMode::All,
&mut Some(&mut self.fps),
false,
)?;
)
.map_err(|err| {
anyhow::format_err!("Failed to accumulate elements for rendering: {:?}", err)
})?;
self.fps.elements();
let res = compositor.render_frame::<_, _, Gles2Renderbuffer>(

View file

@ -12,7 +12,8 @@ use crate::{
};
use crate::{
shell::{
layout::floating::SeatMoveGrabState, CosmicMappedRenderElement, WorkspaceRenderElement,
element::window::CosmicWindowRenderElement, layout::floating::SeatMoveGrabState,
CosmicMappedRenderElement,
},
state::{Common, Fps},
utils::prelude::SeatExt,
@ -169,6 +170,7 @@ where
R: Renderer + ImportAll + ImportMem + AsGlowRenderer,
<R as Renderer>::TextureId: Clone + 'static,
CosmicMappedRenderElement<R>: RenderElement<R>,
CosmicWindowRenderElement<R>: RenderElement<R>,
E: From<CursorRenderElement<R>> + From<CosmicMappedRenderElement<R>>,
{
#[cfg(feature = "debug")]
@ -222,7 +224,7 @@ where
elements
}
pub fn workspace_elements<R, E>(
pub fn workspace_elements<R>(
_gpu: Option<&DrmNode>,
renderer: &mut R,
state: &mut Common,
@ -231,19 +233,18 @@ pub fn workspace_elements<R, E>(
cursor_mode: CursorMode,
_fps: &mut Option<&mut Fps>,
exclude_workspace_overview: bool,
) -> Result<Vec<E>, OutputNoMode>
) -> Result<Vec<CosmicElement<R>>, RenderError<R>>
where
R: Renderer + ImportAll + ImportMem + AsGlowRenderer,
<R as Renderer>::TextureId: Clone + 'static,
<R as Renderer>::Error: From<Gles2Error>,
CosmicMappedRenderElement<R>: RenderElement<R>,
E: From<CursorRenderElement<R>>
+ From<CosmicMappedRenderElement<R>>
+ From<WorkspaceRenderElement<R>>,
CosmicWindowRenderElement<R>: RenderElement<R>,
{
#[cfg(feature = "debug")]
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")]
{
@ -336,6 +337,7 @@ where
<R as Renderer>::Error: From<Gles2Error>,
CosmicElement<R>: RenderElement<R>,
CosmicMappedRenderElement<R>: RenderElement<R>,
CosmicWindowRenderElement<R>: RenderElement<R>,
Source: Clone,
{
let handle = state.shell.workspaces.active(output).handle;
@ -385,6 +387,7 @@ where
<R as Renderer>::Error: From<Gles2Error>,
CosmicElement<R>: RenderElement<R>,
CosmicMappedRenderElement<R>: RenderElement<R>,
CosmicWindowRenderElement<R>: RenderElement<R>,
Source: Clone,
{
#[cfg(feature = "debug")]