mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	log: add topic for data and thread loop
This commit is contained in:
		
							parent
							
								
									f0085b383e
								
							
						
					
					
						commit
						e9af0e4ef8
					
				
					 3 changed files with 40 additions and 33 deletions
				
			
		| 
						 | 
					@ -31,7 +31,8 @@
 | 
				
			||||||
#include "pipewire/private.h"
 | 
					#include "pipewire/private.h"
 | 
				
			||||||
#include "pipewire/thread.h"
 | 
					#include "pipewire/thread.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define NAME "data-loop"
 | 
					PW_LOG_TOPIC_EXTERN(log_data_loop);
 | 
				
			||||||
 | 
					#define PW_LOG_TOPIC_DEFAULT log_data_loop
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SPA_EXPORT
 | 
					SPA_EXPORT
 | 
				
			||||||
int pw_data_loop_wait(struct pw_data_loop *this, int timeout)
 | 
					int pw_data_loop_wait(struct pw_data_loop *this, int timeout)
 | 
				
			||||||
| 
						 | 
					@ -61,7 +62,7 @@ void pw_data_loop_exit(struct pw_data_loop *this)
 | 
				
			||||||
static void thread_cleanup(void *arg)
 | 
					static void thread_cleanup(void *arg)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct pw_data_loop *this = arg;
 | 
						struct pw_data_loop *this = arg;
 | 
				
			||||||
	pw_log_debug(NAME" %p: leave thread", this);
 | 
						pw_log_debug("%p: leave thread", this);
 | 
				
			||||||
	this->running = false;
 | 
						this->running = false;
 | 
				
			||||||
	pw_loop_leave(this->loop);
 | 
						pw_loop_leave(this->loop);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -71,7 +72,7 @@ static void *do_loop(void *user_data)
 | 
				
			||||||
	struct pw_data_loop *this = user_data;
 | 
						struct pw_data_loop *this = user_data;
 | 
				
			||||||
	int res;
 | 
						int res;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pw_log_debug(NAME" %p: enter thread", this);
 | 
						pw_log_debug("%p: enter thread", this);
 | 
				
			||||||
	pw_loop_enter(this->loop);
 | 
						pw_loop_enter(this->loop);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pthread_cleanup_push(thread_cleanup, this);
 | 
						pthread_cleanup_push(thread_cleanup, this);
 | 
				
			||||||
| 
						 | 
					@ -80,7 +81,7 @@ static void *do_loop(void *user_data)
 | 
				
			||||||
		if ((res = pw_loop_iterate(this->loop, -1)) < 0) {
 | 
							if ((res = pw_loop_iterate(this->loop, -1)) < 0) {
 | 
				
			||||||
			if (res == -EINTR)
 | 
								if (res == -EINTR)
 | 
				
			||||||
				continue;
 | 
									continue;
 | 
				
			||||||
			pw_log_error(NAME" %p: iterate error %d (%s)",
 | 
								pw_log_error("%p: iterate error %d (%s)",
 | 
				
			||||||
					this, res, spa_strerror(res));
 | 
										this, res, spa_strerror(res));
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -92,7 +93,7 @@ static void *do_loop(void *user_data)
 | 
				
			||||||
static void do_stop(void *data, uint64_t count)
 | 
					static void do_stop(void *data, uint64_t count)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct pw_data_loop *this = data;
 | 
						struct pw_data_loop *this = data;
 | 
				
			||||||
	pw_log_debug(NAME" %p: stopping", this);
 | 
						pw_log_debug("%p: stopping", this);
 | 
				
			||||||
	this->running = false;
 | 
						this->running = false;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -108,7 +109,7 @@ static struct pw_data_loop *loop_new(struct pw_loop *loop, const struct spa_dict
 | 
				
			||||||
		goto error_cleanup;
 | 
							goto error_cleanup;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pw_log_debug(NAME" %p: new", this);
 | 
						pw_log_debug("%p: new", this);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (loop == NULL) {
 | 
						if (loop == NULL) {
 | 
				
			||||||
		loop = pw_loop_new(props);
 | 
							loop = pw_loop_new(props);
 | 
				
			||||||
| 
						 | 
					@ -116,7 +117,7 @@ static struct pw_data_loop *loop_new(struct pw_loop *loop, const struct spa_dict
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (loop == NULL) {
 | 
						if (loop == NULL) {
 | 
				
			||||||
		res = -errno;
 | 
							res = -errno;
 | 
				
			||||||
		pw_log_error(NAME" %p: can't create loop: %m", this);
 | 
							pw_log_error("%p: can't create loop: %m", this);
 | 
				
			||||||
		goto error_free;
 | 
							goto error_free;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	this->loop = loop;
 | 
						this->loop = loop;
 | 
				
			||||||
| 
						 | 
					@ -127,7 +128,7 @@ static struct pw_data_loop *loop_new(struct pw_loop *loop, const struct spa_dict
 | 
				
			||||||
		this->event = pw_loop_add_event(this->loop, do_stop, this);
 | 
							this->event = pw_loop_add_event(this->loop, do_stop, this);
 | 
				
			||||||
		if (this->event == NULL) {
 | 
							if (this->event == NULL) {
 | 
				
			||||||
			res = -errno;
 | 
								res = -errno;
 | 
				
			||||||
			pw_log_error(NAME" %p: can't add event: %m", this);
 | 
								pw_log_error("%p: can't add event: %m", this);
 | 
				
			||||||
			goto error_loop_destroy;
 | 
								goto error_loop_destroy;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -162,7 +163,7 @@ struct pw_data_loop *pw_data_loop_new(const struct spa_dict *props)
 | 
				
			||||||
SPA_EXPORT
 | 
					SPA_EXPORT
 | 
				
			||||||
void pw_data_loop_destroy(struct pw_data_loop *loop)
 | 
					void pw_data_loop_destroy(struct pw_data_loop *loop)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_debug(NAME" %p: destroy", loop);
 | 
						pw_log_debug("%p: destroy", loop);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pw_data_loop_emit_destroy(loop);
 | 
						pw_data_loop_emit_destroy(loop);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -211,7 +212,7 @@ int pw_data_loop_start(struct pw_data_loop *loop)
 | 
				
			||||||
		thr = pw_thread_utils_create(NULL, do_loop, loop);
 | 
							thr = pw_thread_utils_create(NULL, do_loop, loop);
 | 
				
			||||||
		loop->thread = (pthread_t)thr;
 | 
							loop->thread = (pthread_t)thr;
 | 
				
			||||||
		if (thr == NULL) {
 | 
							if (thr == NULL) {
 | 
				
			||||||
			pw_log_error(NAME" %p: can't create thread: %m", loop);
 | 
								pw_log_error("%p: can't create thread: %m", loop);
 | 
				
			||||||
			loop->running = false;
 | 
								loop->running = false;
 | 
				
			||||||
			return -errno;
 | 
								return -errno;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					@ -229,20 +230,20 @@ int pw_data_loop_start(struct pw_data_loop *loop)
 | 
				
			||||||
SPA_EXPORT
 | 
					SPA_EXPORT
 | 
				
			||||||
int pw_data_loop_stop(struct pw_data_loop *loop)
 | 
					int pw_data_loop_stop(struct pw_data_loop *loop)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_debug(NAME": %p stopping", loop);
 | 
						pw_log_debug("%p stopping", loop);
 | 
				
			||||||
	if (loop->running) {
 | 
						if (loop->running) {
 | 
				
			||||||
		if (loop->event) {
 | 
							if (loop->event) {
 | 
				
			||||||
			pw_log_debug(NAME": %p signal", loop);
 | 
								pw_log_debug("%p signal", loop);
 | 
				
			||||||
			pw_loop_signal_event(loop->loop, loop->event);
 | 
								pw_loop_signal_event(loop->loop, loop->event);
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			pw_log_debug(NAME": %p cancel", loop);
 | 
								pw_log_debug("%p cancel", loop);
 | 
				
			||||||
			pthread_cancel(loop->thread);
 | 
								pthread_cancel(loop->thread);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		pw_log_debug(NAME": %p join", loop);
 | 
							pw_log_debug("%p join", loop);
 | 
				
			||||||
		pw_thread_utils_join((struct spa_thread*)loop->thread, NULL);
 | 
							pw_thread_utils_join((struct spa_thread*)loop->thread, NULL);
 | 
				
			||||||
		pw_log_debug(NAME": %p joined", loop);
 | 
							pw_log_debug("%p joined", loop);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	pw_log_debug(NAME": %p stopped", loop);
 | 
						pw_log_debug("%p stopped", loop);
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -51,6 +51,7 @@ PW_LOG_TOPIC_STATIC(log_topic, "pw.log"); /* log topic for this file here */
 | 
				
			||||||
PW_LOG_TOPIC(log_buffers, "pw.buffers");
 | 
					PW_LOG_TOPIC(log_buffers, "pw.buffers");
 | 
				
			||||||
PW_LOG_TOPIC(log_conf, "pw.conf");
 | 
					PW_LOG_TOPIC(log_conf, "pw.conf");
 | 
				
			||||||
PW_LOG_TOPIC(log_context, "pw.context");
 | 
					PW_LOG_TOPIC(log_context, "pw.context");
 | 
				
			||||||
 | 
					PW_LOG_TOPIC(log_data_loop, "pw.data-loop");
 | 
				
			||||||
PW_LOG_TOPIC(log_metadata, "pw.metadata");
 | 
					PW_LOG_TOPIC(log_metadata, "pw.metadata");
 | 
				
			||||||
PW_LOG_TOPIC(log_node, "pw.node");
 | 
					PW_LOG_TOPIC(log_node, "pw.node");
 | 
				
			||||||
PW_LOG_TOPIC(log_port, "pw.port");
 | 
					PW_LOG_TOPIC(log_port, "pw.port");
 | 
				
			||||||
| 
						 | 
					@ -63,6 +64,7 @@ PW_LOG_TOPIC(log_factory, "pw.factory");
 | 
				
			||||||
PW_LOG_TOPIC(log_module, "pw.module");
 | 
					PW_LOG_TOPIC(log_module, "pw.module");
 | 
				
			||||||
PW_LOG_TOPIC(log_device, "pw.device");
 | 
					PW_LOG_TOPIC(log_device, "pw.device");
 | 
				
			||||||
PW_LOG_TOPIC(log_resource, "pw.resource");
 | 
					PW_LOG_TOPIC(log_resource, "pw.resource");
 | 
				
			||||||
 | 
					PW_LOG_TOPIC(log_thread_loop, "pw.thread-loop");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PW_LOG_TOPIC(PW_LOG_TOPIC_DEFAULT, "default");
 | 
					PW_LOG_TOPIC(PW_LOG_TOPIC_DEFAULT, "default");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -420,6 +422,7 @@ pw_log_init(void)
 | 
				
			||||||
	PW_LOG_TOPIC_INIT(PW_LOG_TOPIC_DEFAULT);
 | 
						PW_LOG_TOPIC_INIT(PW_LOG_TOPIC_DEFAULT);
 | 
				
			||||||
	PW_LOG_TOPIC_INIT(log_buffers);
 | 
						PW_LOG_TOPIC_INIT(log_buffers);
 | 
				
			||||||
	PW_LOG_TOPIC_INIT(log_conf);
 | 
						PW_LOG_TOPIC_INIT(log_conf);
 | 
				
			||||||
 | 
						PW_LOG_TOPIC_INIT(log_data_loop);
 | 
				
			||||||
	PW_LOG_TOPIC_INIT(log_topic);
 | 
						PW_LOG_TOPIC_INIT(log_topic);
 | 
				
			||||||
	PW_LOG_TOPIC_INIT(log_context);
 | 
						PW_LOG_TOPIC_INIT(log_context);
 | 
				
			||||||
	PW_LOG_TOPIC_INIT(log_metadata);
 | 
						PW_LOG_TOPIC_INIT(log_metadata);
 | 
				
			||||||
| 
						 | 
					@ -434,4 +437,5 @@ pw_log_init(void)
 | 
				
			||||||
	PW_LOG_TOPIC_INIT(log_module);
 | 
						PW_LOG_TOPIC_INIT(log_module);
 | 
				
			||||||
	PW_LOG_TOPIC_INIT(log_device);
 | 
						PW_LOG_TOPIC_INIT(log_device);
 | 
				
			||||||
	PW_LOG_TOPIC_INIT(log_resource);
 | 
						PW_LOG_TOPIC_INIT(log_resource);
 | 
				
			||||||
 | 
						PW_LOG_TOPIC_INIT(log_thread_loop);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -31,7 +31,9 @@
 | 
				
			||||||
#include "log.h"
 | 
					#include "log.h"
 | 
				
			||||||
#include "thread-loop.h"
 | 
					#include "thread-loop.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define NAME "thread-loop"
 | 
					PW_LOG_TOPIC_EXTERN(log_thread_loop);
 | 
				
			||||||
 | 
					#define PW_LOG_TOPIC_DEFAULT log_thread_loop
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define pw_thread_loop_events_emit(o,m,v,...) spa_hook_list_call(&o->listener_list, struct pw_thread_loop_events, m, v, ##__VA_ARGS__)
 | 
					#define pw_thread_loop_events_emit(o,m,v,...) spa_hook_list_call(&o->listener_list, struct pw_thread_loop_events, m, v, ##__VA_ARGS__)
 | 
				
			||||||
#define pw_thread_loop_events_destroy(o)	pw_thread_loop_events_emit(o, destroy, 0)
 | 
					#define pw_thread_loop_events_destroy(o)	pw_thread_loop_events_emit(o, destroy, 0)
 | 
				
			||||||
| 
						 | 
					@ -118,7 +120,7 @@ static struct pw_thread_loop *loop_new(struct pw_loop *loop,
 | 
				
			||||||
	if (this == NULL)
 | 
						if (this == NULL)
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pw_log_debug(NAME" %p: new name:%s", this, name);
 | 
						pw_log_debug("%p: new name:%s", this, name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (loop == NULL) {
 | 
						if (loop == NULL) {
 | 
				
			||||||
		loop = pw_loop_new(props);
 | 
							loop = pw_loop_new(props);
 | 
				
			||||||
| 
						 | 
					@ -253,18 +255,18 @@ static void *do_loop(void *user_data)
 | 
				
			||||||
	int res;
 | 
						int res;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pthread_mutex_lock(&this->lock);
 | 
						pthread_mutex_lock(&this->lock);
 | 
				
			||||||
	pw_log_debug(NAME" %p: enter thread", this);
 | 
						pw_log_debug("%p: enter thread", this);
 | 
				
			||||||
	pw_loop_enter(this->loop);
 | 
						pw_loop_enter(this->loop);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	while (this->running) {
 | 
						while (this->running) {
 | 
				
			||||||
		if ((res = pw_loop_iterate(this->loop, -1)) < 0) {
 | 
							if ((res = pw_loop_iterate(this->loop, -1)) < 0) {
 | 
				
			||||||
			if (res == -EINTR)
 | 
								if (res == -EINTR)
 | 
				
			||||||
				continue;
 | 
									continue;
 | 
				
			||||||
			pw_log_warn(NAME" %p: iterate error %d (%s)",
 | 
								pw_log_warn("%p: iterate error %d (%s)",
 | 
				
			||||||
					this, res, spa_strerror(res));
 | 
										this, res, spa_strerror(res));
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	pw_log_debug(NAME" %p: leave thread", this);
 | 
						pw_log_debug("%p: leave thread", this);
 | 
				
			||||||
	pw_loop_leave(this->loop);
 | 
						pw_loop_leave(this->loop);
 | 
				
			||||||
	pthread_mutex_unlock(&this->lock);
 | 
						pthread_mutex_unlock(&this->lock);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -285,13 +287,13 @@ int pw_thread_loop_start(struct pw_thread_loop *loop)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		loop->running = true;
 | 
							loop->running = true;
 | 
				
			||||||
		if ((err = pthread_create(&loop->thread, NULL, do_loop, loop)) != 0) {
 | 
							if ((err = pthread_create(&loop->thread, NULL, do_loop, loop)) != 0) {
 | 
				
			||||||
			pw_log_warn(NAME" %p: can't create thread: %s", loop,
 | 
								pw_log_warn("%p: can't create thread: %s", loop,
 | 
				
			||||||
				    strerror(err));
 | 
									    strerror(err));
 | 
				
			||||||
			loop->running = false;
 | 
								loop->running = false;
 | 
				
			||||||
			return -err;
 | 
								return -err;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if ((err = pthread_setname_np(loop->thread, loop->name)) != 0)
 | 
							if ((err = pthread_setname_np(loop->thread, loop->name)) != 0)
 | 
				
			||||||
			pw_log_warn(NAME" %p: error: %s", loop, strerror(err));
 | 
								pw_log_warn("%p: error: %s", loop, strerror(err));
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -304,16 +306,16 @@ int pw_thread_loop_start(struct pw_thread_loop *loop)
 | 
				
			||||||
SPA_EXPORT
 | 
					SPA_EXPORT
 | 
				
			||||||
void pw_thread_loop_stop(struct pw_thread_loop *loop)
 | 
					void pw_thread_loop_stop(struct pw_thread_loop *loop)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_debug(NAME": %p stopping %d", loop, loop->running);
 | 
						pw_log_debug("%p stopping %d", loop, loop->running);
 | 
				
			||||||
	if (loop->running) {
 | 
						if (loop->running) {
 | 
				
			||||||
		pw_log_debug(NAME": %p signal", loop);
 | 
							pw_log_debug("%p signal", loop);
 | 
				
			||||||
		pw_loop_signal_event(loop->loop, loop->event);
 | 
							pw_loop_signal_event(loop->loop, loop->event);
 | 
				
			||||||
		pw_log_debug(NAME": %p join", loop);
 | 
							pw_log_debug("%p join", loop);
 | 
				
			||||||
		pthread_join(loop->thread, NULL);
 | 
							pthread_join(loop->thread, NULL);
 | 
				
			||||||
		pw_log_debug(NAME": %p joined", loop);
 | 
							pw_log_debug("%p joined", loop);
 | 
				
			||||||
		loop->running = false;
 | 
							loop->running = false;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	pw_log_debug(NAME": %p stopped", loop);
 | 
						pw_log_debug("%p stopped", loop);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** Lock the mutex associated with \a loop
 | 
					/** Lock the mutex associated with \a loop
 | 
				
			||||||
| 
						 | 
					@ -325,7 +327,7 @@ SPA_EXPORT
 | 
				
			||||||
void pw_thread_loop_lock(struct pw_thread_loop *loop)
 | 
					void pw_thread_loop_lock(struct pw_thread_loop *loop)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pthread_mutex_lock(&loop->lock);
 | 
						pthread_mutex_lock(&loop->lock);
 | 
				
			||||||
	pw_log_trace(NAME": %p", loop);
 | 
						pw_log_trace("%p", loop);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** Unlock the mutex associated with \a loop
 | 
					/** Unlock the mutex associated with \a loop
 | 
				
			||||||
| 
						 | 
					@ -336,7 +338,7 @@ void pw_thread_loop_lock(struct pw_thread_loop *loop)
 | 
				
			||||||
SPA_EXPORT
 | 
					SPA_EXPORT
 | 
				
			||||||
void pw_thread_loop_unlock(struct pw_thread_loop *loop)
 | 
					void pw_thread_loop_unlock(struct pw_thread_loop *loop)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_trace(NAME": %p", loop);
 | 
						pw_log_trace("%p", loop);
 | 
				
			||||||
	pthread_mutex_unlock(&loop->lock);
 | 
						pthread_mutex_unlock(&loop->lock);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -352,7 +354,7 @@ void pw_thread_loop_unlock(struct pw_thread_loop *loop)
 | 
				
			||||||
SPA_EXPORT
 | 
					SPA_EXPORT
 | 
				
			||||||
void pw_thread_loop_signal(struct pw_thread_loop *loop, bool wait_for_accept)
 | 
					void pw_thread_loop_signal(struct pw_thread_loop *loop, bool wait_for_accept)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_trace(NAME": %p, waiting:%d accept:%d",
 | 
						pw_log_trace("%p, waiting:%d accept:%d",
 | 
				
			||||||
			loop, loop->n_waiting, wait_for_accept);
 | 
								loop, loop->n_waiting, wait_for_accept);
 | 
				
			||||||
	if (loop->n_waiting > 0)
 | 
						if (loop->n_waiting > 0)
 | 
				
			||||||
		pthread_cond_broadcast(&loop->cond);
 | 
							pthread_cond_broadcast(&loop->cond);
 | 
				
			||||||
| 
						 | 
					@ -373,11 +375,11 @@ void pw_thread_loop_signal(struct pw_thread_loop *loop, bool wait_for_accept)
 | 
				
			||||||
SPA_EXPORT
 | 
					SPA_EXPORT
 | 
				
			||||||
void pw_thread_loop_wait(struct pw_thread_loop *loop)
 | 
					void pw_thread_loop_wait(struct pw_thread_loop *loop)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_trace(NAME": %p, waiting %d", loop, loop->n_waiting);
 | 
						pw_log_trace("%p, waiting %d", loop, loop->n_waiting);
 | 
				
			||||||
	loop->n_waiting++;
 | 
						loop->n_waiting++;
 | 
				
			||||||
	pthread_cond_wait(&loop->cond, &loop->lock);
 | 
						pthread_cond_wait(&loop->cond, &loop->lock);
 | 
				
			||||||
	loop->n_waiting--;
 | 
						loop->n_waiting--;
 | 
				
			||||||
	pw_log_trace(NAME": %p, waiting done %d", loop, loop->n_waiting);
 | 
						pw_log_trace("%p, waiting done %d", loop, loop->n_waiting);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** Wait for the loop thread to call \ref pw_thread_loop_signal()
 | 
					/** Wait for the loop thread to call \ref pw_thread_loop_signal()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue