diff options
author | wm4 <wm4@mplayer2.org> | 2012-04-13 17:44:29 +0200 |
---|---|---|
committer | wm4 <wm4@mplayer2.org> | 2012-04-13 17:45:27 +0200 |
commit | 47371bdb944652bb17b8b779fae102ce63dd36b7 (patch) | |
tree | 495a2b71217a4fefe1c0672fce3d7cf9fabeb2e7 /osdep/getch2.c | |
parent | 4dc0e54d4fffa2b81fbf6fb9b875303638eb1c9a (diff) | |
parent | 485f439cfefd4fa8d35f406fd8694e649bd536c8 (diff) | |
download | mpv-47371bdb944652bb17b8b779fae102ce63dd36b7.tar.bz2 mpv-47371bdb944652bb17b8b779fae102ce63dd36b7.tar.xz |
Merge remote-tracking branch 'origin/master'
Conflicts:
libvo/vo_kva.c
Diffstat (limited to 'osdep/getch2.c')
-rw-r--r-- | osdep/getch2.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/osdep/getch2.c b/osdep/getch2.c index 78e60b2373..f0aa19a2cc 100644 --- a/osdep/getch2.c +++ b/osdep/getch2.c @@ -24,7 +24,7 @@ #include "config.h" //#define HAVE_TERMCAP -#if !defined(__OS2__) && !defined(__MORPHOS__) +#if !defined(__MORPHOS__) #define CONFIG_IOCTL #endif @@ -159,11 +159,17 @@ void get_screen_size(void){ #endif } -void getch2(struct mp_fifo *fifo) +bool getch2(struct mp_fifo *fifo) { int retval = read(0, &getch2_buf[getch2_len], BUF_LEN-getch2_len); + /* Return false on EOF to stop running select() on the FD, as it'd + * trigger all the time. Note that it's possible to get temporary + * EOF on terminal if the user presses ctrl-d, but that shouldn't + * happen if the terminal state change done in getch2_enable() + * works. + */ if (retval < 1) - return; + return retval; getch2_len += retval; while (getch2_len > 0 && (getch2_len > 1 || getch2_buf[0] != 27)) { @@ -280,6 +286,7 @@ void getch2(struct mp_fifo *fifo) getch2_buf[i] = getch2_buf[len+i]; mplayer_put_key(fifo, code); } + return true; } static volatile int getch2_status=0; |