Название: QPainter в негуёвом потоке Отправлено: QCasper от Февраль 07, 2007, 14:42 Мне нужно рисовать QPainter'ом поток картинок, из которых в дальнейшем строится анимация. Чтобы никакие внешние воздействия, то как юзер потягал окно, не тормозили это дело, я решил делать это в отдельном потоке. QPainter орет, что мол варнинг, не стоит рисовать в негуёвом потоке. Как же быть?
Название: QPainter в негуёвом потоке Отправлено: Tonal от Февраль 07, 2007, 15:33 Может можно QMovie подпрячь?
Название: QPainter в негуёвом потоке Отправлено: QCasper от Февраль 07, 2007, 15:35 Цитата: "Tonal" Может можно QMovie подпрячь? А в чем оно может помочь. Дело в том, что анимация не обязательно выводится на окно. Она может выводиться напрямую на видеокарту или в файл Название: QPainter в негуёвом потоке Отправлено: QCasper от Март 12, 2007, 09:40 Тема все еще актуальна. Хочу вопрос немного по другому поставить.
Кто может грамотно объяснить мне, почему опасно использовать QPainter в негуевом потоке? Название: QPainter в негуёвом потоке Отправлено: ElderOrb от Март 12, 2007, 12:53 Насколько я понимаю дело в поддержке двойной буфферизации и наличии backing-store (глобальных кэширующих пиксмэпов по штуке на каждое top-level окно, необходимых для быстрой отрисовки сложных виджэтов при их перетягивании).
Двойная буфферизация представляет собой отрисовку в память (в QImage или QPixmap в случае с Qt) с последующим копированием этого куска памяти в контекст видеоустройства и условно может быть поделена на 3 фазы. 1. начало отрисовки (подготовка внеэкранного буфера) 2. отрисовка во внеэкранный буфер 3. конец отрисовки Вышенаписанное может быть потокобезопасным но только если защищено элементами синхронизации, а это дегрэйд перфоманса. А перфоманс - это наше всё. Возможно если сильно поизвращаться можно обойтись и без элементов синхронизации и потери производительности, что и собираются сделать тролли в 5-ом Qt. Поживём - увидим как. ж) |