LINUX.ORG.RU

Чем вообще занимается композитор?

 , ,


0

3

Прошу разъяснить простым языком. Если лень объяснять, можете кинуть ссылкой на какую-нибудь статью об этом.
Хочу понять, должен ли композитор рисовать декорации? Насколько я понимаю, вся работа композитора состоит в том, чтобы отрисовать прямоугольник размером (A; B) на месте (X; Y) и спрашивать текстуру для него у соответствующего приложения. Эта текстура уже должна включать и рамку окна, и заголовок окна, и всё такое прочее (разве что тень не нужно рисовать).
А если к заголовку и рамке окна композитор не имеет никакого отношения, то он может узнать о перемещении, ресайзе или закрытии/свёртывании окна по соответствующим сигналам от приложения. Их тоже нужно как-то обрабатывать и изменять прямоугольник соответствующим образом.
Получается зоопарк: каждое приложение захочет отрисовать свои контроллы и рамку, так как считает нужным. Куда денется единый вид для всей системы? Будет логичным в таком случае перейти на исползование единого тулкита.
Говорят, кто-то хотел сделать какую-то «кросстулкитную либу для декораций», но я ничего не нагуглил.
Насколько я понимаю, композитор ещё отрисовывает курсор. Передаёт ли он события мыши приложениям или они сами их слушают? С клавиатурой тоже не очень ясно: раскладками занимается xkb, а кто занимается фокусом? А за частоту мигания курсора клавиатуры кто отвечает? Тулкит?
Лучше ли писать композитор «с нуля» или заюзать библиотеку типа swc или wlc?

★★★★★

Как сделаешь, так и будет. Вон в кедах KWin, например, будет композитором.

А единый тулкит уже есть, просто не все ещё это поняли.

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

А единый тулкит уже есть, просто не все ещё это поняли.

Ага, GTK+ называется.

CYB3R ★★★★★
() автор топика

Композитор будет смешивать разные «холсты» в одну сцену. Приложение будут получать «холст», рисовать туда и говорить композитору, что рисунок обновился. На счёт ввода: там просто события от клавы/мыши и.т.д. идут на холст. Приложение получает эти события и уже реагирует на них. Фокус ввода, да и сам ввод контролирует приложение(определяет каком виджету надо передать событие и.т.д. ).

Как-то так.

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

там просто события от клавы/мыши и.т.д. идут на холст. Приложение получает эти события и уже реагирует на них

Только события внутри холста? Это передаётся только приложению в фокусе?

CYB3R ★★★★★
() автор топика

единственная обязанность композитора по определению - буферизация содержимого окон и его отрисовка. так поступает, например, xcompmgr без параметров.
всё остальное композитор может делать, а может и не делать: деформацию окон, наложение эффектов, отрисовку декораций. на практике композитор почти всегда занимается хоть чем-то ещё, помимо основной своей обязанности, иначе он не особо и нужен.

Хочу понять, должен ли композитор рисовать декорации?

хочет - рисует, не хочет - не рисует. может предоставлять механизм выбора для приложений, рисовать им рамку или нет. в общем, всё зависит от композитора.
но, надо сказать, композитному менеджеру рисовать декорации гораздо сподручнее и легче: надо всего-то добавить их в буфер, в противовес традиционным иксовым костылищам вроде дополнительного родительского окна с декорациями. особенно «удобными» эти костыли становятся, когда нужно деформировать окно.

Получается зоопарк: каждое приложение захочет отрисовать свои контроллы и рамку, так как считает нужным. Куда денется единый вид для всей системы?

это решается использованием единого тулкита, ограничивающего возможности использования CSD. речь, конечно, о GTK+. ты не можешь нарисовать заголовок с танцующими бананами, у тебя есть HeaderBar и обычные виджеты на нём, внешний вид которых управляется тулкитом.
а что, в 2015 году кто-то ещё воспринимает другие тулкиты серьёзно? все эти FLTK, Tk, Qt, EFL... игрушки программистов без реального применения, не более.

Насколько я понимаю, композитор ещё отрисовывает курсор. Передаёт ли он события мыши приложениям или они сами их слушают?

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

раскладками занимается xkb, а кто занимается фокусом?

в стеке X11 - X-сервер, в стеке Wayland - композитор.

А за частоту мигания курсора клавиатуры кто отвечает? Тулкит?

да, он же его и отрисовывает.

Лучше ли писать композитор «с нуля» или заюзать библиотеку типа swc или wlc?

как хочешь. лично я всегда при разработке чего бы то ни было стараюсь не использовать мокрые письки.

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

Только события внутри холста? Это передаётся только приложению в фокусе?

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

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

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

а что, в 2015 году кто-то ещё воспринимает другие тулкиты серьёзно? все эти FLTK, Tk, GTK+, EFL... игрушки программистов без реального применения, не более.

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

Это не тулкитосрач. Если и оставлять один тулкит, то это будет GTK+, ибо его использует весь основной софт. Если не брать проект KDE, то на Qt пишут школьники, чьи поделки меня мало интересуют.

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

А единый тулкит уже есть, просто не все ещё это поняли.

Мыши плакали, кололись, но продолжали жрать Qt.

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

Windows Forms

Легаси древнейшее. Виндузятники сейчас на WPF.
Моновцы его портирование не вывезли, потому пилят XWT.

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

«речь, конечно, о GTK+. <...> а что, в 2015 году кто-то ещё воспринимает другие тулкиты серьёзно? все эти FLTK, Tk, Qt, EFL... игрушки программистов без реального применения, не более.»

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

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

Это наш проповедник GTK и закапыватель иксов - линкор. Не обращай на него внимание.

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

Это не тулкитосрач.
на Qt пишут школьники

ну-ну...

anonymous
()

все эти FLTK, Tk, Qt, EFL... игрушки программистов без реального применения, не более.

на Qt пишут школьники

Это не тулкитосрач

Боже, сколько жира!

Sunderland93 ★★★★★
()

Чем вообще занимается композитор?

Музыку пишет?

sT331h0rs3 ★★★★★
()

Будет логичным в таком случае перейти на исползование единого тулкита.

Вы все еще кипятите?

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

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

То что в файерфоксе в половине EditBox цвет фона сливается с цветом шрифта - это двойной ппц. Почему половина то? хотя бы на этот вопрос есть ответ?))

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

ну, я то не осилил - понятно, а мейнтейнеры дистра? У тебя какой дистр, где это осилили? у меня федора.

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

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

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

Просто у тебя очень отталкивающая манера общения. До шифта тебе тянуться лень, спеллчекер поставить лень, длинное тире тоже лень, куча ошибок в тексте, «ппц» и безглазые смайлики. Тебе бы вконтактике дискутировать, а не тут.

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

Кто ж знал, что тебя это раздражает. Я б даже не стал в твой топик писать тогда.

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

А вот тот же вестон как поступает? Рисует он декорации для weston-terminal или тот сам себя полностью отрисовывает?
Или код смотреть надо?

CYB3R ★★★★★
() автор топика

симфониями. пьессы пишет.

anonymous
()

Там правильно всё выше написали: gtk - это велосипед, который не прошёл проверку временем. Надо смотреть фактам в лицо, а не пытаться заговаривать реальность.

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

то на Qt пишут школьники

И теперь ты мне назовешь успешный коммерческий проект уровня autodesk maya на гтк, уважаемый нешкольник.

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

коммерческие проекты

Только опенсурс. Коммерческое ПО я не использую.

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