Anonymous
Приложение C++, использующее выход Xlib с ненулевым возвращаемым значением
Сообщение
Anonymous » 16 дек 2024, 01:01
Когда мое окно 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
1734300109
Anonymous
Когда мое окно X11 получает событие DestroyNotify, я хотел бы закрыть свое приложение, однако мой процесс завершается с 1 вместо 0. Когда я запускаю его в режиме отладки, я получаю следующую ошибку: п> [code]X connection to :1 broken (explicit kill or server shutdown). [/code] Код воспроизведения: [code]#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; } [/code] Любая помощь в том, как правильно очистить Xlib, приветствуется. Подробнее здесь: [url]https://stackoverflow.com/questions/79283208/c-app-using-xlib-exits-with-non-zero-return-value[/url]