Есть примерно такой код:
XInitThreads();
...//Подключение к X-серверу и инициализация окна
void * fun1(void *v){
while (started){
...//Рисуем
glXSwapBuffers(...);
}
}
void * fun2(void *v){
while (started){
XNextEvent(_display, &event);
switch (event.type) {
case KeyRelease:
std::cout << event.xkey.keycode << '\n';
break;
}
}
}
...//Запуск fun{1,2} в отдельном потоке по средствам pthread.
1) Если запускать только графическую петлю, то графика отлично работает.
2) Если запускать два потока одновременно, то окно даже не появляется.(Хотя процесс висит).
3) Если запустить поток с обработкой событий с секундным ожиданием, то все работает до его запуска. За тем перерисовка окна происходит только тогда, когда получено любое событие.
Как правильно разрулить данную проблему?
Спасибо.