Как работает композитор на X? - PullRequest
4 голосов
/ 10 декабря 2011

Я пытаюсь понять, как работают композиторы на X (ну, в основном потому, что ни xcompmgr, ни cairo-compmgr не могут правильно рисовать тени для моего удивительного wm ~~~)

Я прочитал часть исходного кода иxcompmgr и cairo-compmgr, но я до сих пор не совсем понимаю, как они это делают.

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

Мне немного сложно узнать их из исходного кода, потому чтомногие вещи (особенно расширения X) плохо документированы.Также будет полезно просто указать, куда я должен смотреть.

1 Ответ

3 голосов
/ 10 декабря 2011

Чем проще вы его кодируете, тем лучше он будет работать.

  • Получить список видимых окон
  • Сортировка по обратному z-порядку (от самого нижнего до самого верхнего)
  • Нарисуйте тень, а затем само окно для каждого окна

Вам не нужна черная магия.

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

EDIT: Если вы ищете документацию, вы можете использовать руководство linux (команда man ) и файлы заголовков, они являются основным (также лучшим и, возможно, единственным реальным) источником документации, так как все другие источники / сайты полагаются на них afaik.

...