wayland/common: exit properly on fd errors

Before this commit there was just an error message, but the file descriptor was
still open. Now we close the file descriptor and prevent it from calling
endlessly. Also a CLOSE_WIN event is sent which closes the window eventually if
the action of CLOSE_WIN is set to quit or quit_watch_later.
This commit is contained in:
Alexander Preisinger 2013-09-19 17:32:22 +02:00 committed by wm4
parent c52ca90492
commit 36fe16cc7e
1 changed files with 6 additions and 2 deletions

View File

@ -768,8 +768,12 @@ static int vo_wayland_check_events (struct vo *vo)
* when pausing no input events get queued so we have to check if there * when pausing no input events get queued so we have to check if there
* are events to read from the file descriptor through poll */ * are events to read from the file descriptor through poll */
if (poll(&fd, 1, 0) > 0) { if (poll(&fd, 1, 0) > 0) {
if (fd.revents & POLLERR || fd.revents & POLLHUP) if (fd.revents & POLLERR || fd.revents & POLLHUP) {
MP_ERR(wl, "error occurred on the display fd\n"); MP_FATAL(wl, "error occurred on the display fd: "
"closing file descriptor\n");
close(wl->display.display_fd);
mp_input_put_key(vo->input_ctx, MP_KEY_CLOSE_WIN);
}
if (fd.revents & POLLIN) if (fd.revents & POLLIN)
wl_display_dispatch(dp); wl_display_dispatch(dp);
if (fd.revents & POLLOUT) if (fd.revents & POLLOUT)