mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	audioconvert: only deactive old filter when new filter loaded
When we fail to load the new filter, keep the old filter active or else we will cause a crash when we clean up the old graph.
This commit is contained in:
		
							parent
							
								
									0868ff1ada
								
							
						
					
					
						commit
						049ab37a6d
					
				
					 1 changed files with 4 additions and 2 deletions
				
			
		| 
						 | 
					@ -1062,7 +1062,7 @@ static int load_filter_graph(struct impl *impl, const char *graph, int order)
 | 
				
			||||||
	void *iface;
 | 
						void *iface;
 | 
				
			||||||
	struct spa_handle *new_handle = NULL;
 | 
						struct spa_handle *new_handle = NULL;
 | 
				
			||||||
	uint32_t i, idx, n_graph;
 | 
						uint32_t i, idx, n_graph;
 | 
				
			||||||
	struct filter_graph *pending;
 | 
						struct filter_graph *pending, *old_active = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (impl->props.filter_graph_disabled)
 | 
						if (impl->props.filter_graph_disabled)
 | 
				
			||||||
		return -EPERM;
 | 
							return -EPERM;
 | 
				
			||||||
| 
						 | 
					@ -1078,7 +1078,7 @@ static int load_filter_graph(struct impl *impl, const char *graph, int order)
 | 
				
			||||||
		/* deactivate an existing filter of the same order */
 | 
							/* deactivate an existing filter of the same order */
 | 
				
			||||||
		if (pending->active) {
 | 
							if (pending->active) {
 | 
				
			||||||
			if (pending->order == order)
 | 
								if (pending->order == order)
 | 
				
			||||||
				pending->active = false;
 | 
									old_active = pending;
 | 
				
			||||||
			else
 | 
								else
 | 
				
			||||||
				n_graph++;
 | 
									n_graph++;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					@ -1119,6 +1119,8 @@ static int load_filter_graph(struct impl *impl, const char *graph, int order)
 | 
				
			||||||
		spa_log_info(impl->log, "removing filter-graph order:%d active:%d",
 | 
							spa_log_info(impl->log, "removing filter-graph order:%d active:%d",
 | 
				
			||||||
				order, n_graph);
 | 
									order, n_graph);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						if (old_active)
 | 
				
			||||||
 | 
							old_active->active = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* we call this here on the pending_graph so that the n_input/n_output is updated
 | 
						/* we call this here on the pending_graph so that the n_input/n_output is updated
 | 
				
			||||||
	 * before we switch */
 | 
						 * before we switch */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue