diff options
-rw-r--r-- | DOCS/man/en/options.rst | 7 | ||||
-rw-r--r-- | core/cfg-mplayer.h | 4 | ||||
-rw-r--r-- | core/options.h | 2 | ||||
-rw-r--r-- | video/out/cocoa_common.m | 59 |
4 files changed, 52 insertions, 20 deletions
diff --git a/DOCS/man/en/options.rst b/DOCS/man/en/options.rst index 3a98ca9c93..035f3ed28e 100644 --- a/DOCS/man/en/options.rst +++ b/DOCS/man/en/options.rst @@ -712,6 +712,13 @@ ``--fstype=fullscreen`` Fixes fullscreen switching on OpenBox 1.x. +--native-fs + (OS X only) + Use OSX's Mission Control's fullscreen feature instead of the custom one + provided by mpv. This can potentially break a lot of stuff like + ``--geometry`` and is disabled by default. On the other hand it provides + a more 'OS X-like' user exeprience. + --gamma=<-100-100> Adjust the gamma of the video signal (default: 0). Not supported by all video output drivers. diff --git a/core/cfg-mplayer.h b/core/cfg-mplayer.h index f2e90d07d2..5b30e387c3 100644 --- a/core/cfg-mplayer.h +++ b/core/cfg-mplayer.h @@ -611,6 +611,10 @@ const m_option_t mplayer_opts[]={ OPT_CHOICE_OR_INT("fs-screen", vo.fsscreen_id, 0, 0, 32, ({"all", -2}, {"current", -1})), +#ifdef CONFIG_COCOA + OPT_FLAG("native-fs", vo.native_fs, 0), +#endif + OPT_INTRANGE("brightness", gamma_brightness, 0, -100, 100), OPT_INTRANGE("saturation", gamma_saturation, 0, -100, 100), OPT_INTRANGE("contrast", gamma_contrast, 0, -100, 100), diff --git a/core/options.h b/core/options.h index 276745492d..9905397f0e 100644 --- a/core/options.h +++ b/core/options.h @@ -41,6 +41,8 @@ typedef struct mp_vo_opts { float force_monitor_aspect; float monitor_pixel_aspect; int force_window_position; + + int native_fs; } mp_vo_opts; typedef struct MPOpts { diff --git a/video/out/cocoa_common.m b/video/out/cocoa_common.m index cc8f69bc1d..481096fd96 100644 --- a/video/out/cocoa_common.m +++ b/video/out/cocoa_common.m @@ -543,6 +543,11 @@ int vo_cocoa_config_window(struct vo *vo, uint32_t d_width, s->window_title = [[NSString alloc] initWithUTF8String:vo_get_window_title(vo)]; [s->window setTitle: s->window_title]; + + if (opts->native_fs) { + [s->window setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary]; + [NSApp setPresentationOptions:NSFullScreenWindowMask]; + } }); [vo->cocoa->glContext makeCurrentContext]; @@ -686,32 +691,46 @@ int vo_cocoa_cgl_color_size(struct vo *vo) struct vo_cocoa_state *s = self.videoOutput->cocoa; struct mp_vo_opts *opts = self.videoOutput->opts; + if (opts->native_fs) { + if (!opts->fs) { + [self setContentResizeIncrements:NSMakeSize(1, 1)]; + } else { + [self setContentAspectRatio:s->current_video_size]; + } + + [self toggleFullScreen:nil]; + } else { + if (!opts->fs) { + update_screen_info(self.videoOutput); + if (current_screen_has_dock_or_menubar(self.videoOutput)) + [NSApp setPresentationOptions:NSApplicationPresentationHideDock| + NSApplicationPresentationHideMenuBar]; + s->windowed_frame = [self frame]; + [self setHasShadow:NO]; + [self setStyleMask:s->fullscreen_mask]; + [self setFrame:s->fsscreen_frame display:YES animate:NO]; + [self setMovableByWindowBackground: NO]; + } else { + [NSApp setPresentationOptions:NSApplicationPresentationDefault]; + [self setHasShadow:YES]; + [self setStyleMask:s->windowed_mask]; + [self setTitle:s->window_title]; + [self setFrame:s->windowed_frame display:YES animate:NO]; + if (s->out_fs_resize) { + [self setContentSize:s->current_video_size keepCentered:YES]; + s->out_fs_resize = NO; + } + [self setContentAspectRatio:s->current_video_size]; + [self setMovableByWindowBackground: YES]; + } + } + if (!opts->fs) { - update_screen_info(self.videoOutput); - if (current_screen_has_dock_or_menubar(self.videoOutput)) - [NSApp setPresentationOptions:NSApplicationPresentationHideDock| - NSApplicationPresentationHideMenuBar]; - s->windowed_frame = [self frame]; - [self setHasShadow:NO]; - [self setStyleMask:s->fullscreen_mask]; - [self setFrame:s->fsscreen_frame display:YES animate:NO]; opts->fs = VO_TRUE; vo_cocoa_display_cursor(self.videoOutput, 0); - [self setMovableByWindowBackground: NO]; } else { - [NSApp setPresentationOptions:NSApplicationPresentationDefault]; - [self setHasShadow:YES]; - [self setStyleMask:s->windowed_mask]; - [self setTitle:s->window_title]; - [self setFrame:s->windowed_frame display:YES animate:NO]; - if (s->out_fs_resize) { - [self setContentSize:s->current_video_size keepCentered:YES]; - s->out_fs_resize = NO; - } - [self setContentAspectRatio:s->current_video_size]; opts->fs = false; vo_cocoa_display_cursor(self.videoOutput, 1); - [self setMovableByWindowBackground: YES]; } resize_window(self.videoOutput); |