ncurses записывают в окно, которое не отображается

#c #panel #ncurses

#c #панель #ncurses

Вопрос:

У меня есть одна функция do_refresh, которая должна отображать некоторый символ в окне, подобном этому:

 void do_refresh(WINDOW *w_game, int *xPos, int *yPos, char vector[], snake *snake){
    mvwaddch(w_game, (*yPos), (*xPos), snake->headsym);// mv to new pos and place char
    wrefresh(w_game);
}
  

Окно w_game также имеет панель pendant, которая находится поверх всех других панелей.
Перед вызовом этой функции я разрешаю пользователю выполнять неблокирующий ввод с помощью getch() и таймаута (0):

 fflush(stdin);
key = getch();
if(key != ERR){ ...
  

только при первом вызове do_refresh символ выводится в окно, позже ничего не меняется, хотя xPos и yPos, а также все другие параметры mvwaddch действительны и меняются с течением времени.

Выполнение перерисовки окна приводит к сбою в сегменте, использование wgetch(w_game) вместо getch() не возвращает входных данных.

Я был бы очень признателен, если бы кто-нибудь мог хотя бы сослаться на приличную документацию, что следует учитывать при использовании wgetch вместо этого и что он делает по-другому.

ОБНОВЛЕНИЕ Я нашел решение проблемы, функция, которая настраивает содержимое панели, изменяет адрес окон!, вы должны вернуть (новое) назначение указателя на main и сбросить его там следующим образом:

 ...setup_panels(...){
  return w_game; // my window
}
int main(...){
  WINDOW *w_game;
  [...]
  w_game = setup_panels(...);
}
  

Комментарии:

1. Что касается документации ncurses, я нахожу, что ничто не сравнится с справочными страницами. invisible-island.net/ncurses/man/ncurses.3x.html

2. Я ничего не читал об изменении указателя в документе, но все равно спасибо.

3. Не могли бы вы, пожалуйста, переместить текст обновления в ответ (ниже) и пометить его как ответ?

4. нет такой кнопки, чтобы ответить на мой собственный вопрос