surface: dispatch frame request immediately if buffer has been presented
This commit is contained in:
parent
a6cf1a1b3d
commit
d8d6be1ef3
4 changed files with 45 additions and 5 deletions
|
|
@ -17,8 +17,8 @@ use {
|
|||
state::State,
|
||||
theme::Color,
|
||||
tree::{
|
||||
ContainerNode, DisplayNode, FloatNode, OutputNode, PlaceholderNode, ToplevelData,
|
||||
ToplevelNodeBase, WorkspaceNode,
|
||||
ContainerNode, DisplayNode, FloatNode, OutputNode, OutputNodeId, PlaceholderNode,
|
||||
ToplevelData, ToplevelNodeBase, WorkspaceNode,
|
||||
},
|
||||
},
|
||||
std::{
|
||||
|
|
@ -31,10 +31,20 @@ use {
|
|||
|
||||
pub mod renderer_base;
|
||||
|
||||
#[derive(Default)]
|
||||
pub struct RenderResult {
|
||||
pub frame_requests: Vec<Rc<WlCallback>>,
|
||||
pub presentation_feedbacks: Vec<Rc<WpPresentationFeedback>>,
|
||||
pub output_id: OutputNodeId,
|
||||
}
|
||||
|
||||
impl Default for RenderResult {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
frame_requests: Default::default(),
|
||||
presentation_feedbacks: Default::default(),
|
||||
output_id: OutputNodeId::none(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl RenderResult {
|
||||
|
|
@ -441,6 +451,7 @@ impl Renderer<'_> {
|
|||
let mut fbs = surface.presentation_feedback.borrow_mut();
|
||||
result.presentation_feedbacks.extend(fbs.drain(..));
|
||||
}
|
||||
surface.presented(result.output_id);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue