1
0
Fork 0
forked from wry/wry

surface: dispatch frame request immediately if buffer has been presented

This commit is contained in:
Julian Orth 2024-07-10 23:23:24 +02:00
parent a6cf1a1b3d
commit d8d6be1ef3
4 changed files with 45 additions and 5 deletions

View file

@ -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);
}
}