1
0
mirror of https://github.com/mpv-player/mpv synced 2025-02-16 20:27:23 +00:00

getch2: assume EOF when input file descriptor is invalid

When starting mpv with nohup, file descriptor 0 seems to be invalid for
some reason. (I'm not quite sure why it should be... /proc/pid/fd/0
seems to indicate it's just /dev/null, and using /dev/null explicitly
shows that it works just fine.)

select() will always immediately return, and this causes mpv to burn CPU
without reason. Fix this by treating it as EOF when read() returns
EBADF.

Also add EINVAL to this condition, because it seems like a good idea.

Conflicts:
	osdep/getch2.c
This commit is contained in:
wm4 2013-10-28 23:32:57 +01:00
parent 1dbbd845a4
commit 0ba3760745

View File

@ -34,6 +34,7 @@
#ifdef CONFIG_IOCTL
#include <sys/ioctl.h>
#endif
#include <errno.h>
#ifdef HAVE_TERMIOS
#ifdef HAVE_TERMIOS_H
@ -369,8 +370,10 @@ bool getch2(struct input_ctx *input_ctx)
* happen if the terminal state change done in getch2_enable()
* works.
*/
if (retval < 1)
return retval;
if (retval == 0)
return false;
if (retval == -1)
return errno != EBADF && errno != EINVAL;
getch2_len += retval;
static enum {