diff options
author | wm4 <wm4@nowhere> | 2013-05-15 18:17:18 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2013-05-26 16:44:18 +0200 |
commit | bf10a4fdfa40cbe519e6ccb7fb895332da2021d1 (patch) | |
tree | 8ff3a3b2601c85291c5531e4d0dc88266a6b7ef6 /video/out/cocoa_common.m | |
parent | c23bf5311fce3b59e9111e5de646ee57b48be27f (diff) | |
download | mpv-bf10a4fdfa40cbe519e6ccb7fb895332da2021d1.tar.bz2 mpv-bf10a4fdfa40cbe519e6ccb7fb895332da2021d1.tar.xz |
video/out: introduce vo_control for gl_common based VOs
Instead of having separate callbacks for each backend-handled feature
(like MPGLContext.fullscreen, MPGLContext.border, etc.), pass the
VOCTRL responsible for this directly to the backend. This allows
removing a bunch of callbacks, that currently must be set even for
optional/lesser features (like VOCTRL_BORDER).
This requires changes to all VOs using gl_common, as well as all
backends that support gl_common.
Also introduce VOCTRL_CHECK_EVENTS. vo.check_events is now optional.
VO backends can use VOCTRL_CHECK_EVENTS instead to implementing
check_events. This has the advantage that the event handling code in
VOs doesn't have to be duplicated if vo_control() is used.
Diffstat (limited to 'video/out/cocoa_common.m')
-rw-r--r-- | video/out/cocoa_common.m | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/video/out/cocoa_common.m b/video/out/cocoa_common.m index cf0f84085b..6f618c296c 100644 --- a/video/out/cocoa_common.m +++ b/video/out/cocoa_common.m @@ -657,6 +657,32 @@ void vo_cocoa_fullscreen(struct vo *vo) } } +int vo_cocoa_control(struct vo *vo, int *events, int request, void *arg) +{ + switch (request) { + case VOCTRL_CHECK_EVENTS: + *events |= vo_cocoa_check_events(vo); + return VO_TRUE; + case VOCTRL_FULLSCREEN: + vo_cocoa_fullscreen(vo); + *events |= VO_EVENT_RESIZE; + return VO_TRUE; + case VOCTRL_ONTOP: + vo_cocoa_ontop(vo); + return VO_TRUE; + case VOCTRL_UPDATE_SCREENINFO: + vo_cocoa_update_xinerama_info(vo); + return VO_TRUE; + case VOCTRL_PAUSE: + vo_cocoa_pause(vo); + return VO_TRUE; + case VOCTRL_RESUME: + vo_cocoa_resume(vo); + return VO_TRUE; + } + return VO_NOTIMPL; +} + int vo_cocoa_swap_interval(int enabled) { [[NSOpenGLContext currentContext] setValues:&enabled |