diff options
Diffstat (limited to 'player')
-rw-r--r-- | player/client.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/player/client.c b/player/client.c index 93db0bb3d2..774a4e05c0 100644 --- a/player/client.c +++ b/player/client.c @@ -1132,8 +1132,17 @@ static void setproperty_fn(void *arg) int mpv_set_property(mpv_handle *ctx, const char *name, mpv_format format, void *data) { - if (!ctx->mpctx->initialized) - return MPV_ERROR_UNINITIALIZED; + if (!ctx->mpctx->initialized) { + int r = mpv_set_option(ctx, name, format, data); + if (r == MPV_ERROR_OPTION_NOT_FOUND && + mp_get_property_id(ctx->mpctx, name) >= 0) + return MPV_ERROR_PROPERTY_UNAVAILABLE; + switch (r) { + case MPV_ERROR_OPTION_FORMAT: return MPV_ERROR_PROPERTY_FORMAT; + case MPV_ERROR_OPTION_NOT_FOUND: return MPV_ERROR_PROPERTY_NOT_FOUND; + default: return MPV_ERROR_PROPERTY_ERROR; + } + } if (!get_mp_type(format)) return MPV_ERROR_PROPERTY_FORMAT; |