mirror of
https://github.com/mpv-player/mpv
synced 2025-01-11 17:39:38 +00:00
terminal: process input when foregrounded
When mpv is in the background because it was started with `mpv foo.mp3 &`, or the user did ctrl+z bg, and is then brought to the foreground with fg, it buffers input until you press enter. This makes it accept input almost immediately. Having a short interval isn't important, since input is buffered until the next loop iteration. Closes #8120.
This commit is contained in:
parent
fa7afc3e19
commit
9867f21830
@ -45,6 +45,14 @@
|
|||||||
// Timeout in ms after which the (normally ambiguous) ESC key is detected.
|
// Timeout in ms after which the (normally ambiguous) ESC key is detected.
|
||||||
#define ESC_TIMEOUT 100
|
#define ESC_TIMEOUT 100
|
||||||
|
|
||||||
|
// Timeout in ms after which the poll for input is aborted. The FG/BG state is
|
||||||
|
// tested before every wait, and a positive value allows reactivating input
|
||||||
|
// processing when mpv is brought to the foreground while it was running in the
|
||||||
|
// background. In such a situation, an infinite timeout (-1) will keep mpv
|
||||||
|
// waiting for input without realizing the terminal state changed - and thus
|
||||||
|
// buffer all keypresses until ENTER is pressed.
|
||||||
|
#define INPUT_TIMEOUT 1000
|
||||||
|
|
||||||
static volatile struct termios tio_orig;
|
static volatile struct termios tio_orig;
|
||||||
static volatile int tio_orig_set;
|
static volatile int tio_orig_set;
|
||||||
|
|
||||||
@ -397,7 +405,7 @@ static void *terminal_thread(void *ptr)
|
|||||||
{ .events = POLLIN, .fd = death_pipe[0] },
|
{ .events = POLLIN, .fd = death_pipe[0] },
|
||||||
{ .events = POLLIN, .fd = tty_in }
|
{ .events = POLLIN, .fd = tty_in }
|
||||||
};
|
};
|
||||||
int r = polldev(fds, stdin_ok ? 2 : 1, buf.len ? ESC_TIMEOUT : -1);
|
int r = polldev(fds, stdin_ok ? 2 : 1, buf.len ? ESC_TIMEOUT : INPUT_TIMEOUT);
|
||||||
if (fds[0].revents)
|
if (fds[0].revents)
|
||||||
break;
|
break;
|
||||||
if (fds[1].revents) {
|
if (fds[1].revents) {
|
||||||
|
Loading…
Reference in New Issue
Block a user