From e6c9e33a3163de5293acc4aed805435fd5e359b8 Mon Sep 17 00:00:00 2001 From: der richter Date: Wed, 8 Jan 2020 20:58:54 +0100 Subject: 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. --- video/out/cocoa-cb/window.swift | 2 +- video/out/cocoa_cb_common.swift | 9 ++++++--- 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?>? = 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" -- cgit v1.2.3