Decouple scrolling translation from resize readiness

Track configure-owned presentation dependencies so independent viewport translation can continue while clients resize. Preserve linked reflow waits, native snapshots, handoff deadlines and shared rendering/input coordinates.

Closes #10.
This commit is contained in:
Samuel Onoja authored and GitHub committed 2026-10-04 08:05:44 +01:00
1 parent c1801e1f07
commit d5a829eb16
14 files changed
+1742 -72

No files matched your search

+6 -5
View File
@@ -432,7 +432,7 @@ impl Ferese {
self.focus_history.remove(id);
#[cfg(feature = "resize-metrics")]
self.resize_metrics
.end(id, self.start_time.elapsed(), crate::resize_metrics::End::Cancelled);
.end(id, self.presentation_now(), crate::resize_metrics::End::Cancelled);
self.render.remove_window(id);
self.capture_render.remove_window(id);
self.window_stack.remove(id);
@@ -554,11 +554,12 @@ impl Ferese {
{
#[cfg(feature = "resize-metrics")]
{
self.measure_resize_pauses(self.start_time.elapsed());
self.measure_resize_pauses(self.presentation_now());
self.resize_metrics
.end(id, self.start_time.elapsed(), crate::resize_metrics::End::Commit);
.end(id, self.presentation_now(), crate::resize_metrics::End::Commit);
}
self.windows.clear_transaction(&id);
self.release_presentation_dependencies();
}
let Some(size) = client_size(window) else {
@@ -611,7 +612,7 @@ impl Ferese {
self.windows.set_geometry(id, WindowGeometry::new(rect, Some(size)));
#[cfg(feature = "resize-metrics")]
self.resize_metrics
.end(id, self.start_time.elapsed(), crate::resize_metrics::End::Cancelled);
.end(id, self.presentation_now(), crate::resize_metrics::End::Cancelled);
self.windows.clear_transaction(&id);
self.relayout();
}
@@ -650,7 +651,7 @@ impl Ferese {
self.windows.set_geometry(id, WindowGeometry::new(rect, Some(size)));
#[cfg(feature = "resize-metrics")]
self.resize_metrics
.end(id, self.start_time.elapsed(), crate::resize_metrics::End::Cancelled);
.end(id, self.presentation_now(), crate::resize_metrics::End::Cancelled);
self.windows.clear_transaction(&id);
self.render.clear_snapshot(&id);
self.relayout();