summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--video/out/cocoa/window.m5
-rw-r--r--video/out/cocoa_common.m16
2 files changed, 17 insertions, 4 deletions
diff --git a/video/out/cocoa/window.m b/video/out/cocoa/window.m
index 646281df79..d89e296b40 100644
--- a/video/out/cocoa/window.m
+++ b/video/out/cocoa/window.m
@@ -56,6 +56,11 @@
[self.adapter setNeedsResize];
}
+- (void)windowDidChangeScreen:(NSNotification *)notification
+{
+ [self.adapter windowDidChangeScreen:notification];
+}
+
- (void)windowDidChangeScreenProfile:(NSNotification *)notification
{
[self.adapter didChangeWindowedScreenProfile:[self screen]];
diff --git a/video/out/cocoa_common.m b/video/out/cocoa_common.m
index bd841d3a88..21e1246b1c 100644
--- a/video/out/cocoa_common.m
+++ b/video/out/cocoa_common.m
@@ -374,13 +374,16 @@ static void vo_cocoa_update_screen_fps(struct vo *vo)
{
struct vo_cocoa_state *s = vo->cocoa;
+ NSScreen *screen = vo->opts->fullscreen ? s->fs_screen : s->current_screen;
+ NSDictionary* sinfo = [screen deviceDescription];
+ NSNumber* sid = [sinfo objectForKey:@"NSScreenNumber"];
+ CGDirectDisplayID did = [sid longValue];
+
CVDisplayLinkRef link;
- CVDisplayLinkCreateWithActiveCGDisplays(&link);
+ CVDisplayLinkCreateWithCGDisplay(did, &link);
CVDisplayLinkSetOutputCallback(link, &displayLinkCallback, NULL);
CVDisplayLinkStart(link);
-
- CVDisplayLinkSetCurrentCGDisplayFromOpenGLContext(
- link, s->cgl_ctx, CGLGetPixelFormat(s->cgl_ctx));
+ CVDisplayLinkSetCurrentCGDisplay(link, did);
double display_period = CVDisplayLinkGetActualOutputVideoRefreshPeriod(link);
@@ -947,6 +950,11 @@ int vo_cocoa_control(struct vo *vo, int *events, int request, void *arg)
[[EventsResponder sharedInstance] handleFilesArray:files];
}
+- (void)windowDidChangeScreen:(NSNotification *)notification
+{
+ vo_cocoa_update_screen_info(self.vout, NULL);
+}
+
- (void)didChangeWindowedScreenProfile:(NSScreen *)screen
{
flag_events(self.vout, VO_EVENT_ICC_PROFILE_CHANGED);