diff options
author | wm4 <wm4@nowhere> | 2020-03-13 16:49:39 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2020-03-13 17:34:46 +0100 |
commit | 8d965a1bfb3782343a03cff44977f11bb920f0b1 (patch) | |
tree | 2d115c24510ab36cc9ac7af8dea2b710537561c9 /options/m_config_frontend.c | |
parent | 5d5a7e19537a036fe16ce04555e6ce9449c47494 (diff) | |
download | mpv-8d965a1bfb3782343a03cff44977f11bb920f0b1.tar.bz2 mpv-8d965a1bfb3782343a03cff44977f11bb920f0b1.tar.xz |
options: change how option range min/max is handled
Before this commit, option declarations used M_OPT_MIN/M_OPT_MAX (and
some other identifiers based on these) to signal whether an option had
min/max values. Remove these flags, and make it use a range implicitly
on the condition if min<max is true.
This requires care in all cases when only M_OPT_MIN or M_OPT_MAX were
set (instead of both). Generally, the commit replaces all these
instances with using DBL_MAX/DBL_MIN for the "unset" part of the range.
This also happens to fix some cases where you could pass over-large
values to integer options, which were silently truncated, but now cause
an error.
This commit has some higher potential for regressions.
Diffstat (limited to 'options/m_config_frontend.c')
-rw-r--r-- | options/m_config_frontend.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/options/m_config_frontend.c b/options/m_config_frontend.c index ab93203645..467c13eb8f 100644 --- a/options/m_config_frontend.c +++ b/options/m_config_frontend.c @@ -15,6 +15,7 @@ * License along with mpv. If not, see <http://www.gnu.org/licenses/>. */ +#include <float.h> #include <stdlib.h> #include <stdio.h> #include <errno.h> @@ -786,17 +787,17 @@ void m_config_print_option_list(const struct m_config *config, const char *name) struct m_opt_choice_alternatives *alt = opt->priv; for (int n = 0; alt[n].name; n++) MP_INFO(config, " %s", alt[n].name); - if (opt->flags & (M_OPT_MIN | M_OPT_MAX)) + if (opt->min < opt->max) MP_INFO(config, " (or an integer)"); } else { MP_INFO(config, " %s", opt->type->name); } - if (opt->flags & (M_OPT_MIN | M_OPT_MAX)) { + if ((opt->type->flags & M_OPT_TYPE_USES_RANGE) && opt->min < opt->max) { snprintf(min, sizeof(min), "any"); snprintf(max, sizeof(max), "any"); - if (opt->flags & M_OPT_MIN) + if (opt->min != DBL_MIN) snprintf(min, sizeof(min), "%.14g", opt->min); - if (opt->flags & M_OPT_MAX) + if (opt->max != DBL_MAX) snprintf(max, sizeof(max), "%.14g", opt->max); MP_INFO(config, " (%s to %s)", min, max); } |