diff --git a/src/backends/metal/video.rs b/src/backends/metal/video.rs index 3fa455e1..5b6e4fe4 100644 --- a/src/backends/metal/video.rs +++ b/src/backends/metal/video.rs @@ -3332,6 +3332,7 @@ impl RenderBuffer { pub fn damage_full(&self) { let dmabuf = self.dev_bo.dmabuf(); let rect = Rect::new_sized_unchecked(0, 0, dmabuf.width, dmabuf.height); + self.damage_queue.clear_all(); self.damage_queue.damage(&[rect]); } } diff --git a/src/rect/region.rs b/src/rect/region.rs index 9679bc8a..2891f195 100644 --- a/src/rect/region.rs +++ b/src/rect/region.rs @@ -327,6 +327,13 @@ impl DamageQueue { data.clear(); } + pub fn clear_all(&self) { + let datas = unsafe { self.datas.get().deref_mut() }; + for data in datas { + data.clear(); + } + } + pub fn get(&self) -> Region { let data = unsafe { &self.datas.get().deref()[self.this] }; Region::from_rects2(data)