diff --git a/src/overlay/mod.rs b/src/overlay/mod.rs index 1723339..caf3132 100644 --- a/src/overlay/mod.rs +++ b/src/overlay/mod.rs @@ -128,6 +128,12 @@ impl Overlay { self.instances.remove(&handle); } + pub fn remove_device(&mut self, handle: VkDevice) { + for instance_collection in self.instances.values_mut() { + instance_collection.device_collection.remove(&handle); + } + } + pub fn instance_by_physical_device(&self, physical_device: VkPhysicalDevice) -> Arc { match self .instances @@ -360,6 +366,7 @@ impl Overlay { self.rendering = Some(rendering); self.gui_handler = Some(gui_handler); + self.rfactor_data = None; write_log!("-> create rendering: end"); diff --git a/src/vk_layer/mod.rs b/src/vk_layer/mod.rs index 3673a45..abe790b 100644 --- a/src/vk_layer/mod.rs +++ b/src/vk_layer/mod.rs @@ -338,6 +338,7 @@ pub(crate) extern "system" fn destroy_device( unsafe { if let Some(vk_fn) = vk_handles().handle("vkDestroyDevice") { let destroy_device: PFN_vkDestroyDevice = mem::transmute(vk_fn); + overlay().remove_device(device); destroy_device(device, allocator); }