f230785869
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/pulseaudio?expand=0&rev=b45128f7b3bb89343a5750f38f143738
88 lines
3.2 KiB
Diff
88 lines
3.2 KiB
Diff
From bf50dc42306857e361267d2ad39b737ad05b8604 Mon Sep 17 00:00:00 2001
|
|
From: Lennart Poettering <lennart@poettering.net>
|
|
Date: Tue, 12 Jan 2010 03:01:14 +0100
|
|
Subject: [PATCH] client: detect forking in sample cache API, too
|
|
|
|
---
|
|
src/pulse/scache.c | 9 +++++++--
|
|
src/pulse/stream.c | 1 +
|
|
2 files changed, 8 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/src/pulse/scache.c b/src/pulse/scache.c
|
|
index 27da688..2a7602f 100644
|
|
--- a/src/pulse/scache.c
|
|
+++ b/src/pulse/scache.c
|
|
@@ -28,15 +28,15 @@
|
|
#include <string.h>
|
|
|
|
#include <pulse/utf8.h>
|
|
+#include <pulse/scache.h>
|
|
|
|
#include <pulsecore/pstream-util.h>
|
|
#include <pulsecore/macro.h>
|
|
#include <pulsecore/proplist-util.h>
|
|
|
|
+#include "fork-detect.h"
|
|
#include "internal.h"
|
|
|
|
-#include "scache.h"
|
|
-
|
|
int pa_stream_connect_upload(pa_stream *s, size_t length) {
|
|
pa_tagstruct *t;
|
|
uint32_t tag;
|
|
@@ -45,6 +45,7 @@ int pa_stream_connect_upload(pa_stream *s, size_t length) {
|
|
pa_assert(s);
|
|
pa_assert(PA_REFCNT_VALUE(s) >= 1);
|
|
|
|
+ PA_CHECK_VALIDITY(s->context, !pa_detect_fork(), PA_ERR_FORKED);
|
|
PA_CHECK_VALIDITY(s->context, s->state == PA_STREAM_UNCONNECTED, PA_ERR_BADSTATE);
|
|
PA_CHECK_VALIDITY(s->context, length > 0, PA_ERR_INVALID);
|
|
PA_CHECK_VALIDITY(s->context, length == (size_t) (uint32_t) length, PA_ERR_INVALID);
|
|
@@ -85,6 +86,7 @@ int pa_stream_finish_upload(pa_stream *s) {
|
|
pa_assert(s);
|
|
pa_assert(PA_REFCNT_VALUE(s) >= 1);
|
|
|
|
+ PA_CHECK_VALIDITY(s->context, !pa_detect_fork(), PA_ERR_FORKED);
|
|
PA_CHECK_VALIDITY(s->context, s->channel_valid, PA_ERR_BADSTATE);
|
|
PA_CHECK_VALIDITY(s->context, s->context->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
|
|
|
|
@@ -174,6 +176,7 @@ pa_operation *pa_context_play_sample(pa_context *c, const char *name, const char
|
|
pa_assert(c);
|
|
pa_assert(PA_REFCNT_VALUE(c) >= 1);
|
|
|
|
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
|
|
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
|
|
PA_CHECK_VALIDITY_RETURN_NULL(c, name && *name, PA_ERR_INVALID);
|
|
PA_CHECK_VALIDITY_RETURN_NULL(c, !dev || *dev, PA_ERR_INVALID);
|
|
@@ -213,6 +216,7 @@ pa_operation *pa_context_play_sample_with_proplist(pa_context *c, const char *na
|
|
pa_assert(c);
|
|
pa_assert(PA_REFCNT_VALUE(c) >= 1);
|
|
|
|
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
|
|
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
|
|
PA_CHECK_VALIDITY_RETURN_NULL(c, name && *name, PA_ERR_INVALID);
|
|
PA_CHECK_VALIDITY_RETURN_NULL(c, !dev || *dev, PA_ERR_INVALID);
|
|
@@ -255,6 +259,7 @@ pa_operation* pa_context_remove_sample(pa_context *c, const char *name, pa_conte
|
|
pa_assert(c);
|
|
pa_assert(PA_REFCNT_VALUE(c) >= 1);
|
|
|
|
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
|
|
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
|
|
PA_CHECK_VALIDITY_RETURN_NULL(c, name && *name, PA_ERR_INVALID);
|
|
|
|
diff --git a/src/pulse/stream.c b/src/pulse/stream.c
|
|
index 793277a..79b2868 100644
|
|
--- a/src/pulse/stream.c
|
|
+++ b/src/pulse/stream.c
|
|
@@ -29,6 +29,7 @@
|
|
#include <string.h>
|
|
|
|
#include <pulse/def.h>
|
|
+#include <pulse/stream.h>
|
|
#include <pulse/timeval.h>
|
|
#include <pulse/rtclock.h>
|
|
#include <pulse/xmalloc.h>
|
|
--
|
|
1.6.0.2
|
|
|