Я пытаюсь закрыть последнее используемое окно (одно прямо под текущим окном в порядке укладки). К сожалению, XQueryTree segfaults по какой-то причине.Ошибка сегментации в XQueryTree
#pragma once
#include <X11/Xlib.h>
#include <X11/Xutil.h>
namespace WindowingOperations {
inline void closeLastWindow() {
Display* dpy = XOpenDisplay(0);
Window root = DefaultRootWindow(dpy);
Window* root_return;
Window* parent_return;
Window** children_return;
unsigned int* nchildren_return;
XQueryTree(dpy,
root,
root_return,
parent_return,
children_return,
nchildren_return);
// Kill the window right after this one
if (*nchildren_return > 1)
XDestroyWindow(dpy, *children_return[*nchildren_return - 2]);
}
}
EDIT:
Если вам нужен тестовый пример:
#include "window_operations.h"
int main() {
WindowingOperations::closeLastWindow();
return 0;
}
Я серьезно сомневаюсь, что вы обнажая здесь обеспечивает [MCVE ], даже украшенный всеми этими тегами. –
Я имею в виду, это довольно лаконично. Также тривиально проверять, работает ли оно или нет - просто вызовите 'closeLastWindow()' – AnimatedRNG
Нет! Настала ваша очередь предоставить тестовый пример. Нет, просто позволяю мне каким-то образом воспроизвести его. Вы уже запустили этот код в отладчике? –