From 5eff04afa0eafb4f93cea2db6c5d4a81ae06ee53 Mon Sep 17 00:00:00 2001 From: AdvDebug <90452585+AdvDebug@users.noreply.github.com> Date: Mon, 6 Jul 2026 17:29:27 +0300 Subject: [PATCH] Fix delete-on-close and Vulkan forward --- Brovan.Generators/VulkanForwardGenerator.cs | 1 + Brovan/Core/Emulation/OS/Windows/WinSyscallsHelper.cs | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Brovan.Generators/VulkanForwardGenerator.cs b/Brovan.Generators/VulkanForwardGenerator.cs index e6b5c30..e1f3192 100644 --- a/Brovan.Generators/VulkanForwardGenerator.cs +++ b/Brovan.Generators/VulkanForwardGenerator.cs @@ -332,6 +332,7 @@ namespace Brovan.Generators "vkDestroyInstance", "vkEnumeratePhysicalDevices", "vkGetPhysicalDeviceProperties", + "vkGetPhysicalDeviceQueueFamilyProperties", "vkCreateDevice", "vkGetDeviceQueue", "vkCreateCommandPool", diff --git a/Brovan/Core/Emulation/OS/Windows/WinSyscallsHelper.cs b/Brovan/Core/Emulation/OS/Windows/WinSyscallsHelper.cs index 3dd7544..9687166 100644 --- a/Brovan/Core/Emulation/OS/Windows/WinSyscallsHelper.cs +++ b/Brovan/Core/Emulation/OS/Windows/WinSyscallsHelper.cs @@ -5139,7 +5139,12 @@ namespace Brovan.Core.Emulation.OS.Windows { WinFile Closing = HandleManager.GetObjectByHandle(Handle); if (Closing != null && Closing.DeletePending && !Closing.Device && !string.IsNullOrEmpty(Closing.Path)) - ApplyDeleteOnClose(Closing); + { + List HandlesForObject = HandleManager.GetHandlesByObjectId(Closing.ObjectId); + HandlesForObject.Remove(Handle); + if (HandlesForObject.Count == 0) + ApplyDeleteOnClose(Closing); + } } if (HandleManager.RemoveHandle(Handle)) @@ -5160,7 +5165,7 @@ namespace Brovan.Core.Emulation.OS.Windows if (Target.Directory) { if (Directory.Exists(VirtualPath)) - Directory.Delete(VirtualPath, true); + Directory.Delete(VirtualPath, false); } else if (File.Exists(VirtualPath)) {