mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	
							parent
							
								
									d7f7fd258d
								
							
						
					
					
						commit
						1110dbb7c1
					
				
					 1 changed files with 13 additions and 19 deletions
				
			
		| 
						 | 
					@ -393,19 +393,6 @@ static void process_device(struct impl *impl, uint32_t action, struct udev_devic
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int stop_inotify(struct device *dev)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	struct impl *impl = dev->impl;
 | 
					 | 
				
			||||||
	if (dev->notify.fd == -1)
 | 
					 | 
				
			||||||
		return 0;
 | 
					 | 
				
			||||||
	spa_log_info(impl->log, "stop inotify for /dev/video%u", dev->id);
 | 
					 | 
				
			||||||
	spa_loop_remove_source(impl->main_loop, &dev->notify);
 | 
					 | 
				
			||||||
	close(dev->notify.fd);
 | 
					 | 
				
			||||||
	dev->notify.fd = -1;
 | 
					 | 
				
			||||||
	return 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void impl_on_notify_events(struct spa_source *source)
 | 
					static void impl_on_notify_events(struct spa_source *source)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct device *dev = source->data;
 | 
						struct device *dev = source->data;
 | 
				
			||||||
| 
						 | 
					@ -415,12 +402,7 @@ static void impl_on_notify_events(struct spa_source *source)
 | 
				
			||||||
		struct inotify_event e; /* for appropriate alignment */
 | 
							struct inotify_event e; /* for appropriate alignment */
 | 
				
			||||||
	} buf;
 | 
						} buf;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (source->rmask & (SPA_IO_ERR | SPA_IO_HUP)) {
 | 
						while (true) {
 | 
				
			||||||
		spa_log_warn(impl->log, "notify error on /dev/video%u", dev->id);
 | 
					 | 
				
			||||||
		stop_inotify(dev);
 | 
					 | 
				
			||||||
		return;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	while (source->rmask & SPA_IO_IN) {
 | 
					 | 
				
			||||||
		ssize_t len;
 | 
							ssize_t len;
 | 
				
			||||||
		const struct inotify_event *event;
 | 
							const struct inotify_event *event;
 | 
				
			||||||
		void *p, *e;
 | 
							void *p, *e;
 | 
				
			||||||
| 
						 | 
					@ -487,6 +469,18 @@ static int start_inotify(struct device *dev)
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int stop_inotify(struct device *dev)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						struct impl *impl = dev->impl;
 | 
				
			||||||
 | 
						if (dev->notify.fd == -1)
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
						spa_log_info(impl->log, "stop inotify for /dev/video%u", dev->id);
 | 
				
			||||||
 | 
						spa_loop_remove_source(impl->main_loop, &dev->notify);
 | 
				
			||||||
 | 
						close(dev->notify.fd);
 | 
				
			||||||
 | 
						dev->notify.fd = -1;
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void impl_on_fd_events(struct spa_source *source)
 | 
					static void impl_on_fd_events(struct spa_source *source)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct impl *impl = source->data;
 | 
						struct impl *impl = source->data;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue