Use URLs instead of paths

This commit is contained in:
J-rg
2022-07-17 22:09:07 +02:00
parent d90b599351
commit 466795e06e
4 changed files with 25 additions and 25 deletions
+5 -5
View File
@@ -46,7 +46,7 @@ public typealias StartupCompletionHandler = (Error?) -> Void
String(format: "<%@ %p, ROM: %@, Core: %@, System: %@, Display Helper: %@>", String(format: "<%@ %p, ROM: %@, Core: %@, System: %@, Display Helper: %@>",
"\(Self.self)", "\(Self.self)",
Unmanaged.passUnretained(self).toOpaque().debugDescription, Unmanaged.passUnretained(self).toOpaque().debugDescription,
startupInfo.romPath, startupInfo.romURL.path,
plugin?.bundleIdentifier ?? "no plugin", plugin?.bundleIdentifier ?? "no plugin",
systemPlugin?.systemIdentifier ?? "no systemPlugin", systemPlugin?.systemIdentifier ?? "no systemPlugin",
gameCoreOwner != nil ? Unmanaged.passUnretained(gameCoreOwner!).toOpaque().debugDescription : "no gameCoreOwner" gameCoreOwner != nil ? Unmanaged.passUnretained(gameCoreOwner!).toOpaque().debugDescription : "no gameCoreOwner"
@@ -173,16 +173,16 @@ extension GameCoreManager: OEGameCoreHelper {
} }
} }
public func saveStateToFile(atPath fileName: String, completionHandler block: @escaping (Bool, Error?) -> Void) { public func saveStateToFile(at fileURL: URL, completionHandler block: @escaping (Bool, Error?) -> Void) {
gameCoreHelper!.saveStateToFile(atPath: fileName) { success, error in gameCoreHelper!.saveStateToFile(at: fileURL) { success, error in
RunLoop.main.perform { RunLoop.main.perform {
block(success, error) block(success, error)
} }
} }
} }
public func loadStateFromFile(atPath fileName: String, completionHandler block: @escaping (Bool, Error?) -> Void) { public func loadStateFromFile(at fileURL: URL, completionHandler block: @escaping (Bool, Error?) -> Void) {
gameCoreHelper!.loadStateFromFile(atPath: fileName) { success, error in gameCoreHelper!.loadStateFromFile(at: fileURL) { success, error in
RunLoop.main.perform { RunLoop.main.perform {
block(success, error) block(success, error)
} }
+2 -2
View File
@@ -75,8 +75,8 @@ import AudioToolbox
func startEmulation(completionHandler handler: @escaping () -> Void) func startEmulation(completionHandler handler: @escaping () -> Void)
func resetEmulation(completionHandler handler: @escaping () -> Void) func resetEmulation(completionHandler handler: @escaping () -> Void)
func stopEmulation(completionHandler handler: @escaping () -> Void) func stopEmulation(completionHandler handler: @escaping () -> Void)
func saveStateToFile(atPath fileName: String, completionHandler block: @escaping (Bool, Error?) -> Void) func saveStateToFile(at fileURL: URL, completionHandler block: @escaping (Bool, Error?) -> Void)
func loadStateFromFile(atPath fileName: String, completionHandler block: @escaping (Bool, Error?) -> Void) func loadStateFromFile(at fileURL: URL, completionHandler block: @escaping (Bool, Error?) -> Void)
func setCheat(_ cheatCode: String, withType type: String, enabled: Bool) func setCheat(_ cheatCode: String, withType type: String, enabled: Bool)
func setDisc(_ discNumber: UInt) func setDisc(_ discNumber: UInt)
func changeDisplay(withMode displayMode: String) func changeDisplay(withMode displayMode: String)
+12 -12
View File
@@ -27,29 +27,29 @@ import Foundation
@objc(OEGameStartupInfo) public class OEGameStartupInfo: NSObject, NSSecureCoding { @objc(OEGameStartupInfo) public class OEGameStartupInfo: NSObject, NSSecureCoding {
public static var supportsSecureCoding: Bool { return true } public static var supportsSecureCoding: Bool { return true }
public let romPath: String public let romURL: URL
public let romMD5: String public let romMD5: String
public let romHeader: String public let romHeader: String
public let romSerial: String public let romSerial: String
public let systemRegion: String public let systemRegion: String
public let displayModeInfo: [String: Any]? public let displayModeInfo: [String: Any]?
public let shader: URL public let shaderURL: URL
public let shaderParameters: [String: Double] public let shaderParameters: [String: Double]
public let corePluginURL: URL public let corePluginURL: URL
public let systemPluginURL: URL public let systemPluginURL: URL
public init(romPath: String, romMD5: String, romHeader: String, romSerial: String, public init(romURL: URL, romMD5: String, romHeader: String, romSerial: String,
systemRegion: String, systemRegion: String,
displayModeInfo: [String: Any]?, displayModeInfo: [String: Any]?,
shader: URL, shaderParameters: [String: Double], shaderURL: URL, shaderParameters: [String: Double],
corePluginURL: URL, systemPluginURL: URL) { corePluginURL: URL, systemPluginURL: URL) {
self.romPath = romPath self.romURL = romURL
self.romMD5 = romMD5 self.romMD5 = romMD5
self.romHeader = romHeader self.romHeader = romHeader
self.romSerial = romSerial self.romSerial = romSerial
self.systemRegion = systemRegion self.systemRegion = systemRegion
self.displayModeInfo = displayModeInfo self.displayModeInfo = displayModeInfo
self.shader = shader self.shaderURL = shaderURL
self.shaderParameters = shaderParameters self.shaderParameters = shaderParameters
self.corePluginURL = corePluginURL self.corePluginURL = corePluginURL
self.systemPluginURL = systemPluginURL self.systemPluginURL = systemPluginURL
@@ -59,39 +59,39 @@ import Foundation
public required init?(coder: NSCoder) { public required init?(coder: NSCoder) {
guard guard
let romPath = coder.decodeObject(of: NSString.self, forKey: "romPath") as? String, let romURL = coder.decodeObject(of: NSURL.self, forKey: "romPath") as? URL,
let romMD5 = coder.decodeObject(of: NSString.self, forKey: "romMD5") as? String, let romMD5 = coder.decodeObject(of: NSString.self, forKey: "romMD5") as? String,
let romHeader = coder.decodeObject(of: NSString.self, forKey: "romHeader") as? String, let romHeader = coder.decodeObject(of: NSString.self, forKey: "romHeader") as? String,
let romSerial = coder.decodeObject(of: NSString.self, forKey: "romSerial") as? String, let romSerial = coder.decodeObject(of: NSString.self, forKey: "romSerial") as? String,
let systemRegion = coder.decodeObject(of: NSString.self, forKey: "systemRegion") as? String, let systemRegion = coder.decodeObject(of: NSString.self, forKey: "systemRegion") as? String,
let displayModeInfo = coder.decodePropertyList(forKey: "displayModeInfo") as? [String: Any]?, let displayModeInfo = coder.decodePropertyList(forKey: "displayModeInfo") as? [String: Any]?,
let shader = coder.decodeObject(of: NSURL.self, forKey: "shader") as? URL, let shaderURL = coder.decodeObject(of: NSURL.self, forKey: "shaderURL") as? URL,
let shaderParameters = coder.decodeObject(of: [NSString.self, NSDictionary.self, NSNumber.self], let shaderParameters = coder.decodeObject(of: [NSString.self, NSDictionary.self, NSNumber.self],
forKey: "shaderParameters") as? [String: Double], forKey: "shaderParameters") as? [String: Double],
let corePluginURL = coder.decodeObject(of: NSURL.self, forKey: "corePluginURL") as? URL, let corePluginURL = coder.decodeObject(of: NSURL.self, forKey: "corePluginURL") as? URL,
let systemPluginURL = coder.decodeObject(of: NSURL.self, forKey: "systemPluginURL") as? URL let systemPluginURL = coder.decodeObject(of: NSURL.self, forKey: "systemPluginURL") as? URL
else { return nil } else { return nil }
self.romPath = romPath self.romURL = romURL
self.romMD5 = romMD5 self.romMD5 = romMD5
self.romHeader = romHeader self.romHeader = romHeader
self.romSerial = romSerial self.romSerial = romSerial
self.systemRegion = systemRegion self.systemRegion = systemRegion
self.displayModeInfo = displayModeInfo self.displayModeInfo = displayModeInfo
self.shader = shader self.shaderURL = shaderURL
self.shaderParameters = shaderParameters self.shaderParameters = shaderParameters
self.corePluginURL = corePluginURL self.corePluginURL = corePluginURL
self.systemPluginURL = systemPluginURL self.systemPluginURL = systemPluginURL
} }
public func encode(with coder: NSCoder) { public func encode(with coder: NSCoder) {
coder.encode(romPath, forKey: "romPath") coder.encode(romURL, forKey: "romURL")
coder.encode(romMD5, forKey: "romMD5") coder.encode(romMD5, forKey: "romMD5")
coder.encode(romHeader, forKey: "romHeader") coder.encode(romHeader, forKey: "romHeader")
coder.encode(romSerial, forKey: "romSerial") coder.encode(romSerial, forKey: "romSerial")
coder.encode(systemRegion, forKey: "systemRegion") coder.encode(systemRegion, forKey: "systemRegion")
coder.encode(displayModeInfo, forKey: "displayModeInfo") coder.encode(displayModeInfo, forKey: "displayModeInfo")
coder.encode(shader, forKey: "shader") coder.encode(shaderURL, forKey: "shaderURL")
coder.encode(shaderParameters, forKey: "shaderParameters") coder.encode(shaderParameters, forKey: "shaderParameters")
coder.encode(corePluginURL, forKey: "corePluginURL") coder.encode(corePluginURL, forKey: "corePluginURL")
coder.encode(systemPluginURL, forKey: "systemPluginURL") coder.encode(systemPluginURL, forKey: "systemPluginURL")
+6 -6
View File
@@ -242,11 +242,11 @@ extension OSLog {
return // NO return // NO
} }
let aPath = (info.romPath as NSString).standardizingPath let aPath = info.romURL.standardizedFileURL.path
os_log(.info, log: .helper, "Load ROM at path %{public}@", aPath) os_log(.info, log: .helper, "Load ROM at path %{public}@", aPath)
_shader = info.shader _shader = info.shaderURL
_shaderParameters = info.shaderParameters _shaderParameters = info.shaderParameters
_systemController = OESystemPlugin.systemPlugin(bundleAtURL: info.systemPluginURL)!.controller _systemController = OESystemPlugin.systemPlugin(bundleAtURL: info.systemPluginURL)!.controller
_systemResponder = _systemController.newGameSystemResponder() _systemResponder = _systemController.newGameSystemResponder()
@@ -455,15 +455,15 @@ extension OSLog {
} }
} }
public func saveStateToFile(atPath fileName: String, completionHandler block: @escaping (Bool, Error?) -> Void) { public func saveStateToFile(at fileURL: URL, completionHandler block: @escaping (Bool, Error?) -> Void) {
gameCore.perform { gameCore.perform {
self.gameCore.saveStateToFile(atPath: fileName, completionHandler: block) self.gameCore.saveStateToFile(atPath: fileURL.path, completionHandler: block)
} }
} }
public func loadStateFromFile(atPath fileName: String, completionHandler block: @escaping (Bool, Error?) -> Void) { public func loadStateFromFile(at fileURL: URL, completionHandler block: @escaping (Bool, Error?) -> Void) {
gameCore.perform { gameCore.perform {
self.gameCore.loadStateFromFile(atPath: fileName, completionHandler: block) self.gameCore.loadStateFromFile(atPath: fileURL.path, completionHandler: block)
} }
} }