Проблема с потоками в ncurses C
Есть окно input где происходит ввод данных. Я отслеживаю изменение размера терминала в функции writeMsg и очищаю это окно. Однако окно очищается только после ввода следующего символа, что мне не нужно. Я так понял, что проблема в потоках, ибо если просто вызывать функцию writeMsg напрямую без потоков то все работает, однако мне нужен именно вариант с потоками.
#include <stdio.h>
#include "ncurses.h"
#include "pthread.h"
WINDOW *chat, *input;
void writeMsg(void *vargp) {
while (1) {
char buffer[100];
int key, j = 0;
while ((key = wgetch(input)) != 10) {
if (key == KEY_RESIZE) {
wclear(input);
wrefresh(input);
} else if (key == KEY_BACKSPACE || key == KEY_DC || key == 127) {
wdelch(input);
j--;
buffer[j] = 0;
} else {
buffer[j] = key;
j++;
}
}
printf("%s", buffer);
}
}
int main() {
initscr();
chat = newwin(LINES - 2, COLS, 0, 0);
wrefresh(chat);
input = newwin(3, COLS, LINES - 3, 0);
wrefresh(input);
pthread_t thread_id;
pthread_create(&thread_id, NULL, writeMsg, NULL);
pthread_join(thread_id, NULL);
endwin();
return 0;
}
Если это нельзя пофиксить, то подскажите, пожалуйста, альтернативы ncurses для linux, которые хорошо работают с потоками.
Источник: Stack Overflow на русском