summaryrefslogtreecommitdiffstats
path: root/player/client.c
diff options
context:
space:
mode:
Diffstat (limited to 'player/client.c')
-rw-r--r--player/client.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/player/client.c b/player/client.c
index 85e3c4021c..31a55332d2 100644
--- a/player/client.c
+++ b/player/client.c
@@ -359,6 +359,8 @@ void mpv_detach_destroy(mpv_handle *ctx)
if (!ctx)
return;
+ MP_VERBOSE(ctx, "Exiting...\n");
+
// reserved_events equals the number of asynchronous requests that weren't
// yet replied. In order to avoid that trying to reply to a removed client
// causes a crash, block until all asynchronous requests were served.
@@ -407,7 +409,13 @@ void mpv_terminate_destroy(mpv_handle *ctx)
if (!ctx)
return;
- mpv_command(ctx, (const char*[]){"quit", NULL});
+ if (ctx->mpctx->initialized) {
+ mpv_command(ctx, (const char*[]){"quit", NULL});
+ } else {
+ mp_dispatch_lock(ctx->mpctx->dispatch);
+ ctx->mpctx->stop_play = PT_QUIT;
+ mp_dispatch_unlock(ctx->mpctx->dispatch);
+ }
if (!ctx->owner) {
mpv_detach_destroy(ctx);
@@ -851,6 +859,12 @@ static bool compare_value(void *a, void *b, mpv_format format)
return false;
return compare_value(&a_n->u, &b_n->u, a_n->format);
}
+ case MPV_FORMAT_BYTE_ARRAY: {
+ struct mpv_byte_array *a_r = a, *b_r = b;
+ if (a_r->size != b_r->size)
+ return false;
+ return memcmp(a_r->data, b_r->data, a_r->size) == 0;
+ }
case MPV_FORMAT_NODE_ARRAY:
case MPV_FORMAT_NODE_MAP:
{
@@ -968,7 +982,7 @@ static int run_client_command(mpv_handle *ctx, struct mp_cmd *cmd, mpv_node *res
return MPV_ERROR_INVALID_PARAMETER;
if (mp_input_is_abort_cmd(cmd))
- mp_cancel_trigger(ctx->mpctx->playback_abort);
+ mp_abort_playback_async(ctx->mpctx);
cmd->sender = ctx->name;
@@ -1088,6 +1102,7 @@ int mpv_set_property(mpv_handle *ctx, const char *name, mpv_format format,
mp_get_property_id(ctx->mpctx, name) >= 0)
return MPV_ERROR_PROPERTY_UNAVAILABLE;
switch (r) {
+ case MPV_ERROR_SUCCESS: return MPV_ERROR_SUCCESS;
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;