diff options
author | der richter <der.richter@gmx.de> | 2020-01-08 20:58:54 +0100 |
---|---|---|
committer | der richter <der.richter@gmx.de> | 2020-01-09 19:13:42 +0100 |
commit | e6c9e33a3163de5293acc4aed805435fd5e359b8 (patch) | |
tree | bad354f4b43f70f9ad177aa5876680b768f8f038 /video/out/cocoa_cb_common.swift | |
parent | 7bb3f53cf5720cb1ed8c88ff91eb82cde5eb6b95 (diff) | |
download | mpv-e6c9e33a3163de5293acc4aed805435fd5e359b8.tar.bz2 mpv-e6c9e33a3163de5293acc4aed805435fd5e359b8.tar.xz |
cocoa-cb: add runtime dpi change and use proper fallback for initial dpi
at the time of the initial dpi query the window is not instantiated yet.
we use a proper fallback in that case, eg the target configured screen
or the main screen if none is set.
also change some weird oversight and a small optimisation.
Diffstat (limited to 'video/out/cocoa_cb_common.swift')
-rw-r--r-- | video/out/cocoa_cb_common.swift | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/video/out/cocoa_cb_common.swift b/video/out/cocoa_cb_common.swift index b677fd6740..9ba4ffd920 100644 --- a/video/out/cocoa_cb_common.swift +++ b/video/out/cocoa_cb_common.swift @@ -371,7 +371,7 @@ class CocoaCB: NSObject { } func getTargetScreen(forFullscreen fs: Bool) -> NSScreen? { - let screenID = fs ? (mpv?.opts.fsscreen_id ?? 100) : (mpv?.opts.screen_id ?? 100) + let screenID = fs ? (mpv?.opts.fsscreen_id ?? 0) : (mpv?.opts.screen_id ?? 0) return getScreenBy(id: Int(screenID)) } @@ -487,7 +487,10 @@ class CocoaCB: NSObject { return VO_FALSE case VOCTRL_GET_HIDPI_SCALE: if let scaleFactor = data?.assumingMemoryBound(to: CDouble.self) { - scaleFactor.pointee = Double(ccb.window?.backingScaleFactor ?? 1.0) + let factor = ccb.window?.backingScaleFactor ?? + ccb.getTargetScreen(forFullscreen: false)?.backingScaleFactor ?? + NSScreen.main?.backingScaleFactor ?? 1.0 + scaleFactor.pointee = Double(factor) return VO_TRUE; } return VO_FALSE @@ -524,7 +527,7 @@ class CocoaCB: NSObject { var array: UnsafeMutablePointer<UnsafeMutablePointer<Int8>?>? = nil var count: Int32 = 0 let screen = ccb.window != nil ? ccb.window?.screen : - ccb.getScreenBy(id: Int(ccb.mpv?.opts.screen_id ?? 0)) ?? + ccb.getTargetScreen(forFullscreen: false) ?? NSScreen.main let displayName = screen?.displayName ?? "Unknown" |