diff --git a/src/gfx_apis/vulkan/transfer.rs b/src/gfx_apis/vulkan/transfer.rs index 13d8bd93..4ca4fa3d 100644 --- a/src/gfx_apis/vulkan/transfer.rs +++ b/src/gfx_apis/vulkan/transfer.rs @@ -54,9 +54,12 @@ pub struct VulkanShmImageAsyncData { impl VulkanShmImageAsyncData { fn complete(&self, result: Result<(), VulkanError>) { - self.busy.set(false); - if let Some(staging) = self.staging.take() { - staging.busy.set(false); + let staging = self.staging.take(); + if result.is_ok() { + self.busy.set(false); + if let Some(staging) = staging { + staging.busy.set(false); + } } self.buffer.take(); self.client_mem.take();