diff options
author | wm4 <wm4@nowhere> | 2012-09-27 03:12:32 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2012-10-12 10:10:33 +0200 |
commit | 1d1f59234b0e60df0b9461dd8194b639d334dd61 (patch) | |
tree | ac7be8d7d780f3d62f70bf6badd5b7a3dbb70ea5 /m_property.c | |
parent | 12da72e135fd882ae1ed63e1bf2a11f75a869a35 (diff) | |
download | mpv-1d1f59234b0e60df0b9461dd8194b639d334dd61.tar.bz2 mpv-1d1f59234b0e60df0b9461dd8194b639d334dd61.tar.xz |
commands: move legacy property wrapper to m_property.c
Diffstat (limited to 'm_property.c')
-rw-r--r-- | m_property.c | 49 |
1 files changed, 48 insertions, 1 deletions
diff --git a/m_property.c b/m_property.c index 1644dbd997..c8cf4e3dcf 100644 --- a/m_property.c +++ b/m_property.c @@ -39,6 +39,49 @@ const struct m_option_type m_option_type_dummy = { .name = "Unknown", }; +struct legacy_prop { + const char *old, *new; +}; +static const struct legacy_prop legacy_props[] = { + {"switch_video", "video"}, + {"switch_audio", "audio"}, + {"switch_program", "program"}, + {"framedropping", "framedrop"}, + {"osdlevel", "osd-level"}, + {0} +}; + +static bool translate_legacy_property(const char *name, char *buffer, + size_t buffer_size) +{ + if (strlen(name) + 1 > buffer_size) + return false; + + const char *old_name = name; + + for (int n = 0; legacy_props[n].new; n++) { + if (strcmp(name, legacy_props[n].old) == 0) { + name = legacy_props[n].new; + break; + } + } + + snprintf(buffer, buffer_size, "%s", name); + + // Old names used "_" instead of "-" + for (int n = 0; buffer[n]; n++) { + if (buffer[n] == '_') + buffer[n] = '-'; + } + + if (strcmp(old_name, buffer) != 0) { + mp_msg(MSGT_CPLAYER, MSGL_V, "Warning: property '%s' is deprecated, " + "replaced with '%s'. Fix your input.conf!\n", old_name, buffer); + } + + return true; +} + static int do_action(const m_option_t *prop_list, const char *name, int action, void *arg, void *ctx) { @@ -72,12 +115,16 @@ static int do_action(const m_option_t *prop_list, const char *name, return r; } -int m_property_do(const m_option_t *prop_list, const char *name, +int m_property_do(const m_option_t *prop_list, const char *in_name, int action, void *arg, void *ctx) { union m_option_value val = {0}; int r; + char name[64]; + if (!translate_legacy_property(in_name, name, sizeof(name))) + return M_PROPERTY_UNKNOWN; + struct m_option opt = {0}; r = do_action(prop_list, name, M_PROPERTY_GET_TYPE, &opt, ctx); if (r <= 0) |