mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	impl-node: fix reposition handling
We only need to sync clients when start/stop has been issued otherwise we simply write the new position values in the driver segment. Don't overwrite bar/video position info with invalid values.
This commit is contained in:
		
							parent
							
								
									a4d744e3cf
								
							
						
					
					
						commit
						f37b9ad67b
					
				
					 1 changed files with 12 additions and 6 deletions
				
			
		| 
						 | 
				
			
			@ -1246,10 +1246,6 @@ static int check_updates(struct pw_impl_node *node, uint32_t *reposition_owner)
 | 
			
		|||
			break;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (*reposition_owner)
 | 
			
		||||
		res = SYNC_START;
 | 
			
		||||
 | 
			
		||||
	return res;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1261,9 +1257,19 @@ static void do_reposition(struct pw_impl_node *driver, struct pw_impl_node *node
 | 
			
		|||
	src = &node->rt.activation->reposition;
 | 
			
		||||
	dst = &a->position.segments[0];
 | 
			
		||||
 | 
			
		||||
	pw_log_debug(NAME" %p: update position:%lu", node, src->position);
 | 
			
		||||
	pw_log_trace(NAME" %p: update position:%lu", node, src->position);
 | 
			
		||||
 | 
			
		||||
	dst->version = src->version;
 | 
			
		||||
	dst->flags = src->flags;
 | 
			
		||||
	dst->start = src->start;
 | 
			
		||||
	dst->duration = src->duration;
 | 
			
		||||
	dst->rate = src->rate;
 | 
			
		||||
	dst->position = src->position;
 | 
			
		||||
	if (src->bar.flags & SPA_IO_SEGMENT_BAR_FLAG_VALID)
 | 
			
		||||
		dst->bar = src->bar;
 | 
			
		||||
	if (src->video.flags & SPA_IO_SEGMENT_VIDEO_FLAG_VALID)
 | 
			
		||||
		dst->video = src->video;
 | 
			
		||||
 | 
			
		||||
	memcpy(dst, src, sizeof(struct spa_io_segment));
 | 
			
		||||
	if (dst->start == 0)
 | 
			
		||||
		dst->start = a->position.clock.position - a->position.offset;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue