mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	sco-source: fix bugs in buffer handling
Buffers sent to io should be marked outstanding, also in node_process. port->current_buffer has to be initialized together with buffer lists.
This commit is contained in:
		
							parent
							
								
									0bf7b07d91
								
							
						
					
					
						commit
						2760c151bd
					
				
					 1 changed files with 4 additions and 1 deletions
				
			
		| 
						 | 
					@ -274,6 +274,8 @@ static void reset_buffers(struct port *port)
 | 
				
			||||||
	spa_list_init(&port->free);
 | 
						spa_list_init(&port->free);
 | 
				
			||||||
	spa_list_init(&port->ready);
 | 
						spa_list_init(&port->ready);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						port->current_buffer = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (i = 0; i < port->n_buffers; i++) {
 | 
						for (i = 0; i < port->n_buffers; i++) {
 | 
				
			||||||
		struct buffer *b = &port->buffers[i];
 | 
							struct buffer *b = &port->buffers[i];
 | 
				
			||||||
		spa_list_append(&port->free, &b->link);
 | 
							spa_list_append(&port->free, &b->link);
 | 
				
			||||||
| 
						 | 
					@ -841,6 +843,7 @@ static int clear_buffers(struct impl *this, struct port *port)
 | 
				
			||||||
		spa_list_init(&port->ready);
 | 
							spa_list_init(&port->ready);
 | 
				
			||||||
		port->n_buffers = 0;
 | 
							port->n_buffers = 0;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						port->current_buffer = NULL;
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1037,7 +1040,7 @@ static int impl_node_process(void *object)
 | 
				
			||||||
	/* Get the new buffer from the ready list */
 | 
						/* Get the new buffer from the ready list */
 | 
				
			||||||
	buffer = spa_list_first(&port->ready, struct buffer, link);
 | 
						buffer = spa_list_first(&port->ready, struct buffer, link);
 | 
				
			||||||
	spa_list_remove(&buffer->link);
 | 
						spa_list_remove(&buffer->link);
 | 
				
			||||||
	buffer->outstanding = false;
 | 
						buffer->outstanding = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Set the new buffer in IO */
 | 
						/* Set the new buffer in IO */
 | 
				
			||||||
	io->buffer_id = buffer->id;
 | 
						io->buffer_id = buffer->id;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue