diff options
author | der richter <der.richter@gmx.de> | 2020-12-05 15:09:32 +0100 |
---|---|---|
committer | Dudemanguy <random342@airmail.cc> | 2020-12-06 17:36:43 +0000 |
commit | 96bcf51c3907ca04a2f553e71d3ac7dea5ebeb06 (patch) | |
tree | 8724e123d48e60c658502e15978cc214441881fa /video/out/mac/common.swift | |
parent | a700b8130bfc06de3b1fb14e136e396423923ed3 (diff) | |
download | mpv-96bcf51c3907ca04a2f553e71d3ac7dea5ebeb06.tar.bz2 mpv-96bcf51c3907ca04a2f553e71d3ac7dea5ebeb06.tar.xz |
mac: support screen-name and fs-screen-name opts
the screen-name and fs-screen-name option allow for specifying screens
based on their name. this is the name of the NSScreen and also reported
by the VOCTRL_GET_DISPLAY_NAMES event. the old screen and fs-screen
options by id, respectively, are preferred over these new ones.
Diffstat (limited to 'video/out/mac/common.swift')
-rw-r--r-- | video/out/mac/common.swift | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/video/out/mac/common.swift b/video/out/mac/common.swift index cb1b74b196..e3f1405c02 100644 --- a/video/out/mac/common.swift +++ b/video/out/mac/common.swift @@ -186,8 +186,7 @@ class Common: NSObject { func startDisplayLink(_ vo: UnsafeMutablePointer<vo>) { CVDisplayLinkCreateWithActiveCGDisplays(&link) - guard let opts: mp_vo_opts = mpv?.opts, - let screen = getScreenBy(id: Int(opts.screen_id)) ?? NSScreen.main, + guard let screen = getTargetScreen(forFullscreen: false) ?? NSScreen.main, let link = self.link else { log.sendWarning("Couldn't start DisplayLink, no MPVHelper, Screen or DisplayLink available") @@ -409,9 +408,27 @@ class Common: NSObject { return NSScreen.screens[screenID] } + func getScreenBy(name screenName: String?) -> NSScreen? { + for screen in NSScreen.screens { + if screen.displayName == screenName { + return screen + } + } + return nil + } + func getTargetScreen(forFullscreen fs: Bool) -> NSScreen? { - let screenID = fs ? (mpv?.opts.fsscreen_id ?? 0) : (mpv?.opts.screen_id ?? 0) - return getScreenBy(id: Int(screenID)) + guard let mpv = mpv else { + log.sendWarning("Unexpected nil value in getTargetScreen") + return nil + } + + let screenID = fs ? mpv.opts.fsscreen_id : mpv.opts.screen_id + var name: String? + if let screenName = fs ? mpv.opts.fsscreen_name : mpv.opts.screen_name { + name = String(cString: screenName) + } + return getScreenBy(id: Int(screenID)) ?? getScreenBy(name: name) } func getCurrentScreen() -> NSScreen? { @@ -446,7 +463,7 @@ class Common: NSObject { log.sendError("Something went wrong, no MPVHelper was initialized") exit(1) } - guard let targetScreen = getScreenBy(id: Int(mpv.opts.screen_id)) ?? NSScreen.main else { + guard let targetScreen = getTargetScreen(forFullscreen: false) ?? NSScreen.main else { log.sendError("Something went wrong, no Screen was found") exit(1) } |