summaryrefslogtreecommitdiffstats
path: root/osdep
diff options
context:
space:
mode:
authorder richter <der.richter@gmx.de>2019-03-30 21:26:31 +0100
committerJan Ekström <jeebjp@gmail.com>2019-04-25 23:02:19 +0300
commit71ad1e2f4c2b87e677d01c639dbd3d28c118ac55 (patch)
treebf564e6374790a96f025ea0c44fc57ac7f9f6f5f /osdep
parentedbc1999145b5593098f09042947bf1b79323d2e (diff)
downloadmpv-71ad1e2f4c2b87e677d01c639dbd3d28c118ac55.tar.bz2
mpv-71ad1e2f4c2b87e677d01c639dbd3d28c118ac55.tar.xz
cocoa-cb: remove all force unwrappings of optionals
the force unwrapping of optionals caused many unpredictable segfaults instead of gracefully exiting or falling back. besides that, it is bad practice and the code is a lot more stable now.
Diffstat (limited to 'osdep')
-rw-r--r--osdep/macOS_mpv_helper.swift46
-rw-r--r--osdep/macOS_swift_extensions.swift16
2 files changed, 37 insertions, 25 deletions
diff --git a/osdep/macOS_mpv_helper.swift b/osdep/macOS_mpv_helper.swift
index fe747db08c..35435835de 100644
--- a/osdep/macOS_mpv_helper.swift
+++ b/osdep/macOS_mpv_helper.swift
@@ -44,14 +44,22 @@ class MPVHelper: NSObject {
mpvHandle = mpv
mpvLog = mp_log_new(UnsafeMutablePointer<MPContext>(mpvHandle),
mp_client_get_log(mpvHandle), "cocoacb")
- mpctx = UnsafeMutablePointer<MPContext>(mp_client_get_core(mpvHandle))
- inputContext = mpctx!.pointee.input
+ guard let mpctx = UnsafeMutablePointer<MPContext>(mp_client_get_core(mpvHandle)) else {
+ sendError("No MPContext available")
+ exit(1)
+ }
- if let app = NSApp as? Application {
- let ptr = mp_get_config_group(mpctx!, mp_client_get_global(mpvHandle),
- app.getMacOSConf())
- macOpts = UnsafeMutablePointer<macos_opts>(OpaquePointer(ptr))!.pointee
+ self.mpctx = mpctx
+ inputContext = mpctx.pointee.input
+ guard let app = NSApp as? Application,
+ let ptr = mp_get_config_group(mpctx,
+ mp_client_get_global(mpvHandle),
+ app.getMacOSConf()) else
+ {
+ sendError("macOS config group couldn't be retrieved'")
+ exit(1)
}
+ macOpts = UnsafeMutablePointer<macos_opts>(OpaquePointer(ptr)).pointee
mpv_observe_property(mpvHandle, 0, "ontop", MPV_FORMAT_FLAG)
mpv_observe_property(mpvHandle, 0, "border", MPV_FORMAT_FLAG)
@@ -83,7 +91,7 @@ class MPVHelper: NSObject {
}
let getProcAddress: (@convention(c) (UnsafeMutableRawPointer?, UnsafePointer<Int8>?)
- -> UnsafeMutableRawPointer?)! =
+ -> UnsafeMutableRawPointer?) =
{
(ctx: UnsafeMutableRawPointer?, name: UnsafePointer<Int8>?)
-> UnsafeMutableRawPointer? in
@@ -214,27 +222,31 @@ class MPVHelper: NSObject {
}
func getStringProperty(_ name: String) -> String? {
- if mpvHandle == nil { return nil }
- let value = mpv_get_property_string(mpvHandle, name)
- let str = value == nil ? nil : String(cString: value!)
+ guard let mpv = mpvHandle,
+ let value = mpv_get_property_string(mpv, name) else
+ {
+ return nil
+ }
+
+ let str = String(cString: value)
mpv_free(value)
return str
}
func canBeDraggedAt(_ pos: NSPoint) -> Bool {
- if inputContext == nil { return false }
- let canDrag = !mp_input_test_dragging(inputContext!, Int32(pos.x), Int32(pos.y))
+ guard let input = inputContext else { return false }
+ let canDrag = !mp_input_test_dragging(input, Int32(pos.x), Int32(pos.y))
return canDrag
}
func setMousePosition(_ pos: NSPoint) {
- if inputContext == nil { return }
- mp_input_set_mouse_pos(inputContext!, Int32(pos.x), Int32(pos.y))
+ guard let input = inputContext else { return }
+ mp_input_set_mouse_pos(input, Int32(pos.x), Int32(pos.y))
}
func putAxis(_ mpkey: Int32, delta: Double) {
- if inputContext == nil { return }
- mp_input_put_wheel(inputContext!, mpkey, delta)
+ guard let input = inputContext else { return }
+ mp_input_put_wheel(input, mpkey, delta)
}
func sendVerbose(_ msg: String) {
@@ -257,7 +269,7 @@ class MPVHelper: NSObject {
if mpvLog == nil {
sendFallback(message: msg, type: t)
} else {
- let args: [CVarArg] = [ (msg as NSString).utf8String! ]
+ let args: [CVarArg] = [ (msg as NSString).utf8String ?? "NO MESSAGE"]
mp_msg_va(mpvLog, Int32(t), "%s\n", getVaList(args))
}
}
diff --git a/osdep/macOS_swift_extensions.swift b/osdep/macOS_swift_extensions.swift
index cc7438fd8c..7929d48f9a 100644
--- a/osdep/macOS_swift_extensions.swift
+++ b/osdep/macOS_swift_extensions.swift
@@ -21,7 +21,7 @@ extension NSScreen {
public var displayID: CGDirectDisplayID {
get {
- return deviceDescription["NSScreenNumber"] as! CGDirectDisplayID
+ return deviceDescription["NSScreenNumber"] as? CGDirectDisplayID ?? 0
}
}
@@ -37,8 +37,8 @@ extension NSScreen {
repeat {
object = IOIteratorNext(iter)
- let info = IODisplayCreateInfoDictionary(object, IOOptionBits(kIODisplayOnlyPreferredName)).takeRetainedValue() as! [String:AnyObject]
- if (info[kDisplayVendorID] as? UInt32 == CGDisplayVendorNumber(displayID) &&
+ if let info = IODisplayCreateInfoDictionary(object, IOOptionBits(kIODisplayOnlyPreferredName)).takeRetainedValue() as? [String:AnyObject],
+ (info[kDisplayVendorID] as? UInt32 == CGDisplayVendorNumber(displayID) &&
info[kDisplayProductID] as? UInt32 == CGDisplayModelNumber(displayID) &&
info[kDisplaySerialNumber] as? UInt32 ?? 0 == CGDisplaySerialNumber(displayID))
{
@@ -60,11 +60,11 @@ extension NSScreen {
extension NSColor {
convenience init(hex: String) {
- let int = Int(hex.dropFirst(), radix: 16)
- let alpha = CGFloat((int! >> 24) & 0x000000FF)/255
- let red = CGFloat((int! >> 16) & 0x000000FF)/255
- let green = CGFloat((int! >> 8) & 0x000000FF)/255
- let blue = CGFloat((int!) & 0x000000FF)/255
+ let int = Int(hex.dropFirst(), radix: 16) ?? 0
+ let alpha = CGFloat((int >> 24) & 0x000000FF)/255
+ let red = CGFloat((int >> 16) & 0x000000FF)/255
+ let green = CGFloat((int >> 8) & 0x000000FF)/255
+ let blue = CGFloat((int) & 0x000000FF)/255
self.init(calibratedRed: red, green: green, blue: blue, alpha: alpha)
}