Многопоточное приложение X11 и OpenGL

Я пытаюсь создать многопоточное приложение opengl с libx11 - с одним отдельным потоком на окно и одним потоком менеджера.

У меня есть цикл обработки событий в потоке диспетчера:

while(true)
  while(XQLength(mPlatformData->display)){
    XNextEvent(mPlatformData->display, &event);
    std::cout << "event" << std::endl;
  }
}

Это отличный цикл обработки событий для однопоточных приложений, но с этой многопоточной настройкой происходят странные вещи.

Когда я создаю окно, мне нужно отключить событие queue, или GLXMakeCurrent просто зависнет - весь мой поток останавливается и ничего не делает.

Я не могу найти много информации о многопоточных приложениях X11 в сети, должен ли я обрабатывать свои события по-другому?

8
задан Dutow 19 June 2011 в 12:56
поделиться