mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-10-29 05:40:27 -04:00 
			
		
		
		
	
							parent
							
								
									b97dd00f26
								
							
						
					
					
						commit
						7da9c2b25d
					
				
					 3 changed files with 25 additions and 12 deletions
				
			
		|  | @ -40,6 +40,7 @@ static void do_quit(void *userdata, int signal_number) | |||
| int main(int argc, char *argv[]) | ||||
| { | ||||
| 	struct data data = { 0, }; | ||||
| 	struct pw_loop *loop; | ||||
| 	struct pw_properties *props; | ||||
| 	const char *dev = "hw:0"; | ||||
| 
 | ||||
|  | @ -47,13 +48,15 @@ int main(int argc, char *argv[]) | |||
| 
 | ||||
| 	data.loop = pw_main_loop_new(NULL); | ||||
| 
 | ||||
| 	loop = pw_main_loop_get_loop(data.loop); | ||||
| 
 | ||||
| 	if (argc > 1) | ||||
| 		dev = argv[1]; | ||||
| 
 | ||||
| 	pw_loop_add_signal(pw_main_loop_get_loop(data.loop), SIGINT, do_quit, &data); | ||||
| 	pw_loop_add_signal(pw_main_loop_get_loop(data.loop), SIGTERM, do_quit, &data); | ||||
| 	pw_loop_add_signal(loop, SIGINT, do_quit, &data); | ||||
| 	pw_loop_add_signal(loop, SIGTERM, do_quit, &data); | ||||
| 
 | ||||
| 	data.context = pw_context_new(pw_main_loop_get_loop(data.loop), NULL, 0); | ||||
| 	data.context = pw_context_new(loop, NULL, 0); | ||||
| 
 | ||||
| 	pw_context_load_module(data.context, "libpipewire-module-spa-node-factory", NULL, NULL); | ||||
| 	pw_context_load_module(data.context, "libpipewire-module-link-factory", NULL, NULL); | ||||
|  | @ -91,13 +94,15 @@ int main(int argc, char *argv[]) | |||
| 			PW_VERSION_NODE, | ||||
| 			&props->dict, 0); | ||||
| 
 | ||||
| 	pw_loop_enter(loop); | ||||
| 	while (true) { | ||||
| 		if (pw_proxy_get_bound_id(data.source) != SPA_ID_INVALID && | ||||
| 		    pw_proxy_get_bound_id(data.sink) != SPA_ID_INVALID) | ||||
| 			break; | ||||
| 
 | ||||
| 		pw_loop_iterate(pw_main_loop_get_loop(data.loop), -1); | ||||
| 		pw_loop_iterate(loop, -1); | ||||
|         } | ||||
| 	pw_loop_leave(loop); | ||||
| 
 | ||||
| 	pw_properties_clear(props); | ||||
| 	pw_properties_setf(props, | ||||
|  |  | |||
|  | @ -33,7 +33,8 @@ struct data { | |||
| 	SDL_Window *window; | ||||
| 	SDL_Texture *texture; | ||||
| 
 | ||||
| 	struct pw_main_loop *loop; | ||||
| 	struct pw_main_loop *main_loop; | ||||
| 	struct pw_loop *loop; | ||||
| 
 | ||||
| 	struct pw_context *context; | ||||
| 	struct pw_core *core; | ||||
|  | @ -61,7 +62,7 @@ static void handle_events(struct data *data) | |||
| 	while (SDL_PollEvent(&event)) { | ||||
| 		switch (event.type) { | ||||
| 		case SDL_QUIT: | ||||
| 			pw_main_loop_quit(data->loop); | ||||
| 			pw_main_loop_quit(data->main_loop); | ||||
| 			break; | ||||
| 		} | ||||
| 	} | ||||
|  | @ -309,7 +310,7 @@ static int impl_node_process(void *object) | |||
| 	struct data *d = object; | ||||
| 	int res; | ||||
| 
 | ||||
| 	if ((res = pw_loop_invoke(pw_main_loop_get_loop(d->loop), do_render, | ||||
| 	if ((res = pw_loop_invoke(d->loop, do_render, | ||||
| 				  SPA_ID_INVALID, NULL, 0, true, d)) < 0) | ||||
| 		return res; | ||||
| 
 | ||||
|  | @ -372,14 +373,16 @@ static int make_nodes(struct data *data) | |||
| 			&props->dict, 0); | ||||
| 
 | ||||
| 
 | ||||
| 	pw_loop_enter(data->loop); | ||||
| 	while (true) { | ||||
| 
 | ||||
| 		if (pw_proxy_get_bound_id(data->out) != SPA_ID_INVALID && | ||||
| 		    pw_proxy_get_bound_id(data->in) != SPA_ID_INVALID) | ||||
| 			break; | ||||
| 
 | ||||
| 		pw_loop_iterate(pw_main_loop_get_loop(data->loop), -1); | ||||
| 		pw_loop_iterate(data->loop, -1); | ||||
| 	} | ||||
| 	pw_loop_leave(data->loop); | ||||
| 
 | ||||
| 	pw_properties_clear(props); | ||||
| 
 | ||||
|  | @ -405,9 +408,10 @@ int main(int argc, char *argv[]) | |||
| 
 | ||||
| 	pw_init(&argc, &argv); | ||||
| 
 | ||||
| 	data.loop = pw_main_loop_new(NULL); | ||||
| 	data.main_loop = pw_main_loop_new(NULL); | ||||
| 	data.loop = pw_main_loop_get_loop(data.main_loop); | ||||
| 	data.context = pw_context_new( | ||||
| 			pw_main_loop_get_loop(data.loop), | ||||
| 			data.loop, | ||||
| 			pw_properties_new( | ||||
| 				PW_KEY_CORE_DAEMON, "false", | ||||
| 				NULL), 0); | ||||
|  | @ -436,13 +440,13 @@ int main(int argc, char *argv[]) | |||
| 
 | ||||
| 	make_nodes(&data); | ||||
| 
 | ||||
| 	pw_main_loop_run(data.loop); | ||||
| 	pw_main_loop_run(data.main_loop); | ||||
| 
 | ||||
| 	pw_proxy_destroy(data.link); | ||||
| 	pw_proxy_destroy(data.in); | ||||
| 	pw_proxy_destroy(data.out); | ||||
| 	pw_context_destroy(data.context); | ||||
| 	pw_main_loop_destroy(data.loop); | ||||
| 	pw_main_loop_destroy(data.main_loop); | ||||
| 	pw_deinit(); | ||||
| 
 | ||||
| 	return 0; | ||||
|  |  | |||
|  | @ -182,7 +182,9 @@ PWTEST(daemon_test) | |||
|         core = pw_context_connect(ctx, NULL, 0); | ||||
| 	pwtest_ptr_notnull(core); | ||||
| 
 | ||||
| 	pw_loop_enter(loop); | ||||
| 	pw_loop_iterate(loop, -1); | ||||
| 	pw_loop_leave(loop); | ||||
| 	pw_core_disconnect(core); | ||||
|         pw_context_destroy(ctx); | ||||
| 	pw_loop_destroy(loop); | ||||
|  | @ -205,7 +207,9 @@ PWTEST(daemon_test_without_daemon) | |||
| 
 | ||||
| 	pwtest_ptr_notnull(core); /* Expect this to fail because we don't have a daemon */ | ||||
| 
 | ||||
| 	pw_loop_enter(loop); | ||||
| 	pw_loop_iterate(loop, -1); | ||||
| 	pw_loop_leave(loop); | ||||
| 	pw_core_disconnect(core); | ||||
|         pw_context_destroy(ctx); | ||||
| 	pw_loop_destroy(loop); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Wim Taymans
						Wim Taymans