summaryrefslogtreecommitdiffstats
path: root/player/client.c
diff options
context:
space:
mode:
authorxylosper <darklin20@gmail.com>2014-02-26 22:05:17 +0900
committerwm4 <wm4@nowhere>2014-02-26 21:01:54 +0100
commitc176f2be39c26509fa1588ba1365427eff43b06f (patch)
tree1679aa2aceb04b9cddbed829275d0c40a8266fe6 /player/client.c
parent9a7a3d125be38d46db0bf5de26e9c41392cc63fb (diff)
downloadmpv-c176f2be39c26509fa1588ba1365427eff43b06f.tar.bz2
mpv-c176f2be39c26509fa1588ba1365427eff43b06f.tar.xz
client API: fix broken property/option functions
1. Cannot set option after initialized: it seems that this bug has existed since libmpv was introduced first. Maybe just a typo. 2. Crash when setting property with native format: mpv_set_property just causes a crash when using a native format. I found an invalid casting and fixed it. 3. Wrong error value for mpv_get_property: when an error occurred, mpv_get_property always returns wrong format error because every error for property except M_PROPERTY_NOT_IMPLEMENTED is just ignored. Signed-off-by: wm4 <wm4@nowhere> Closes pull request #593. Does not incldue the first fix, which was not correct. The underlying bug will be fixed by a later commit. Commit message extracted from pull request and slightly edited.
Diffstat (limited to 'player/client.c')
-rw-r--r--player/client.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/player/client.c b/player/client.c
index 886ae5b0c8..e2257ab8cf 100644
--- a/player/client.c
+++ b/player/client.c
@@ -510,7 +510,7 @@ int mpv_set_option(mpv_handle *ctx, const char *name, mpv_format format,
if (ctx->mpctx->initialized) {
char prop[100];
snprintf(prop, sizeof(prop), "options/%s", name);
- int err = mpv_set_property(ctx, name, format, data);
+ int err = mpv_set_property(ctx, prop, format, data);
switch (err) {
case MPV_ERROR_PROPERTY_UNAVAILABLE:
case MPV_ERROR_PROPERTY_ERROR:
@@ -725,7 +725,7 @@ int mpv_set_property(mpv_handle *ctx, const char *name, mpv_format format,
.mpctx = ctx->mpctx,
.name = name,
.format = format,
- .data = *(char **)data,
+ .data = data,
};
run_locked(ctx, setproperty_fn, &req);
return req.status;
@@ -821,7 +821,8 @@ static void getproperty_fn(void *arg)
break;
node.format = MPV_FORMAT_STRING;
node.u.string = s;
- }
+ } else if (err <= 0)
+ break;
if (req->format == MPV_FORMAT_NODE) {
*(struct mpv_node *)data = node;
} else {