}
}
-int reset_terminal_fd(int fd) {
+int reset_terminal_fd(int fd, bool switch_to_text) {
struct termios termios;
int r = 0;
ioctl(fd, TIOCNXCL);
/* Switch to text mode */
- ioctl(fd, KDSETMODE, KD_TEXT);
+ if (switch_to_text)
+ ioctl(fd, KDSETMODE, KD_TEXT);
/* Enable console unicode mode */
ioctl(fd, KDSKBMODE, K_UNICODE);
if (fd < 0)
return fd;
- r = reset_terminal_fd(fd);
+ r = reset_terminal_fd(fd, true);
close_nointr_nofail(fd);
return r;
if (notify >= 0)
close_nointr_nofail(notify);
- if ((r = reset_terminal_fd(fd)) < 0)
+ r = reset_terminal_fd(fd, true);
+ if (r < 0)
log_warning("Failed to reset terminal: %s", strerror(-r));
return fd;