1
0
mirror of https://github.com/mpv-player/mpv synced 2025-01-13 02:16:40 +00:00

client API: change semantics for MPV_FORMAT_STRING

With mpv_set_property(h, "property", MPV_FORMAT_STRING, ptr), ptr now
has to be of type char** instead of char*. This makes it more consistent
with mpv_get_property() and also non-pointer formats, which will be
introduced in the following commits. mpv_set_property() of course does
not change its interface (only its implementation is adjusted to keep
its interface).

This also affects mpv_set_option(), but again not
mpv_set_option_string().
This commit is contained in:
wm4 2014-02-24 19:35:06 +01:00
parent 1e30048184
commit 1e27d130a2
2 changed files with 19 additions and 7 deletions

View File

@ -372,10 +372,16 @@ typedef enum mpv_format {
* printf("%s\n", result);
* mpv_free(result);
*
* Or just use mpv_get_property_string().
*
* Example for writing:
*
* char *value = "the new value";
* mpv_set_property(ctx, "property", MPV_FORMAT_STRING, (void *)value);
* // yep, you pass the address to the variable
* // (needed for symmetry with other types and mpv_get_property)
* mpv_set_property(ctx, "property", MPV_FORMAT_STRING, &value);
*
* Or just use mpv_set_property_string().
*
*/
MPV_FORMAT_STRING = 1,
@ -673,7 +679,13 @@ typedef struct mpv_event_property {
*/
mpv_format format;
/**
* Received property value. Depends on the format.
* Received property value. Depends on the format. This is like the
* pointer argument passed to mpv_get_property().
*
* For example, for MPV_FORMAT_STRING you get the string with:
*
* char *value = *(char **)(event_property->data);
*
* Note that this is set to NULL if retrieving the property failed.
* See mpv_event.error for the status.
*/

View File

@ -462,7 +462,7 @@ int mpv_set_option(mpv_handle *ctx, const char *name, mpv_format format,
} else {
if (format != MPV_FORMAT_STRING)
return MPV_ERROR_OPTION_FORMAT;
const char *value = data;
const char *value = *(char **)data;
int err = m_config_set_option0(ctx->mpctx->mconfig, name, value);
switch (err) {
case M_OPT_MISSING_PARAM:
@ -481,7 +481,7 @@ int mpv_set_option(mpv_handle *ctx, const char *name, mpv_format format,
int mpv_set_option_string(mpv_handle *ctx, const char *name, const char *data)
{
return mpv_set_option(ctx, name, MPV_FORMAT_STRING, (void *)data);
return mpv_set_option(ctx, name, MPV_FORMAT_STRING, &data);
}
// Run a command in the playback thread.
@ -635,7 +635,7 @@ int mpv_set_property(mpv_handle *ctx, const char *name, mpv_format format,
.mpctx = ctx->mpctx,
.name = name,
.format = format,
.data = data,
.data = *(char **)data,
};
run_locked(ctx, setproperty_fn, &req);
return req.status;
@ -643,7 +643,7 @@ int mpv_set_property(mpv_handle *ctx, const char *name, mpv_format format,
int mpv_set_property_string(mpv_handle *ctx, const char *name, const char *data)
{
return mpv_set_property(ctx, name, MPV_FORMAT_STRING, (void *)data);
return mpv_set_property(ctx, name, MPV_FORMAT_STRING, &data);
}
int mpv_set_property_async(mpv_handle *ctx, uint64_t ud, const char *name,
@ -657,7 +657,7 @@ int mpv_set_property_async(mpv_handle *ctx, uint64_t ud, const char *name,
.mpctx = ctx->mpctx,
.name = talloc_strdup(req, name),
.format = MPV_FORMAT_STRING,
.data = talloc_strdup(req, data), // for now always a string
.data = talloc_strdup(req, *(char **)data), // for now always a string
.reply_ctx = ctx,
.userdata = ud,
};