diff options
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) |