Программирование X11, некоторые вопросы - PullRequest
0 голосов
/ 21 ноября 2018

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

Поскольку у меня не так много опыта в программировании X11, я использовал этот примеркод:

https://rosettacode.org/wiki/Window_creation/X11#Xlib

Он прекрасно компилируется и работает, но когда закрываемое окно закрывается, в терминале появляется ошибка

XIO:  fatal IO error 11 (Resource temporarily unavailable) on X server ":0.0"
      after 11 requests (9 known processed) with 0 events remaining.

.Поэтому мне интересно, что может быть причиной этого и как это можно исправить?

1 Ответ

0 голосов
/ 21 ноября 2018

Используйте Источник, Люк.

while (1) {
   XNextEvent(d, &e);
   if (e.type == Expose) {
      XFillRectangle(d, w, DefaultGC(d, s), 20, 20, 10, 10);
      XDrawString(d, w, DefaultGC(d, s), 10, 50, msg, strlen(msg));
   }
   if (e.type == KeyPress)
      break;
}

XCloseDisplay(d);

Если вы выходите из цикла нажатием клавиши, вы вызываете XCloseDisplay ().Если вы убьете окно «извне» (скажем, с помощью мыши), эта функция никогда не будет вызвана.Процесс внезапно завершается, и X предупреждает вас об этом.

По крайней мере, в моей системе kill (1) также не выдает предупреждение.Я подозреваю, что есть какое-то взаимодействие с вашим оконным менеджером, с чем вы будете иметь дело позже в своем xlib-образовании.:-)

...