mirror of
				https://gitlab.freedesktop.org/wayland/wayland.git
				synced 2025-11-03 09:01:42 -05:00 
			
		
		
		
	client: Add an entry point for dispatching a queue without blocking
On the client side EGL, all the wl_buffer.release events need to be processed before buffer allocation, otherwise a third buffer might be allocated unnecessarily. However, the buffer allocation should not block in the case no event was received. In order to do that, a non-blocking queue dispatch function is needed.
This commit is contained in:
		
							parent
							
								
									0f5d41e3bb
								
							
						
					
					
						commit
						fb20507881
					
				
					 2 changed files with 21 additions and 0 deletions
				
			
		| 
						 | 
					@ -926,6 +926,25 @@ wl_display_dispatch_queue(struct wl_display *display,
 | 
				
			||||||
	return dispatch_queue(display, queue, 1);
 | 
						return dispatch_queue(display, queue, 1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Dispatch pending events in an event queue
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * \param display The display context object
 | 
				
			||||||
 | 
					 * \param queue The event queue to dispatch
 | 
				
			||||||
 | 
					 * \return The number of dispatched events on success or -1 on failure
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Dispatch all incoming events for objects assigned to the given
 | 
				
			||||||
 | 
					 * event queue. On failure -1 is returned and errno set appropriately.
 | 
				
			||||||
 | 
					 * If there are no events queued, this functions return immediately.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * \memberof wl_display
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					WL_EXPORT int
 | 
				
			||||||
 | 
					wl_display_dispatch_queue_pending(struct wl_display *display,
 | 
				
			||||||
 | 
									  struct wl_event_queue *queue)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return dispatch_queue(display, queue, 0);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** Process incoming events
 | 
					/** Process incoming events
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * \param display The display context object
 | 
					 * \param display The display context object
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -145,6 +145,8 @@ int wl_display_get_fd(struct wl_display *display);
 | 
				
			||||||
int wl_display_dispatch(struct wl_display *display);
 | 
					int wl_display_dispatch(struct wl_display *display);
 | 
				
			||||||
int wl_display_dispatch_queue(struct wl_display *display,
 | 
					int wl_display_dispatch_queue(struct wl_display *display,
 | 
				
			||||||
			      struct wl_event_queue *queue);
 | 
								      struct wl_event_queue *queue);
 | 
				
			||||||
 | 
					int wl_display_dispatch_queue_pending(struct wl_display *display,
 | 
				
			||||||
 | 
									      struct wl_event_queue *queue);
 | 
				
			||||||
int wl_display_dispatch_pending(struct wl_display *display);
 | 
					int wl_display_dispatch_pending(struct wl_display *display);
 | 
				
			||||||
int wl_display_get_error(struct wl_display *display);
 | 
					int wl_display_get_error(struct wl_display *display);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue