Я пытаюсь создать многопоточное приложение opengl с libx11 - с одним отдельным потоком на окно и одним потоком менеджера.
У меня есть цикл обработки событий в потоке диспетчера:
while(true)
while(XQLength(mPlatformData->display)){
XNextEvent(mPlatformData->display, &event);
std::cout << "event" << std::endl;
}
}
Это отличный цикл обработки событий для однопоточных приложений, но с этой многопоточной настройкой происходят странные вещи.
Когда я создаю окно, мне нужно отключить событие queue, или GLXMakeCurrent просто зависнет - весь мой поток останавливается и ничего не делает.
Я не могу найти много информации о многопоточных приложениях X11 в сети, должен ли я обрабатывать свои события по-другому?