summaryrefslogtreecommitdiffstats
path: root/video/out/cocoa_common.m
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-05-15 18:17:18 +0200
committerwm4 <wm4@nowhere>2013-05-26 16:44:18 +0200
commitbf10a4fdfa40cbe519e6ccb7fb895332da2021d1 (patch)
tree8ff3a3b2601c85291c5531e4d0dc88266a6b7ef6 /video/out/cocoa_common.m
parentc23bf5311fce3b59e9111e5de646ee57b48be27f (diff)
downloadmpv-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.m26
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