Synchronize shell material presentation with surface commits
Queue popup, modal and notification material geometry and opacity until the matching content buffer commits. Remove event-handler opacity writes that could present material state ahead of content, while preserving compositor dismissal ownership. Add pending-presentation regression coverage and update the nested shell lifecycle check.
This commit is contained in:
1 parent
e6e1a2a8cf
commit
bffd538dd4
9 files changed
+159
-50
No files matched your search
@@ -120,6 +120,7 @@ impl OpenMenu {
|
||||
super::EFFECT_FRAME_PENDING.store(false, Ordering::Relaxed);
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
pub fn progress(&self) -> f32 {
|
||||
self.motion.progress()
|
||||
}
|
||||
@@ -138,8 +139,12 @@ impl FereseShell {
|
||||
|now| menu.motion.frame_active(now),
|
||||
|now| {
|
||||
if let Some(effects) = &menu.effects {
|
||||
let _ = effects.set_regions(&menu.regions.lock().unwrap());
|
||||
let _ = effects.set_opacity(menu.motion.progress_at(now).clamp(0.0, 1.0));
|
||||
let _ = effects.set_presentation(
|
||||
&menu.regions.lock().unwrap(),
|
||||
menu.motion.progress_at(now),
|
||||
[],
|
||||
super::ferese_surface_effects_v1::Role::Popover,
|
||||
);
|
||||
}
|
||||
},
|
||||
|now| {
|
||||
|
||||
Reference in new issue
Block a user