LINUX.ORG.RU
ФорумTalks

Хранит ли сервер содержимое окон?

 , ,


0

1

Вот тут один лоровец напомнил про древнюю багофичу - рисовании верхним окном по нижнему, когда приложение нижнего зависло. Картинку я перезалил, у того ТС на картинкообменнике одни непотребства и сиськи.

Я такое тоже наблюдал, и не обязательно чтобы приложение зависло, достаточно чтобы тормозило и чтобы не было композитного менеджера.
Так вот, что интересно. Почему X не хранит содержимое окна? Ведь X создавался для работы по сети, а содержимое окон раньше рисовалось примитивами X-сервера. Так что получается? Подвигал окошком, приложению нужно опять гнать по сети команды рисования, а серверу опять по ним рисовать?

Или есть некий механизм сохранения картинки на сервере? Тогда почему не используется? Помнится, наблюдал сохранение содержимого окна остановленного GNUstep приложения, хотя было давно, может быть путаю...

★★★★★

Насколько я помню, голые Х-ы гоняют по сети только команды, а вот если стоит КуТе или ЖТК тогда там гораздо больше шлется по сети.

ymuv ★★★★
()

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

И толку? Один хрен открывается с полминуты. Те же яндексфотки гораздо удобнее и в разы быстрее.

Igron ★★★★★
()

Это баг тулкита.

Quasar ★★★★★
()

Подвигал окошком, приложению нужно опять гнать по сети команды рисования, а серверу опять по ним рисовать?

Зависит от тулкита и от того, как написана программа.

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

Но что мешает готовый отрендеренный пиксмап окна сохранить в памяти сервера? Зачем даже примитивы гнать лишний раз по сети?

KivApple ★★★★★
()

Иксы без композитного менеджера никаких битмапов, кроме отрисованного рабочего стола (и то зависит от реализации, могут и не хранить), не хранят. Если становится видным кусок окна, который раньше не был виден, они шлют событие expose.

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

Конец восьмидесятых — начало девяностых, от силы 2 метра памяти на компьютерах-терминалах.

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

Могут. Хранит ли Xorg — не знаю. Скорее всего нет.

PolarFox ★★★★★
()

Когда создавались иксы, трава была зеленее, деревья ниже, а оперативки было очень мало, поэтому хранить изображение каждого окна было нерационально. Поэтому хранили изображение всего экрана, если вдруг окна перемещались так, что какая-то часть окна до этого была перекрыта кем-то, а стала открыта, то приложению кидается запрос на перерисовку.
А вот композитные менеджеры работают по-другому. Они хранят в памяти изображения окон и уже из них компонуют экран.

h31 ★★★★
()

Достаточно передавать по сети не отрисовочный сиквенс, а логическую структуру окна (например, Document Object Model :), и иметь на сервере экземпляр тулкита, который может это отрисовать (например, рендерер HTML+CSS).

//это опять был браузеротроллинг :)

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

Блин, да и сейчас хранить накладно! Скока тот PNG жрет? Десяток метров на каждое окно, пара десятков открытых окон - прощай гиг памяти

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

Чтобы графика жрала как целый хром с числом табов == числу открытых окон? Нет, спасибо :3

PolarFox ★★★★★
()

Почему X не хранит содержимое окна?

Зачем? Каждый раз, как требуется перерисовать окно, X-сервер шлет запрос клиенту. И это вполне логично: мало ли что в содержимом окна изменилось. А уж тем паче, если у окна размер изменяют.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от stevejobs

Окно 1920×1080 с 32 бита на пиксель жрёт всего 8 метров памяти, в самом несжатом виде. В пнг было бы гораздо меньше, но гонять из формата в формат накладно.

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

Зачем?

Я не зря про сетевую прозрачность написал.

ls-h ★★★★★
() автор топика
Ответ на: комментарий от Eddy_Em

мало ли что в содержимом окна изменилось

Так если изменилось, клиент сам может незамедлительно послать необходимые команды, чтобы икс-сервер обновил образ окна в памяти и всё.

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

Откроешь ты, скажем, на текущем рабочем столе 20 окон. И что, икс-серверу все картинки хранить в памяти? Не жирно будет?

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

Ну вообще-то я отвечал на нечто совершенно другое. Но вообще зависит от ситуации: может быть и не жирно, если картинка сложная.

Binary ★★★★★
()

Почему X не хранит содержимое окна? Ведь X создавался для работы по сети, а содержимое окон раньше рисовалось примитивами X-сервера.

Потому что в то время оперативной и видео памяти было слишком мало для этого. Даже Windows только начиная с Vista делает это. И лишь начиная с Windows 7 содержимое окон хранится только в видеопамяти.

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

На экране отображается лишь часть окон.

Eddy_Em ☆☆☆☆☆
()

Вообще тут у народа слова «сетевая прозрачность» у кого-то стали синонимом слова, начинающего на зае, и заканчивающегося на бись, а у кого-то синонимом слова «тормоза».

И те, и другие не правы. Сетевая прозрачность это когда пофиг, на одной ли машине рисуется окошко и исполняется приложение. И всё. Больше это ничего не значит. А то, что обсуждается в этом треде, называется композитинг.

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