diff options
author | Jan Ekström <jeebjp@gmail.com> | 2019-03-11 01:00:27 +0200 |
---|---|---|
committer | Jan Ekström <jeebjp@gmail.com> | 2019-03-11 01:00:27 +0200 |
commit | 199aabddcc0105b504cc8e0cb240bc3c89288c1a (patch) | |
tree | fa7eb297a8e11b5e0d9339196f23918d6a4d0b85 /video/out/cocoa_cb_common.swift | |
parent | 7c565547b80fdc2a1bfdf31f9725129bcb16aa9d (diff) | |
parent | 1d0349d3b5d9a263251fcb3b0d7e135d4731bfd0 (diff) | |
download | mpv-199aabddcc0105b504cc8e0cb240bc3c89288c1a.tar.bz2 mpv-199aabddcc0105b504cc8e0cb240bc3c89288c1a.tar.xz |
Merge branch 'master' into pr6360
Manual changes done:
* Merged the interface-changes under the already master'd changes.
* Moved the hwdec-related option changes to video/decode/vd_lavc.c.
Diffstat (limited to 'video/out/cocoa_cb_common.swift')
-rw-r--r-- | video/out/cocoa_cb_common.swift | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/video/out/cocoa_cb_common.swift b/video/out/cocoa_cb_common.swift index 355fa537e1..ae79144d97 100644 --- a/video/out/cocoa_cb_common.swift +++ b/video/out/cocoa_cb_common.swift @@ -148,10 +148,9 @@ class CocoaCB: NSObject { func startDisplayLink(_ vo: UnsafeMutablePointer<vo>) { let opts: mp_vo_opts = vo.pointee.opts.pointee let screen = getScreenBy(id: Int(opts.screen_id)) ?? NSScreen.main() - let displayId = screen!.deviceDescription["NSScreenNumber"] as! UInt32 CVDisplayLinkCreateWithActiveCGDisplays(&link) - CVDisplayLinkSetCurrentCGDisplay(link!, displayId) + CVDisplayLinkSetCurrentCGDisplay(link!, screen!.displayID) if #available(macOS 10.12, *) { CVDisplayLinkSetOutputHandler(link!) { link, now, out, inFlags, outFlags -> CVReturn in self.mpv.reportRenderFlip() @@ -170,8 +169,7 @@ class CocoaCB: NSObject { } func updateDisplaylink() { - let displayId = UInt32(window.screen!.deviceDescription["NSScreenNumber"] as! Int) - CVDisplayLinkSetCurrentCGDisplay(link!, displayId) + CVDisplayLinkSetCurrentCGDisplay(link!, window.screen!.displayID) queue.asyncAfter(deadline: DispatchTime.now() + 0.1) { self.flagEvents(VO_EVENT_WIN_STATE) @@ -302,9 +300,8 @@ class CocoaCB: NSObject { var reconfigureCallback: CGDisplayReconfigurationCallBack = { (display, flags, userInfo) in if flags.contains(.setModeFlag) { let ccb: CocoaCB = MPVHelper.bridge(ptr: userInfo!) - let displayID = (ccb.window.screen!.deviceDescription["NSScreenNumber"] as! NSNumber).intValue - if UInt32(displayID) == display { - ccb.mpv.sendVerbose("Detected display mode change, updating screen refresh rate\n"); + if ccb.window.screen!.displayID == display { + ccb.mpv.sendVerbose("Detected display mode change, updating screen refresh rate"); ccb.flagEvents(VO_EVENT_WIN_STATE) } } @@ -423,6 +420,20 @@ class CocoaCB: NSObject { let minimized = data!.assumingMemoryBound(to: Int32.self) minimized.pointee = ccb.window.isMiniaturized ? VO_WIN_STATE_MINIMIZED : Int32(0) return VO_TRUE + case VOCTRL_GET_DISPLAY_NAMES: + let opts: mp_vo_opts = vo!.pointee.opts!.pointee + let dnames = data!.assumingMemoryBound(to: UnsafeMutablePointer<UnsafeMutablePointer<Int8>?>?.self) + var array: UnsafeMutablePointer<UnsafeMutablePointer<Int8>?>? = nil + var count: Int32 = 0 + let screen = ccb.window != nil ? ccb.window.screen : + ccb.getScreenBy(id: Int(opts.screen_id)) ?? + NSScreen.main() + let displayName = screen?.displayName ?? "Unknown" + + SWIFT_TARRAY_STRING_APPEND(nil, &array, &count, ta_xstrdup(nil, displayName)) + SWIFT_TARRAY_STRING_APPEND(nil, &array, &count, nil) + dnames.pointee = array + return VO_TRUE case VOCTRL_UPDATE_WINDOW_TITLE: let titleData = data!.assumingMemoryBound(to: Int8.self) let title = String(cString: titleData) |