summaryrefslogtreecommitdiffstats
path: root/player
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2016-09-19 19:58:14 +0200
committerwm4 <wm4@nowhere>2016-09-19 20:02:53 +0200
commitdf85c76b7f8711b15e36973518578e0064657b8e (patch)
treedf02edb8409a65a24736f6a4831cc5bc854ab103 /player
parent44a7cb7f0ed9c46bb83ce4aa23de257c4ba1b862 (diff)
downloadmpv-df85c76b7f8711b15e36973518578e0064657b8e.tar.bz2
mpv-df85c76b7f8711b15e36973518578e0064657b8e.tar.xz
client API: revert some relaxations about calling mpv_initialize()
My original idea was making mpv_initialize() a no-op, but it seems this can't happen after all. The problem is especially with subtle interactions in option parsing (basically all pre-parse options). Instead, I might go into the opposite direction, and add a new API function that takes over the role of mpv_create+mpv_initialize, and which will take a list of options. This list will be for the purpose of setting options that can be set only at initialization time (such as config-dir). This would also make it more uniform with the command- line player initialization. Maybe. In any case, for now revert parts of commit 453fea87 to remove the initialization-related freedoms it added. Fortunately, this wasn't released yet, so we remove it from the API as if it never happened. (The rest of that commit is still fine, just not the additional freedom.)
Diffstat (limited to 'player')
-rw-r--r--player/client.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/player/client.c b/player/client.c
index bed21565a7..f95ad372b5 100644
--- a/player/client.c
+++ b/player/client.c
@@ -1000,6 +1000,8 @@ static void cmd_fn(void *data)
static int run_client_command(mpv_handle *ctx, struct mp_cmd *cmd, mpv_node *res)
{
+ if (!ctx->mpctx->initialized)
+ return MPV_ERROR_UNINITIALIZED;
if (!cmd)
return MPV_ERROR_INVALID_PARAMETER;
@@ -1039,6 +1041,8 @@ int mpv_command_string(mpv_handle *ctx, const char *args)
static int run_cmd_async(mpv_handle *ctx, uint64_t ud, struct mp_cmd *cmd)
{
+ if (!ctx->mpctx->initialized)
+ return MPV_ERROR_UNINITIALIZED;
if (!cmd)
return MPV_ERROR_INVALID_PARAMETER;
@@ -1116,6 +1120,8 @@ 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 (!get_mp_type(format))
return MPV_ERROR_PROPERTY_FORMAT;
@@ -1145,6 +1151,8 @@ int mpv_set_property_async(mpv_handle *ctx, uint64_t ud, const char *name,
mpv_format format, void *data)
{
const struct m_option *type = get_mp_type(format);
+ if (!ctx->mpctx->initialized)
+ return MPV_ERROR_UNINITIALIZED;
if (!type)
return MPV_ERROR_PROPERTY_FORMAT;
@@ -1257,6 +1265,8 @@ static void getproperty_fn(void *arg)
int mpv_get_property(mpv_handle *ctx, const char *name, mpv_format format,
void *data)
{
+ if (!ctx->mpctx->initialized)
+ return MPV_ERROR_UNINITIALIZED;
if (!data)
return MPV_ERROR_INVALID_PARAMETER;
if (!get_mp_type_get(format))
@@ -1289,6 +1299,8 @@ char *mpv_get_property_osd_string(mpv_handle *ctx, const char *name)
int mpv_get_property_async(mpv_handle *ctx, uint64_t ud, const char *name,
mpv_format format)
{
+ if (!ctx->mpctx->initialized)
+ return MPV_ERROR_UNINITIALIZED;
if (!get_mp_type_get(format))
return MPV_ERROR_PROPERTY_FORMAT;
@@ -1455,6 +1467,8 @@ static void update_prop(void *p)
// outstanding property.
static bool gen_property_change_event(struct mpv_handle *ctx)
{
+ if (!ctx->mpctx->initialized)
+ return false;
int start = ctx->lowest_changed;
ctx->lowest_changed = ctx->num_properties;
for (int n = start; n < ctx->num_properties; n++) {
@@ -1724,6 +1738,8 @@ int mpv_opengl_cb_render(mpv_opengl_cb_context *ctx, int fbo, int vp[4])
void *mpv_get_sub_api(mpv_handle *ctx, mpv_sub_api sub_api)
{
+ if (!ctx->mpctx->initialized)
+ return NULL;
void *res = NULL;
lock_core(ctx);
switch (sub_api) {