summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2018-05-22 20:06:21 +0200
committersfan5 <sfan5@live.de>2018-05-25 10:17:06 +0200
commit3101cb3847355b32c2efbf644f5cb16a2b4feff8 (patch)
tree8d95d59a1297b030adf2a0142a310fe633f0c0e1
parentfea87c4253bd250d01d3624bf90aa6374ebda630 (diff)
downloadmpv-3101cb3847355b32c2efbf644f5cb16a2b4feff8.tar.bz2
mpv-3101cb3847355b32c2efbf644f5cb16a2b4feff8.tar.xz
terminal-unix: stop trying to read when terminal disappears
Avoids 100% CPU usage due to terminal code retrying read(). Seems like this was "forgotten" (or there was somehow the assumption poll() would not signal POLLIN anymore). Fixes #5842.
-rw-r--r--osdep/terminal-unix.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/osdep/terminal-unix.c b/osdep/terminal-unix.c
index 1e909522b7..954c13904f 100644
--- a/osdep/terminal-unix.c
+++ b/osdep/terminal-unix.c
@@ -395,8 +395,10 @@ static void *terminal_thread(void *ptr)
polldev(fds, stdin_ok ? 2 : 1, -1);
if (fds[0].revents)
break;
- if (fds[1].revents)
- getch2(input_ctx);
+ if (fds[1].revents) {
+ if (!getch2(input_ctx))
+ break;
+ }
}
char c;
bool quit = read(death_pipe[0], &c, 1) == 1 && c == 1;