Ignore stale Dosh snapshots
This commit is contained in:
@@ -725,6 +725,9 @@ struct FrameBuffer {
|
|||||||
impl FrameBuffer {
|
impl FrameBuffer {
|
||||||
fn accept(&mut self, frame: Frame, last_rendered_seq: &mut u64) -> Vec<Frame> {
|
fn accept(&mut self, frame: Frame, last_rendered_seq: &mut u64) -> Vec<Frame> {
|
||||||
if frame.snapshot {
|
if frame.snapshot {
|
||||||
|
if frame.output_seq < *last_rendered_seq {
|
||||||
|
return Vec::new();
|
||||||
|
}
|
||||||
self.pending.clear();
|
self.pending.clear();
|
||||||
*last_rendered_seq = frame.output_seq;
|
*last_rendered_seq = frame.output_seq;
|
||||||
return vec![frame];
|
return vec![frame];
|
||||||
@@ -939,4 +942,13 @@ mod tests {
|
|||||||
assert_eq!(last, 20);
|
assert_eq!(last, 20);
|
||||||
assert!(buffer.accept(test_frame(12, false), &mut last).is_empty());
|
assert!(buffer.accept(test_frame(12, false), &mut last).is_empty());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn frame_buffer_ignores_stale_snapshot() {
|
||||||
|
let mut buffer = FrameBuffer::default();
|
||||||
|
let mut last = 20;
|
||||||
|
|
||||||
|
assert!(buffer.accept(test_frame(19, true), &mut last).is_empty());
|
||||||
|
assert_eq!(last, 20);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user