У меня проблема с X11. Я создал обычное окно, и когда я нажимаю на кнопку, я хочу открыть подокно и нарисовать на нем что-нибудь, используя cairo.
Вот как я создаю окно:
printf("createCairoSurface called\n");
printf("Window created: %i\n", (int)appWindow);
cairo_surface_t* new_surface = cairo_xlib_surface_create(display, appWindow, DefaultVisual(display, 0), width, height);
Перед этими несколькими строками кода я создаю обычное окно с помощью XCreateWindow и изменяю несколько свойств, чтобы мое окно располагалось как панель.
Но когда я пытаюсь закрыть / уничтожить окно с помощью следующего кода, приложение вылетает, и я получаю ошибку BadWindow.
Window window = (Window)static_cast(cairo_xlib_surface_get_drawable(surface));
printf("Tried to destroy window: %i\n", (int)window);
XDestroyWindow(display, window);
X Error of failed request: BadWindow (invalid Window parameter)
Major opcode of failed request: 20 (X_GetProperty)
Resource id in failed request: 0x240000f
Serial number of failed request: 344
Current serial number in output stream: 344
Несмотря на это, вызовы printf, которые я добавил, говорят мне, что идентификатор окна должен быть действительным:
Window created: 37748751
Tried to destroy window: 37748751
Спасибо'S!