Explorar o código

vm: fix restoring virtfs saved directory

Fixes #5531
osy %!s(int64=2) %!d(string=hai) anos
pai
achega
d6597cb625

+ 1 - 0
Platform/VMData.swift

@@ -182,6 +182,7 @@ import SwiftUI
         }
         wrapped = vm
         uuidUnknown = false
+        vm.updateConfigFromRegistry()
         subscribeToChildren()
     }
     

+ 2 - 14
Services/UTMAppleVirtualMachine.swift

@@ -110,27 +110,15 @@ final class UTMAppleVirtualMachine: UTMVirtualMachine {
     
     private var activeResourceUrls: [URL] = []
     
-    @MainActor required init(packageUrl: URL, configuration: UTMAppleConfiguration? = nil, isShortcut: Bool = false) throws {
+    @MainActor required init(packageUrl: URL, configuration: UTMAppleConfiguration, isShortcut: Bool = false) throws {
         self.isScopedAccess = packageUrl.startAccessingSecurityScopedResource()
         // load configuration
-        let config: UTMAppleConfiguration
-        if configuration == nil {
-            guard let appleConfig = try UTMAppleConfiguration.load(from: packageUrl) as? UTMAppleConfiguration else {
-                throw UTMConfigurationError.invalidBackend
-            }
-            config = appleConfig
-        } else {
-            config = configuration!
-        }
-        self.config = config
+        self.config = configuration
         self.pathUrl = packageUrl
         self.isShortcut = isShortcut
         self.registryEntry = UTMRegistryEntry.empty
         self.registryEntry = loadRegistry()
         self.screenshot = loadScreenshot()
-        if configuration == nil {
-            updateConfigFromRegistry()
-        }
     }
     
     deinit {

+ 2 - 14
Services/UTMQemuVirtualMachine.swift

@@ -142,27 +142,15 @@ final class UTMQemuVirtualMachine: UTMVirtualMachine {
     
     private var changeCursorRequestInProgress: Bool = false
     
-    @MainActor required init(packageUrl: URL, configuration: UTMQemuConfiguration? = nil, isShortcut: Bool = false) throws {
+    @MainActor required init(packageUrl: URL, configuration: UTMQemuConfiguration, isShortcut: Bool = false) throws {
         self.isScopedAccess = packageUrl.startAccessingSecurityScopedResource()
         // load configuration
-        let config: UTMQemuConfiguration
-        if configuration == nil {
-            guard let qemuConfig = try UTMQemuConfiguration.load(from: packageUrl) as? UTMQemuConfiguration else {
-                throw UTMConfigurationError.invalidBackend
-            }
-            config = qemuConfig
-        } else {
-            config = configuration!
-        }
-        self.config = config
+        self.config = configuration
         self.pathUrl = packageUrl
         self.isShortcut = isShortcut
         self.registryEntry = UTMRegistryEntry.empty
         self.registryEntry = loadRegistry()
         self.screenshot = loadScreenshot()
-        if configuration == nil {
-            updateConfigFromRegistry()
-        }
     }
     
     deinit {

+ 2 - 2
Services/UTMVirtualMachine.swift

@@ -88,9 +88,9 @@ protocol UTMVirtualMachine: AnyObject, Identifiable {
     /// Instantiate a new virtual machine
     /// - Parameters:
     ///   - packageUrl: Package where the virtual machine resides
-    ///   - configuration: New virtual machine configuration or nil to load an existing one
+    ///   - configuration: New virtual machine configuration
     ///   - isShortcut: Indicate that this package cannot be moved
-    init(packageUrl: URL, configuration: Configuration?, isShortcut: Bool) throws
+    init(packageUrl: URL, configuration: Configuration, isShortcut: Bool) throws
     
     /// Discard any changes to configuration by reloading from disk
     /// - Parameter packageUrl: URL to reload from, if nil then use the existing package URL