mirror of
				https://gitlab.freedesktop.org/wayland/wayland.git
				synced 2025-11-03 09:01:42 -05:00 
			
		
		
		
	client: broadcast the right pthread_cond variable
In previous commit we removed unused variables. One of them was pthread_cond_t that was formerly used when reading from display, but later was (erroneously) made unused. This patch fixes this error and is a fix for the failing test introduced few patches ago (tests: test if thread can block on error) Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
This commit is contained in:
		
							parent
							
								
									0cb9862c93
								
							
						
					
					
						commit
						574b710ef8
					
				
					 1 changed files with 16 additions and 0 deletions
				
			
		| 
						 | 
					@ -127,6 +127,12 @@ display_fatal_error(struct wl_display *display, int error)
 | 
				
			||||||
		error = EFAULT;
 | 
							error = EFAULT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	display->last_error = error;
 | 
						display->last_error = error;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       pthread_cond_broadcast(&display->reader_cond);
 | 
				
			||||||
 | 
					       /* prevent from indefinite looping in read_events()
 | 
				
			||||||
 | 
						* (when calling pthread_cond_wait under condition
 | 
				
			||||||
 | 
						* display->read_serial == serial) */
 | 
				
			||||||
 | 
					       ++display->read_serial;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
| 
						 | 
					@ -175,6 +181,16 @@ display_protocol_error(struct wl_display *display, uint32_t code,
 | 
				
			||||||
	display->protocol_error.id = id;
 | 
						display->protocol_error.id = id;
 | 
				
			||||||
	display->protocol_error.interface = intf;
 | 
						display->protocol_error.interface = intf;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/*
 | 
				
			||||||
 | 
						 * here it is not necessary to broadcast reader's cond like in
 | 
				
			||||||
 | 
						 * display_fatal_error, because this function is called from
 | 
				
			||||||
 | 
						 * an event handler and that means that read_events() is done
 | 
				
			||||||
 | 
						 * and woke up all threads. Since wl_display_prepare_read()
 | 
				
			||||||
 | 
						 * fails when there are events in the queue, no threads
 | 
				
			||||||
 | 
						 * can sleep in read_events() during dispatching
 | 
				
			||||||
 | 
						 * (and therefore during calling this function), so this is safe.
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pthread_mutex_unlock(&display->mutex);
 | 
						pthread_mutex_unlock(&display->mutex);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue