diff options
Diffstat (limited to 'player/client.c')
-rw-r--r-- | player/client.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/player/client.c b/player/client.c index 81b94abd22..ac89d3a141 100644 --- a/player/client.c +++ b/player/client.c @@ -330,8 +330,11 @@ void mpv_suspend(mpv_handle *ctx) } pthread_mutex_unlock(&ctx->lock); - if (do_suspend) - mp_dispatch_suspend(ctx->mpctx->dispatch); + if (do_suspend) { + mp_dispatch_lock(ctx->mpctx->dispatch); + ctx->mpctx->suspend_count++; + mp_dispatch_unlock(ctx->mpctx->dispatch); + } } void mpv_resume(mpv_handle *ctx) @@ -347,8 +350,11 @@ void mpv_resume(mpv_handle *ctx) } pthread_mutex_unlock(&ctx->lock); - if (do_resume) - mp_dispatch_resume(ctx->mpctx->dispatch); + if (do_resume) { + mp_dispatch_lock(ctx->mpctx->dispatch); + ctx->mpctx->suspend_count--; + mp_dispatch_unlock(ctx->mpctx->dispatch); + } } void mp_resume_all(mpv_handle *ctx) @@ -358,8 +364,11 @@ void mp_resume_all(mpv_handle *ctx) ctx->suspend_count = 0; pthread_mutex_unlock(&ctx->lock); - if (do_resume) - mp_dispatch_resume(ctx->mpctx->dispatch); + if (do_resume) { + mp_dispatch_lock(ctx->mpctx->dispatch); + ctx->mpctx->suspend_count--; + mp_dispatch_unlock(ctx->mpctx->dispatch); + } } static void lock_core(mpv_handle *ctx) |