summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Preisinger <alexander.preisinger@gmail.com>2013-09-19 17:32:22 +0200
committerwm4 <wm4@nowhere>2013-09-20 21:21:40 +0200
commit36fe16cc7ec31ba5033aed60cc70031b7ce4e348 (patch)
treecf01dc2c4551f88f6292126ea588fe76351e0e50
parentc52ca9049298fdca05d636b91112fda2c94cf3e4 (diff)
downloadmpv-36fe16cc7ec31ba5033aed60cc70031b7ce4e348.tar.bz2
mpv-36fe16cc7ec31ba5033aed60cc70031b7ce4e348.tar.xz
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.
-rw-r--r--video/out/wayland_common.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/video/out/wayland_common.c b/video/out/wayland_common.c
index ad83b67d74..f7062df5a8 100644
--- a/video/out/wayland_common.c
+++ b/video/out/wayland_common.c
@@ -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
* are events to read from the file descriptor through poll */
if (poll(&fd, 1, 0) > 0) {
- if (fd.revents & POLLERR || fd.revents & POLLHUP)
- MP_ERR(wl, "error occurred on the display fd\n");
+ if (fd.revents & POLLERR || fd.revents & POLLHUP) {
+ 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)
wl_display_dispatch(dp);
if (fd.revents & POLLOUT)