LINUX.ORG.RU

Xlib+pthread+pixmap - not work


0

0

1) Есть xlib
2) Есть программа в которой создан пиксмап, он объявлен глобально.
3) Из этой же программы пускакется несколько тредов
4) Программа рисует в пиксмап некоторую информацию - далее по очереди разблокирует треды, давая им возможность отрисовать в пиксмап также некоторую информацию. Каждый тред после отрисовки выывает XFlush после чего блокируется на мьютексе, и ждёт пока его разблокирует основная программа (скажем так - main pthread).
5) Далее цикл повторяется.

Трабл в том что на пиксмапе не отображается информацию которую в него рисуют треды. Ни ошибок, ничего - просто не отображается и всё. Только то что нарисовала главная программа. Если рисовать к примеру не в пиксмап, а просто в окно - всё работает как надо.

Получается в пиксмап нельзя рисовать из треда в котором от не создан?
Кто с таким сталкивался - объясните, буду очень благодарен!

Или ссылками может киньтесь - всё уже перерыл - ничего не нашёл.

P.s
В начале каждого треда стоит функция (сейчас не вспомню по памяти, что-то вроде Xpthreadlock) которая согласно описанию xlib гарантирует что всё будет хорошо и треды не ломанутся одновременно в одну область памяти... В конце треда стоит XpthreadUnlock(ну или примерно так...)

anonymous

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

А GC надо открывать разный в каждом потоке???? У меня один GC - опять же объявленный глобально, который виден всем тредам.

Ну, и я думаю если бы с GC были проблемы - вывод в Window, а не в Pixmap тоже бы не работал...

А он работает.

anonymous
()
Ответ на: комментарий от anonymous

Может быть дело в XGCValues *values при открытии GC XOpenGC

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