Приложение C++, использующее выход Xlib с ненулевым возвращаемым значениемC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Приложение C++, использующее выход Xlib с ненулевым возвращаемым значением

Сообщение Anonymous »

Когда мое окно X11 получает событие DestroyNotify, я хотел бы закрыть свое приложение, однако мой процесс завершается с 1 вместо 0. Когда я запускаю его в режиме отладки, я получаю следующую ошибку: п>

Код: Выделить всё

X connection to :1 broken (explicit kill or server shutdown).
Код воспроизведения:

Код: Выделить всё

#include 
#include 

int main()
{
Display* display = XOpenDisplay(nullptr);
Window window;

XVisualInfo visual_info;
long visual_mask = VisualScreenMask;
int number_of_visuals;
XVisualInfo v_info_template = {};
v_info_template.screen = DefaultScreen(display);
XVisualInfo *vi_list = XGetVisualInfo(display, visual_mask, &v_info_template, &number_of_visuals);
visual_info = vi_list[0];
XFree(vi_list);
Colormap colormap = XCreateColormap(display, RootWindow(display, visual_info.screen), visual_info.visual, AllocNone);
XSetWindowAttributes window_attributes = {};
window_attributes.colormap = colormap;
window_attributes.background_pixel = 0xFFFFFFFF;
window_attributes.border_pixel = 0;
window_attributes.event_mask = KeyPressMask | KeyReleaseMask | StructureNotifyMask | ExposureMask;
unsigned long value_mask = CWBorderPixel | CWColormap | CWEventMask;

window = XCreateWindow(display, RootWindow(display, visual_info.screen), 100, 100, 500, 500, 0, visual_info.depth, InputOutput, visual_info.visual, value_mask, &window_attributes);

XMapWindow(display, window);
XSync(display, False);

XEvent* event = nullptr;
while(!event || event->type != DestroyNotify) {
XCheckWindowEvent(display, window, VisibilityChangeMask, event);
}

XUnmapWindow(display, window);
XDestroyWindow(display, window);
XCloseDisplay(display);

return 0;
}

Любая помощь в том, как правильно очистить Xlib, приветствуется.


Подробнее здесь: https://stackoverflow.com/questions/792 ... turn-value
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»