diff --git a/src/primitives/retired.rs b/src/primitives/retired.rs index a5346b2..8da37b6 100644 --- a/src/primitives/retired.rs +++ b/src/primitives/retired.rs @@ -5,7 +5,7 @@ use std::sync::Arc; use gpui::{RenderImage, Window}; /// Images to free; GPUI keeps each painted image until told. -#[derive(Default)] +#[derive(Default, Clone)] pub struct Retired(Vec>); impl Retired { @@ -14,6 +14,11 @@ impl Retired { self.0.push(image); } + /// Takes over another owner's waiting images. + pub fn append(&mut self, mut other: Retired) { + self.0.append(&mut other.0); + } + /// Frees images no one else holds; call while painting. pub fn release(&mut self, window: &mut Window) { // A shared image may still be drawn; it waits.