From 8c668cc0ccab6a6d8a08adb648eedf63040d686c Mon Sep 17 00:00:00 2001 From: Storm Dragon Date: Wed, 16 Jul 2025 19:48:48 -0400 Subject: [PATCH] Final batch of pty driver fixes... For now. --- src/fenrirscreenreader/screenDriver/ptyDriver.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/fenrirscreenreader/screenDriver/ptyDriver.py b/src/fenrirscreenreader/screenDriver/ptyDriver.py index 27ce7852..1ca7f5a6 100644 --- a/src/fenrirscreenreader/screenDriver/ptyDriver.py +++ b/src/fenrirscreenreader/screenDriver/ptyDriver.py @@ -30,6 +30,7 @@ class PTYConstants: # Timeouts (in seconds) DEFAULT_READ_TIMEOUT = 0.3 INPUT_READ_TIMEOUT = 0.01 + OUTPUT_READ_TIMEOUT = 0.05 # Faster than default but allows for network lag SELECT_TIMEOUT = 0.05 PROCESS_TERMINATION_TIMEOUT = 3.0 PROCESS_KILL_DELAY = 0.5 @@ -211,6 +212,9 @@ class driver(screenDriver): 'input_timeout': float(settings_manager.get_setting( 'screen', 'ptyInputTimeout', PTYConstants.INPUT_READ_TIMEOUT )), + 'output_timeout': float(settings_manager.get_setting( + 'screen', 'ptyOutputTimeout', PTYConstants.OUTPUT_READ_TIMEOUT + )), 'select_timeout': float(settings_manager.get_setting( 'screen', 'ptySelectTimeout', PTYConstants.SELECT_TIMEOUT )), @@ -235,6 +239,7 @@ class driver(screenDriver): ) self.pty_config = { 'input_timeout': PTYConstants.INPUT_READ_TIMEOUT, + 'output_timeout': PTYConstants.OUTPUT_READ_TIMEOUT, 'select_timeout': PTYConstants.SELECT_TIMEOUT, 'process_termination_timeout': PTYConstants.PROCESS_TERMINATION_TIMEOUT, 'poll_interval': PTYConstants.MIN_POLL_INTERVAL @@ -427,7 +432,9 @@ class driver(screenDriver): if self.p_out in r: try: msg_bytes = self.read_all( - self.p_out.fileno(), interruptFd=sys.stdin.fileno() + self.p_out.fileno(), + timeout=self.pty_config.get('output_timeout', PTYConstants.OUTPUT_READ_TIMEOUT), + interruptFd=sys.stdin.fileno() ) except (EOFError, OSError): event_queue.put(