diff options
Diffstat (limited to 'osdep')
-rw-r--r-- | osdep/macOS_mpv_helper.swift | 8 | ||||
-rw-r--r-- | osdep/macOS_swift_compat.swift | 69 | ||||
-rw-r--r-- | osdep/macOS_swift_extensions.swift | 6 |
3 files changed, 74 insertions, 9 deletions
diff --git a/osdep/macOS_mpv_helper.swift b/osdep/macOS_mpv_helper.swift index 35435835de..fdc458e834 100644 --- a/osdep/macOS_mpv_helper.swift +++ b/osdep/macOS_mpv_helper.swift @@ -177,9 +177,11 @@ class MPVHelper: NSObject { sendWarning("Invalid ICC profile data.") return } - let iccSize = iccData.count - iccData.withUnsafeMutableBytes { (u8Ptr: UnsafeMutablePointer<UInt8>) in - let iccBstr = bstrdup(nil, bstr(start: u8Ptr, len: iccSize)) + iccData.withUnsafeMutableBytes { (ptr: UnsafeMutableRawBufferPointer) in + guard let baseAddress = ptr.baseAddress, ptr.count > 0 else { return } + + let u8Ptr = baseAddress.assumingMemoryBound(to: UInt8.self) + let iccBstr = bstrdup(nil, bstr(start: u8Ptr, len: ptr.count)) var icc = mpv_byte_array(data: iccBstr.start, size: iccBstr.len) let params = mpv_render_param(type: MPV_RENDER_PARAM_ICC_PROFILE, data: &icc) mpv_render_context_set_parameter(mpvRenderContext, params) diff --git a/osdep/macOS_swift_compat.swift b/osdep/macOS_swift_compat.swift index 1a57a1e1c3..381398e1bf 100644 --- a/osdep/macOS_swift_compat.swift +++ b/osdep/macOS_swift_compat.swift @@ -16,9 +16,68 @@ */ #if !HAVE_MACOS_10_14_FEATURES -let NSAppearanceNameDarkAqua = "NSAppearanceNameDarkAqua" -let NSAppearanceNameAccessibilityHighContrastAqua = "NSAppearanceNameAccessibilityAqua" -let NSAppearanceNameAccessibilityHighContrastDarkAqua = "NSAppearanceNameAccessibilityDarkAqua" -let NSAppearanceNameAccessibilityHighContrastVibrantLight = "NSAppearanceNameAccessibilityVibrantLight" -let NSAppearanceNameAccessibilityHighContrastVibrantDark = "NSAppearanceNameAccessibilityVibrantDark" +extension NSAppearance.Name { + static let darkAqua: NSAppearance.Name = NSAppearance.Name(rawValue: "NSAppearanceNameDarkAqua") + static let accessibilityHighContrastAqua: NSAppearance.Name = NSAppearance.Name(rawValue: "NSAppearanceNameAccessibilityAqua") + static let accessibilityHighContrastDarkAqua: NSAppearance.Name = NSAppearance.Name(rawValue: "NSAppearanceNameAccessibilityDarkAqua") + static let accessibilityHighContrastVibrantLight: NSAppearance.Name = NSAppearance.Name(rawValue: "NSAppearanceNameAccessibilityVibrantLight") + static let accessibilityHighContrastVibrantDark: NSAppearance.Name = NSAppearance.Name(rawValue: "NSAppearanceNameAccessibilityVibrantDark") +} #endif + +extension NSPasteboard.PasteboardType { + + static let fileURLCompat: NSPasteboard.PasteboardType = { + if #available(OSX 10.13, *) { + return .fileURL + } else { + return NSPasteboard.PasteboardType(kUTTypeURL as String) + } + } () + + static let URLCompat: NSPasteboard.PasteboardType = { + if #available(OSX 10.13, *) { + return .URL + } else { + return NSPasteboard.PasteboardType(kUTTypeFileURL as String) + } + } () +} + +#if !swift(>=5.0) +extension Data { + + mutating func withUnsafeMutableBytes<Type>(_ body: (UnsafeMutableRawBufferPointer) throws -> Type) rethrows -> Type { + let dataCount = count + return try withUnsafeMutableBytes { (ptr: UnsafeMutablePointer<UInt8>) throws -> Type in + try body(UnsafeMutableRawBufferPointer(start: ptr, count: dataCount)) + } + } +} +#endif + +#if !swift(>=4.2) +extension NSDraggingInfo { + + var draggingPasteboard: NSPasteboard { + get { return draggingPasteboard() } + } +} +#endif + +#if !swift(>=4.1) +extension Array { + + func compactMap<ElementOfResult>(_ transform: (Element) throws -> ElementOfResult?) rethrows -> [ElementOfResult] { + return try self.flatMap(transform) + } +} + +extension NSWindow.Level { + + static func +(left: NSWindow.Level, right: Int) -> NSWindow.Level { + return NSWindow.Level(left.rawValue + right) + } +} +#endif + diff --git a/osdep/macOS_swift_extensions.swift b/osdep/macOS_swift_extensions.swift index 7929d48f9a..1e30cf4df7 100644 --- a/osdep/macOS_swift_extensions.swift +++ b/osdep/macOS_swift_extensions.swift @@ -17,11 +17,15 @@ import Cocoa +extension NSDeviceDescriptionKey { + static let screenNumber = NSDeviceDescriptionKey("NSScreenNumber") +} + extension NSScreen { public var displayID: CGDirectDisplayID { get { - return deviceDescription["NSScreenNumber"] as? CGDirectDisplayID ?? 0 + return deviceDescription[.screenNumber] as? CGDirectDisplayID ?? 0 } } |