mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	filter-chain: connect atom ports to an empty atom
Or else the lv2 plugin might crash. Fixes #3815
This commit is contained in:
		
							parent
							
								
									565f560722
								
							
						
					
					
						commit
						bf87fdbd70
					
				
					 1 changed files with 8 additions and 1 deletions
				
			
		| 
						 | 
					@ -237,6 +237,7 @@ struct instance {
 | 
				
			||||||
	const LV2_Worker_Interface *work_iface;
 | 
						const LV2_Worker_Interface *work_iface;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	int32_t block_length;
 | 
						int32_t block_length;
 | 
				
			||||||
 | 
						LV2_Atom empty_atom;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int
 | 
					static int
 | 
				
			||||||
| 
						 | 
					@ -284,7 +285,7 @@ static void *lv2_instantiate(const struct fc_descriptor *desc,
 | 
				
			||||||
	struct plugin *p = d->p;
 | 
						struct plugin *p = d->p;
 | 
				
			||||||
	struct context *c = p->c;
 | 
						struct context *c = p->c;
 | 
				
			||||||
	struct instance *i;
 | 
						struct instance *i;
 | 
				
			||||||
	uint32_t n_features = 0;
 | 
						uint32_t n, n_features = 0;
 | 
				
			||||||
	static const int32_t min_block_length = 1;
 | 
						static const int32_t min_block_length = 1;
 | 
				
			||||||
	static const int32_t max_block_length = 8192;
 | 
						static const int32_t max_block_length = 8192;
 | 
				
			||||||
	static const int32_t seq_size = 32768;
 | 
						static const int32_t seq_size = 32768;
 | 
				
			||||||
| 
						 | 
					@ -339,6 +340,12 @@ static void *lv2_instantiate(const struct fc_descriptor *desc,
 | 
				
			||||||
                i->work_iface = (const LV2_Worker_Interface*)
 | 
					                i->work_iface = (const LV2_Worker_Interface*)
 | 
				
			||||||
			lilv_instance_get_extension_data(i->instance, LV2_WORKER__interface);
 | 
								lilv_instance_get_extension_data(i->instance, LV2_WORKER__interface);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
						for (n = 0; n < desc->n_ports; n++) {
 | 
				
			||||||
 | 
							const LilvPort *port = lilv_plugin_get_port_by_index(p->p, n);
 | 
				
			||||||
 | 
							if (lilv_port_is_a(p->p, port, c->atom_AtomPort)) {
 | 
				
			||||||
 | 
								lilv_instance_connect_port(i->instance, n, &i->empty_atom);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return i;
 | 
						return i;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue