I am trying to process a resize signal (SIGWINCH)
void Server::resizeSignalHandler(int a)
{
signal(SIGWINCH, SIG_IGN);
endwin();
initscr();
refresh();
clear();
int x,y;
getmaxyx(stdscr, y, x);
wmove(upScreen, 0, 0);
wmove(downScreen, y/2, 0);
wresize(upScreen, y/2, x);
wresize(downScreen, y/2, x);
wclear(upScreen);
wclear(downScreen);
waddstr(upScreen, "test1");
waddstr(downScreen, "test2");
wrefresh(upScreen);
wrefresh(downScreen);
refresh();
signal(SIGWINCH, Server::resizeSignalHandler);
}
Server::Server()
{
initscr();
if (!upScreen) {
upScreen = newwin(0, 0, 1, 1);
}
if (!downScreen) {
downScreen = newwin(0, 0, 1, 1);
}
signal(SIGWINCH, Server::resizeSignalHandler);
Server::resizeSignalHandler(0);
waddstr(Server::upScreen, "lalfasdfsafd as");
waddstr(downScreen, "supreme!");
wrefresh(Server::upScreen);
wrefresh(downScreen);
}
When I debugged this code, in resizeSignalHandler var x, y were always the same (the size did not change). I also tried sizing using ioctl, but nothing changed.
I realized that many people in front of me had this problem
http://www.mail-archive.com/ arch@archlinux.org /msg11253.html
Sometimes they solved it (changing / etc / profile; O (sic!)), But sometimes this is not so. Is there an alternative to mac os x terminal, maybe ncurses is dedicated for xterm and the like.
source
share