summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorder richter <der.richter@gmx.de>2020-01-08 20:58:54 +0100
committerder richter <der.richter@gmx.de>2020-01-09 19:13:42 +0100
commite6c9e33a3163de5293acc4aed805435fd5e359b8 (patch)
treebad354f4b43f70f9ad177aa5876680b768f8f038
parent7bb3f53cf5720cb1ed8c88ff91eb82cde5eb6b95 (diff)
downloadmpv-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.
-rw-r--r--video/out/cocoa-cb/window.swift2
-rw-r--r--video/out/cocoa_cb_common.swift9
2 files changed, 7 insertions, 4 deletions
diff --git a/video/out/cocoa-cb/window.swift b/video/out/cocoa-cb/window.swift
index 25f144a38e..9e2c6e3122 100644
--- a/video/out/cocoa-cb/window.swift
+++ b/video/out/cocoa-cb/window.swift
@@ -476,7 +476,7 @@ class Window: NSWindow, NSWindowDelegate {
func windowDidChangeBackingProperties(_ notification: Notification) {
cocoaCB.layer?.contentsScale = backingScaleFactor
- cocoaCB.flagEvents(VO_EVENT_WIN_STATE)
+ cocoaCB.flagEvents(VO_EVENT_DPI)
}
func windowWillStartLiveResize(_ notification: Notification) {
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"