summaryrefslogtreecommitdiffstats
path: root/player/client.c
diff options
context:
space:
mode:
Diffstat (limited to 'player/client.c')
-rw-r--r--player/client.c21
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)