summaryrefslogtreecommitdiffstats
path: root/video
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2016-09-05 21:04:17 +0200
committerwm4 <wm4@nowhere>2016-09-05 21:04:17 +0200
commit4ab860cddc177047663bbe8940b0d34c621b6425 (patch)
treeb13ac6888948d4b5f132d03f3ac243ea7790db73 /video
parentcc813647d54843e4731cc36160f0c1e04e4b1404 (diff)
downloadmpv-4ab860cddc177047663bbe8940b0d34c621b6425.tar.bz2
mpv-4ab860cddc177047663bbe8940b0d34c621b6425.tar.xz
options: add a mechanism to make sub-option replacement slightly easier
Instead of requiring each VO or AO to manually add members to MPOpts and the global option table, make it possible to register them automatically via vo_driver/ao_driver.global_opts members. This avoids modifying options.c/options.h every time, including having to duplicate the exact ifdeffery used to enable a driver.
Diffstat (limited to 'video')
-rw-r--r--video/out/vo.c1
-rw-r--r--video/out/vo.h4
-rw-r--r--video/out/vo_opengl.c3
3 files changed, 7 insertions, 1 deletions
diff --git a/video/out/vo.c b/video/out/vo.c
index ee554f0e6d..050a5303e6 100644
--- a/video/out/vo.c
+++ b/video/out/vo.c
@@ -174,6 +174,7 @@ static bool get_desc(struct m_obj_desc *dst, int index)
.priv_size = vo->priv_size,
.priv_defaults = vo->priv_defaults,
.options = vo->options,
+ .global_opts = vo->global_opts,
.hidden = vo->encode || !strcmp(vo->name, "opengl-cb"),
.p = vo,
};
diff --git a/video/out/vo.h b/video/out/vo.h
index 15f9f9e7df..6a6101692c 100644
--- a/video/out/vo.h
+++ b/video/out/vo.h
@@ -296,6 +296,10 @@ struct vo_driver {
// List of options to parse into priv struct (requires priv_size to be set)
const struct m_option *options;
+
+ // Global options to register if the VO is compiled in.
+ // mp_get_config_group() or other function can be used to access them.
+ const struct m_sub_options *global_opts;
};
struct vo {
diff --git a/video/out/vo_opengl.c b/video/out/vo_opengl.c
index 83f5840caa..a22f02bb5e 100644
--- a/video/out/vo_opengl.c
+++ b/video/out/vo_opengl.c
@@ -63,7 +63,7 @@ struct vo_opengl_opts {
};
#define OPT_BASE_STRUCT struct vo_opengl_opts
-const struct m_sub_options vo_opengl_conf = {
+static const struct m_sub_options vo_opengl_conf = {
.opts = (const m_option_t[]) {
OPT_FLAG("opengl-glfinish", use_glFinish, 0),
OPT_FLAG("opengl-waitvsync", waitvsync, 0),
@@ -487,4 +487,5 @@ const struct vo_driver video_out_opengl = {
.uninit = uninit,
.priv_size = sizeof(struct gl_priv),
.options = legacy_options,
+ .global_opts = &vo_opengl_conf,
};