LINUX.ORG.RU

Сообщения Zhivoi

 

Задача обойти XGetImage

Есть задачка, не знаю как решить:

Есть моя программа, которая открывает Display, в нем создает Window и gc. Затем, в цикле в окне происходит рисование примитивов всяких типа XDrawLine и подобных им. Затем, когда один кадр отрисовался - мне надо полученную картинку в виде битмапа сохранить в файл. Для этого я делаю XGetImage и его сохраняю. Дальше рендерится следующий кадр, и так по кругу. Все работает, но очень медленно. Рисование примитивов занимает сотню микросекунд (окно небольшое и рисования не много), а вот получение картинки с X-сервера функцией XGetImage занимает почти миллисекунду. Под виндой на этой же машине такое-же рисование с получением памяти занимает примерно в 10 раз меньше времени.

XSHMGetImage проблему особо не решает, т.к. продолжает копировать память через pipe.

И вот задача, как бы обойти этот XGetImage? Мне по факту не нужно окно, рисование в некие области памяти вполне подойдет, лишь бы был быстрый перевод того что находится в Window и gc в Image/битмап. Но при текущей реализации окно по факту есть, и отрисовка в него тоже.

Видится мне такое решение - так как XDrawLine по сути выполняется на X-сервере, и так или иначе память кадра будет в любом случае формироваться именно там, а дальше получить ее можно только через XGetImage/XSHMGetImage - то исключить впринципе Xorg из процесса, написав на все функции рисования примтивов - обертки, которые по факту меняют бмп, которая затем идет в файл. Но это много кода и довольно нетривиальная задача.

Может есть способ проще?

 ,

Zhivoi
()

Помогите запустить на свежем Debian файл с типом POSIX tar archive (GNU)

Доброго времени суток, сообщество!

Есть довольно старое ПО под линукс, которое ранее прекрасно работало на множестве дистрибутивов. Сейчас я его пытаюсь запустить на относительно свежем debian:

# lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux trixie/sid
Release:	n/a
Codename:	trixie

И получаю вот такой ответ:

# ./bin/ar
bash: ./bin/ar: не удаётся запустить бинарный файл: Ошибка формата выполняемого файла

Проверяю формат файла:

# file ./bin/ar
./bin/ar: POSIX tar archive (GNU)

Вобщем это таровский архив, но который запускается на всех моих системах кроме свежего дебиана (на старых Debian типа jessie и wheezy все прекрасно запускается). На убунте, на последних астра-линукс - тоже запускается. Разархивировать файл не предлагать, это немного сложный пакет, где таких файлов типа этого ./ar много, они все сделаны жесткими ссылками друг на друга, а затем затарированы. Тар сразу говорит что файлы с более чем одной жесткой ссылкой разархивировать он отказывается. Тут вопрос что именно в новом debian запрещает запускать такие файлы, хотя раньше все работало.

 , ,

Zhivoi
()

RSS подписка на новые темы