From 02266dfb0c35a151cd9de7bf5217ba951153bcb6 Mon Sep 17 00:00:00 2001 From: Christian Burger Date: Fri, 29 Apr 2022 16:36:07 +0200 Subject: [PATCH] fixed bug: deadlock when resizing PTY window --- PtyWindow.cpp | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/PtyWindow.cpp b/PtyWindow.cpp index 4c73428..f9e3b7b 100644 --- a/PtyWindow.cpp +++ b/PtyWindow.cpp @@ -258,17 +258,20 @@ namespace krikkel::NCursesPtyWindow /// resizing? int PtyWindow::wresize(int rows, int cols) { - lock_guard nCursesLock(*writeToNCursesMutex); - lock_guard writeLock(writeToPseudoTerminalMutex); - winsize windowSize = { - .ws_row = narrow(rows) - , .ws_col = narrow(cols) - }; - ioctl(fdPtyHost, TIOCSWINSZ, &windowSize); - vterm_set_size(pseudoTerminal, rows, cols); - - return NCursesWindow::wresize(rows, cols); + lock_guard writeLock(writeToPseudoTerminalMutex); + winsize windowSize = + { + .ws_row = narrow(rows) + , .ws_col = narrow(cols) + }; + ioctl(fdPtyHost, TIOCSWINSZ, &windowSize); + vterm_set_size(pseudoTerminal, rows, cols); + } + { + lock_guard nCursesLock(*writeToNCursesMutex); + return NCursesWindow::wresize(rows, cols); + } } int PtyWindow::staticHandlerDamage(VTermRect rect, void *user)