LINUX.ORG.RU

Как быстро работать с X11

 ,


1

2

Условно есть библиотека, которая для рисования использует функции PutPixel(x, y, rgb) и FillLine(y, x1, x2, rgb). Это менять нельзя.

Нужно совместить это с выводом в голое окно X11. Если вызывать XDrawPoint() на каждый пиксель, то все медленно и печально, оно и понятно, что так делать не стоит.

Хочется иметь локальную копию буфера, делать модификации в этой копии, а потом либо целиком, либо наименьшим прямоугольником загружать имения на сервер для отображения.

Как такое правильно делать в X11/XCB?

★★★★

Для меня не очень понятная задача. Описание мутноватое. Если речь идет о рисовании графики на стороне клиента, а потом закидывания ее на сервер, то есть PutImage (XPutImage, xcb_put_image), а также варианты с shared memory в случае локального сервера (XShmPutImage, xcb_shm_put_image).

Zubok ★★★★★
()
Ответ на: комментарий от alexru

Обязательно нужна проверка на присутствие MIT-SHM. Если X-сервер удаленный, то MIT-SHM не будет и тогда надо использовать обычную PutImage/xcb_put_image. Так делают все тулкиты, которые используют этот механизм.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Zubok

Если X-сервер удаленный

Меня такая ситуация вообще не волнует. Есть хоть кто-нибудь, кто на практике это использует?

alexru ★★★★
() автор топика
Ответ на: комментарий от alexru

Меня такая ситуация вообще не волнует. Есть хоть кто-нибудь, кто на практике это использует?

На практике это широко используется. Если тебе кажется, что это не так, то это только кажется. Если ты пишешь сугубо для себя и своего потребления, то можешь делать, как хочешь, но для всех остальных делать проверку наличия MIT-SHM и затем выбирать способ передачи картинки *необходимо*.

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

Все заработало. Поддержка разнесенных клиента и сервера будет с самым низким приоритетом. Как только кто-нибудь спросит, так и добавлю.

alexru ★★★★
() автор топика
Ответ на: комментарий от alexru

А в чем проблема сделать проверку? Query Extension, узнаешь наличие расширения. Если его нет, то закидывать ту же картинку при помощи PutImage без всяких предварительных приготовлений. Если же расширение есть, то сделать все нужные пассы через запросы в MIT-SHM и закинуть c PutShmImage. В чем проблема?

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Zubok

Проще взять cairo, как я предложил в третьем посте. Оно должно само делать проверки.

Плюс все эти PutPixel и FillLine можно переложить на вызовы cairo.

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

А в чем проблема сделать проверку?

Пустая трата времени на то, что никто никогда не будет использовать. Если кто-то сможет предъявить реальный use case, то посмотрим.

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

Проще взять cairo

Лишние зависимости там, где они не нужны.

alexru ★★★★
() автор топика
Ответ на: комментарий от alexru

Вот тебе use case

Я не знаю, что за программу ты пишешь, но иксы позволяют, например, в домашней сети подцепиться с ноутбука к десктопу, за которым работает другой человек, и работать за десктопом, в его файловой системе и др. Очень удобно.

Хотя если ты (например) пишешь программу под заказ, строго для конкретного рабочего места, оторванного от сети - тогда да, тебе это действительно не нужно. Во всех остальных случаях лучше не связывать пользователю руки и дать ему возможность выбора.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от anonymous

Я почти каждый день по ссш захожу на рабочий комп удаленно. Xilinx ise там запускаю и пишу vhdl

на самом деле нет

Тебя нет.

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

Есть хоть кто-нибудь, кто на практике это использует?

Да. И нас всех крайне раздражают программы, которые прибили гвоздями к MIT-SHM просто потому, что автору было на нас пофиг.

tailgunner ★★★★★
()
Ответ на: комментарий от alexru

Пустая трата времени на то, что никто никогда не будет использовать.

т.г.м. программист блин. задал дет. садовский вопрос, ему говорят, как правильно, но он же программист, он же сам знает как надо. индус блин.

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

Без ответа на этот вопрос версия под Linux вообще существовать не будет, так так под Win все уже работает быстро и из коробки. Так что приоритеты есть такие какие есть.

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

Хотя бы тем, что работает из коробки, опираясь на штатные средства.

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

Я знаю как в теории можно использовать эту сетевую мишуру, но я сомневаюсь, что кто-то это реально делает для чего-то полезного, а не в кулхакеров играть.

В любом случае из всей темы первый анон был самым полезным.

alexru ★★★★
() автор топика
Последнее исправление: alexru (всего исправлений: 1)
Ответ на: комментарий от alexru

То есть мой комментарий ты либо не прочитал, либо тщательно делаешь вид, что не прочитал.

Ну что же, насильно мил не будешь. Программа твоя, приоритеты выстраиваешь ты. Огорчает только, что именно из-за таких вот творений потом местные диванные эксперты начинают заявлять, что «сетевая прозрачность в иксах не работает», хотя проблема совсем не в иксах.

То, что для тебя - «сетевая мишура», для другого полезный рабочий инструмент (может быть и наоборот).

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

Вопрос не в поддержке. Не ясно кто и как это тестировать будет. Как только появится реальный пользователь желающий заниматься отладкой, так и поддержка будет.

Хотя при такой скорости как была без SHM - это будет невозможно использовать. А переделывать все, чтобы работало сносно по сети - никто точно не будет.

alexru ★★★★
() автор топика
Ответ на: комментарий от alexru

Если X-сервер удаленный

Меня такая ситуация вообще не волнует. Есть хоть кто-нибудь, кто на практике это использует?

я использовал при разработке - мой настроенный хост располагался вдали от аппаратуры, которой надо было управлять и наблюдать, поэтому через ssh -x, я удаленно запустил qtcreator и в нем вел отладку
вполне всё работало ок, но шрифты местами ползли

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