LINUX.ORG.RU

Многопоточность и Xlib

 , ,


0

1

Есть примерно такой код:

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) Если запустить поток с обработкой событий с секундным ожиданием, то все работает до его запуска. За тем перерисовка окна происходит только тогда, когда получено любое событие.
Как правильно разрулить данную проблему?
Спасибо.

★★★★★

Последнее исправление: deterok (всего исправлений: 1)

Ответ на: комментарий от deterok

Простите за оффтопик, а можно поинтересоваться: остались еще задачи, под которые нужно писать именно с использованием Xlib? Чем не подходят остальные более высокоуровневые фреймворки?

GreenBag ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.