wayland: Don't error out on G_IO_HUP until we've read G_IO_IN data
We can get G_IO_HUP and G_IO_IN at the same time, if the compositor writes data to us and then closes our connection. Make sure that we dispatch events always if we have G_IO_IN and then error out if we get G_IO_HUP after that.
This commit is contained in:
		@ -57,9 +57,6 @@ gdk_event_source_check(GSource *base)
 | 
			
		||||
{
 | 
			
		||||
  GdkWaylandEventSource *source = (GdkWaylandEventSource *) base;
 | 
			
		||||
 | 
			
		||||
  if (source->pfd.revents & (G_IO_ERR | G_IO_HUP))
 | 
			
		||||
    g_error ("Lost connection to wayland compositor");
 | 
			
		||||
 | 
			
		||||
  if (source->display->event_pause_count > 0)
 | 
			
		||||
    return FALSE;
 | 
			
		||||
 | 
			
		||||
@ -153,9 +150,12 @@ _gdk_wayland_display_queue_events (GdkDisplay *display)
 | 
			
		||||
 | 
			
		||||
  display_wayland = GDK_WAYLAND_DISPLAY (display);
 | 
			
		||||
  source = (GdkWaylandEventSource *) display_wayland->event_source;
 | 
			
		||||
  if (source->pfd.revents)
 | 
			
		||||
  if (source->pfd.revents & G_IO_IN)
 | 
			
		||||
    {
 | 
			
		||||
	wl_display_dispatch(display_wayland->wl_display);
 | 
			
		||||
	source->pfd.revents = 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  if (source->pfd.revents & (G_IO_ERR | G_IO_HUP))
 | 
			
		||||
    g_error ("Lost connection to wayland compositor");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user