diff --git a/anvil/src/shell.rs b/anvil/src/shell.rs index 46ccb85..ed13150 100644 --- a/anvil/src/shell.rs +++ b/anvil/src/shell.rs @@ -143,13 +143,17 @@ fn surface_commit(surface: &wl_surface::WlSurface, token: CompositorToken // new contents // TODO: handle hotspot coordinates let data = attributes.user_data.get_mut::().unwrap(); - data.buffer = Some(buffer); + if let Some(old_buffer) = data.buffer.replace(buffer) { + old_buffer.release(); + } data.texture = None; } Some(None) => { // erase the contents let data = attributes.user_data.get_mut::().unwrap(); - data.buffer = None; + if let Some(old_buffer) = data.buffer.take() { + old_buffer.release(); + } data.texture = None; } None => {}