diff options
-rw-r--r-- | DOCS/client-api-changes.rst | 5 | ||||
-rw-r--r-- | DOCS/interface-changes.rst | 4 | ||||
-rw-r--r-- | options/m_option.c | 17 |
3 files changed, 24 insertions, 2 deletions
diff --git a/DOCS/client-api-changes.rst b/DOCS/client-api-changes.rst index 44490ea79d..8fcdf83e32 100644 --- a/DOCS/client-api-changes.rst +++ b/DOCS/client-api-changes.rst @@ -41,6 +41,11 @@ API changes is invoked with that type directly. This new behavior is equivalent to mpv_set_option(). This also affects the mp.set_property_native() Lua function. + - generally, setting choice options/properties with "yes"/"no" options + can now be set as MPV_FORMAT_FLAG + - reading a choice property as MPV_FORMAT_NODE will now return a + MPV_FORMAT_FLAG value if the choice is "yes" (true) or "no" (false) + This implicitly affects Lua and JSON IPC interfaces as well. --- mpv 0.12.0 --- 1.20 - deprecate "GL_MP_D3D_interfaces"/"glMPGetD3DInterface", and introduce "GL_MP_MPGetNativeDisplay"/"glMPGetNativeDisplay" (this is a diff --git a/DOCS/interface-changes.rst b/DOCS/interface-changes.rst index 5ca7f19639..58197d7a70 100644 --- a/DOCS/interface-changes.rst +++ b/DOCS/interface-changes.rst @@ -28,6 +28,10 @@ Interface changes - add "hwdec-interop" and "hwdec-current" properties - deprecated "hwdec-active" and "hwdec-detected" properties (to be removed in mpv 0.19.0) + - choice option/property values that are "yes" or "no" will now be returned + as booleans when using the mpv_node functions in the client API, the + "native" property accessors in Lua, and the JSON API. They can be set as + such as well. --- mpv 0.17.0 --- - deprecate "track-list/N/audio-channels" property (use "track-list/N/demux-channel-count" instead) diff --git a/options/m_option.c b/options/m_option.c index 1d8b1d0bf6..85bdf91cf4 100644 --- a/options/m_option.c +++ b/options/m_option.c @@ -672,6 +672,8 @@ static int choice_set(const m_option_t *opt, void *dst, struct mpv_node *src) src_str = buf; } else if (src->format == MPV_FORMAT_STRING) { src_str = src->u.string; + } else if (src->format == MPV_FORMAT_FLAG) { + src_str = src->u.flag ? "yes" : "no"; } if (!src_str) return M_OPT_UNKNOWN; @@ -713,8 +715,19 @@ static int choice_get(const m_option_t *opt, void *ta_parent, alt = NULL; } if (alt) { - dst->format = MPV_FORMAT_STRING; - dst->u.string = talloc_strdup(ta_parent, alt->name); + int b = -1; + if (strcmp(alt->name, "yes") == 0) { + b = 1; + } else if (strcmp(alt->name, "no") == 0) { + b = 0; + } + if (b >= 0) { + dst->format = MPV_FORMAT_FLAG; + dst->u.flag = b; + } else { + dst->format = MPV_FORMAT_STRING; + dst->u.string = talloc_strdup(ta_parent, alt->name); + } } else { dst->format = MPV_FORMAT_INT64; dst->u.int64 = ival; |