mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	
							parent
							
								
									bee97b09e2
								
							
						
					
					
						commit
						8a0f52ab78
					
				
					 4 changed files with 94 additions and 20 deletions
				
			
		| 
						 | 
				
			
			@ -137,6 +137,7 @@ pipewire_module_protocol_pulse_sources = [
 | 
			
		|||
  'module-protocol-pulse/dbus-name.c',
 | 
			
		||||
  'module-protocol-pulse/format.c',
 | 
			
		||||
  'module-protocol-pulse/manager.c',
 | 
			
		||||
  'module-protocol-pulse/pending-sample.c',
 | 
			
		||||
  'module-protocol-pulse/pulse-server.c',
 | 
			
		||||
  'module-protocol-pulse/sample.c',
 | 
			
		||||
  'module-protocol-pulse/sample-play.c',
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										45
									
								
								src/modules/module-protocol-pulse/pending-sample.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								src/modules/module-protocol-pulse/pending-sample.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,45 @@
 | 
			
		|||
/* PipeWire
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright © 2020 Wim Taymans
 | 
			
		||||
 *
 | 
			
		||||
 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
			
		||||
 * copy of this software and associated documentation files (the "Software"),
 | 
			
		||||
 * to deal in the Software without restriction, including without limitation
 | 
			
		||||
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
			
		||||
 * and/or sell copies of the Software, and to permit persons to whom the
 | 
			
		||||
 * Software is furnished to do so, subject to the following conditions:
 | 
			
		||||
 *
 | 
			
		||||
 * The above copyright notice and this permission notice (including the next
 | 
			
		||||
 * paragraph) shall be included in all copies or substantial portions of the
 | 
			
		||||
 * Software.
 | 
			
		||||
 *
 | 
			
		||||
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
			
		||||
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
			
		||||
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
			
		||||
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
			
		||||
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
			
		||||
 * DEALINGS IN THE SOFTWARE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <spa/utils/list.h>
 | 
			
		||||
#include <spa/utils/hook.h>
 | 
			
		||||
#include <pipewire/work-queue.h>
 | 
			
		||||
 | 
			
		||||
#include "internal.h"
 | 
			
		||||
#include "pending-sample.h"
 | 
			
		||||
#include "sample-play.h"
 | 
			
		||||
 | 
			
		||||
void pending_sample_free(struct pending_sample *ps)
 | 
			
		||||
{
 | 
			
		||||
	struct client * const client = ps->client;
 | 
			
		||||
	struct impl * const impl = client->impl;
 | 
			
		||||
 | 
			
		||||
	spa_list_remove(&ps->link);
 | 
			
		||||
	spa_hook_remove(&ps->listener);
 | 
			
		||||
	pw_work_queue_cancel(impl->work_queue, ps, SPA_ID_INVALID);
 | 
			
		||||
 | 
			
		||||
	client->ref--;
 | 
			
		||||
 | 
			
		||||
	sample_play_destroy(ps->play);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										47
									
								
								src/modules/module-protocol-pulse/pending-sample.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								src/modules/module-protocol-pulse/pending-sample.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,47 @@
 | 
			
		|||
/* PipeWire
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright © 2020 Wim Taymans
 | 
			
		||||
 *
 | 
			
		||||
 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
			
		||||
 * copy of this software and associated documentation files (the "Software"),
 | 
			
		||||
 * to deal in the Software without restriction, including without limitation
 | 
			
		||||
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
			
		||||
 * and/or sell copies of the Software, and to permit persons to whom the
 | 
			
		||||
 * Software is furnished to do so, subject to the following conditions:
 | 
			
		||||
 *
 | 
			
		||||
 * The above copyright notice and this permission notice (including the next
 | 
			
		||||
 * paragraph) shall be included in all copies or substantial portions of the
 | 
			
		||||
 * Software.
 | 
			
		||||
 *
 | 
			
		||||
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
			
		||||
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
			
		||||
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
			
		||||
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
			
		||||
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
			
		||||
 * DEALINGS IN THE SOFTWARE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef PULSE_SERVER_PENDING_SAMPLE_H
 | 
			
		||||
#define PULSE_SERVER_PENDING_SAMPLE_H
 | 
			
		||||
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
 | 
			
		||||
#include <spa/utils/list.h>
 | 
			
		||||
#include <spa/utils/hook.h>
 | 
			
		||||
 | 
			
		||||
struct client;
 | 
			
		||||
struct sample_play;
 | 
			
		||||
 | 
			
		||||
struct pending_sample {
 | 
			
		||||
	struct spa_list link;
 | 
			
		||||
	struct client *client;
 | 
			
		||||
	struct sample_play *play;
 | 
			
		||||
	struct spa_hook listener;
 | 
			
		||||
	uint32_t tag;
 | 
			
		||||
	unsigned int done:1;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void pending_sample_free(struct pending_sample *ps);
 | 
			
		||||
 | 
			
		||||
#endif /* PULSE_SERVER_PENDING_SAMPLE_H */
 | 
			
		||||
| 
						 | 
				
			
			@ -86,6 +86,7 @@
 | 
			
		|||
#include "defs.h"
 | 
			
		||||
#include "format.h"
 | 
			
		||||
#include "internal.h"
 | 
			
		||||
#include "pending-sample.h"
 | 
			
		||||
#include "sample.h"
 | 
			
		||||
#include "sample-play.h"
 | 
			
		||||
#include "volume.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -2617,26 +2618,6 @@ static struct pw_manager_object *find_device(struct client *client,
 | 
			
		|||
	return select_object(client->manager, &sel);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
struct pending_sample {
 | 
			
		||||
	struct spa_list link;
 | 
			
		||||
	struct client *client;
 | 
			
		||||
	struct sample_play *play;
 | 
			
		||||
	struct spa_hook listener;
 | 
			
		||||
	uint32_t tag;
 | 
			
		||||
	unsigned int done:1;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static void pending_sample_free(struct pending_sample *ps)
 | 
			
		||||
{
 | 
			
		||||
	struct client *client = ps->client;
 | 
			
		||||
	struct impl *impl = client->impl;
 | 
			
		||||
	spa_list_remove(&ps->link);
 | 
			
		||||
	spa_hook_remove(&ps->listener);
 | 
			
		||||
	pw_work_queue_cancel(impl->work_queue, ps, SPA_ID_INVALID);
 | 
			
		||||
	ps->client->ref--;
 | 
			
		||||
	sample_play_destroy(ps->play);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void sample_play_ready(void *data, uint32_t index)
 | 
			
		||||
{
 | 
			
		||||
	struct pending_sample *ps = data;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue