diff --git a/common/msg.c b/common/msg.c index f435d6e206..20f1ce0abb 100644 --- a/common/msg.c +++ b/common/msg.c @@ -257,7 +257,9 @@ void mp_msg_flush_status_line(struct mp_log *log, bool clear) goto done; if (!clear) { - fprintf(stderr, TERM_ESC_RESTORE_CURSOR "\n"); + if (log->root->isatty[STDERR_FILENO]) + fprintf(stderr, TERM_ESC_RESTORE_CURSOR); + fprintf(stderr, "\n"); log->root->blank_lines = 0; log->root->status_lines = 0; goto done; diff --git a/osdep/terminal-unix.c b/osdep/terminal-unix.c index 72d0d14899..be0463b871 100644 --- a/osdep/terminal-unix.c +++ b/osdep/terminal-unix.c @@ -424,8 +424,10 @@ static MP_THREAD_VOID terminal_thread(void *ptr) (void)read(stop_cont_pipe[0], &c, 1); if (c == PIPE_STOP) { do_deactivate_getch2(); - (void)write(STDERR_FILENO, TERM_ESC_RESTORE_CURSOR, - sizeof(TERM_ESC_RESTORE_CURSOR) - 1); + if (isatty(STDERR_FILENO)) { + (void)write(STDERR_FILENO, TERM_ESC_RESTORE_CURSOR, + sizeof(TERM_ESC_RESTORE_CURSOR) - 1); + } // trying to reset SIGTSTP handler to default and raise it will // result in a race and there's no other way to invoke the // default handler. so just invoke SIGSTOP since it's