mirror of
				https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
				synced 2025-11-03 09:01:50 -05:00 
			
		
		
		
	client: detect forking in sample cache API, too
This commit is contained in:
		
							parent
							
								
									e8a2d12724
								
							
						
					
					
						commit
						7ab9bea29d
					
				
					 2 changed files with 8 additions and 2 deletions
				
			
		| 
						 | 
					@ -28,15 +28,15 @@
 | 
				
			||||||
#include <string.h>
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <pulse/utf8.h>
 | 
					#include <pulse/utf8.h>
 | 
				
			||||||
 | 
					#include <pulse/scache.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <pulsecore/pstream-util.h>
 | 
					#include <pulsecore/pstream-util.h>
 | 
				
			||||||
#include <pulsecore/macro.h>
 | 
					#include <pulsecore/macro.h>
 | 
				
			||||||
#include <pulsecore/proplist-util.h>
 | 
					#include <pulsecore/proplist-util.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "fork-detect.h"
 | 
				
			||||||
#include "internal.h"
 | 
					#include "internal.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "scache.h"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int pa_stream_connect_upload(pa_stream *s, size_t length) {
 | 
					int pa_stream_connect_upload(pa_stream *s, size_t length) {
 | 
				
			||||||
    pa_tagstruct *t;
 | 
					    pa_tagstruct *t;
 | 
				
			||||||
    uint32_t tag;
 | 
					    uint32_t tag;
 | 
				
			||||||
| 
						 | 
					@ -45,6 +45,7 @@ int pa_stream_connect_upload(pa_stream *s, size_t length) {
 | 
				
			||||||
    pa_assert(s);
 | 
					    pa_assert(s);
 | 
				
			||||||
    pa_assert(PA_REFCNT_VALUE(s) >= 1);
 | 
					    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, s->state == PA_STREAM_UNCONNECTED, PA_ERR_BADSTATE);
 | 
				
			||||||
    PA_CHECK_VALIDITY(s->context, length > 0, PA_ERR_INVALID);
 | 
					    PA_CHECK_VALIDITY(s->context, length > 0, PA_ERR_INVALID);
 | 
				
			||||||
    PA_CHECK_VALIDITY(s->context, length == (size_t) (uint32_t) length, 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(s);
 | 
				
			||||||
    pa_assert(PA_REFCNT_VALUE(s) >= 1);
 | 
					    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->channel_valid, PA_ERR_BADSTATE);
 | 
				
			||||||
    PA_CHECK_VALIDITY(s->context, s->context->state == PA_CONTEXT_READY, 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(c);
 | 
				
			||||||
    pa_assert(PA_REFCNT_VALUE(c) >= 1);
 | 
					    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, 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, name && *name, PA_ERR_INVALID);
 | 
				
			||||||
    PA_CHECK_VALIDITY_RETURN_NULL(c, !dev || *dev, 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(c);
 | 
				
			||||||
    pa_assert(PA_REFCNT_VALUE(c) >= 1);
 | 
					    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, 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, name && *name, PA_ERR_INVALID);
 | 
				
			||||||
    PA_CHECK_VALIDITY_RETURN_NULL(c, !dev || *dev, 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(c);
 | 
				
			||||||
    pa_assert(PA_REFCNT_VALUE(c) >= 1);
 | 
					    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, 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, name && *name, PA_ERR_INVALID);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,6 +29,7 @@
 | 
				
			||||||
#include <string.h>
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <pulse/def.h>
 | 
					#include <pulse/def.h>
 | 
				
			||||||
 | 
					#include <pulse/stream.h>
 | 
				
			||||||
#include <pulse/timeval.h>
 | 
					#include <pulse/timeval.h>
 | 
				
			||||||
#include <pulse/rtclock.h>
 | 
					#include <pulse/rtclock.h>
 | 
				
			||||||
#include <pulse/xmalloc.h>
 | 
					#include <pulse/xmalloc.h>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue