Какова архитектура оконной системы Mac OS X?

34

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

Но я не понимаю (и не смог найти хороших документов), описывающих, как приложение с графическим интерфейсом взаимодействует с оконной системой в Mac OS X. Вот некоторые из вопросов, которые у меня есть:

  • Как приложение получает события от оконной системы?
  • Нужно ли приложению регистрироваться в ядре или на каком-либо сервере оконной системы?
  • Как система управления окнами запрашивает обновление приложения?
  • Как приложение запускает операцию повторного отображения?
  • Есть ли в оконной системе протокол на основе сокетов или какая-то другая система RPC?
  • Имеет ли оконная система или приложение прямой аппаратный доступ?
  • Какие операции доступны между клиентскими приложениями и оконной системой?
miguel.de.icaza
источник

Ответы:

14

Это то, что я смог собрать до сих пор:

Приложения связываются через какой-то частный API с процессом WindowServer, процесс WindowServer - это тот, который фактически получает аппаратные события (мышь, клавиатура) и отправляет их клиентским приложениям. (это все еще открытый вопрос: какой протокол они используют, если таковые имеются, используют ли они порты Маха и MIG, или некоторый API на основе Socket, не уверен).

Некоторая информация здесь:

https://developer.apple.com/mac/library/documentation/MacOSX/Conceptual/OSX_Technology_Overview/GraphicsTechnologies/GraphicsTechnologies.html#//apple_ref/doc/uid/TP40001067-CH273-SW1

WindowServer - это кварцевый композитор. Обычно приложения используют API Quartz2D, который представлен в API CoreGraphics (функции CGXXX). Приложения создают CoreGraphics «Контексты» (CGContext) и рисуют там. Вопрос о том, передвигается ли контекст в виде большого растрового изображения или операции отправляются на сервер, как на X11, остается открытым вопросом.

Существует ограниченный API, доступный для управления определенными аспектами процесса WindowServer, такого рода параметры конфигурации, которые обычно выполняются из приложения «Настройки», но нет документации о том, как приложения фактически передают графические запросы или перекачивают сообщения с сервера, кроме API-интерфейсы Carbon / Cocoa.

miguel.de.icaza
источник
ссылка не работает
Мик
3

Что такое какао? раздел Руководства по основам какао содержит множество великолепных иллюстраций архитектуры снизу вверх.

Кевин Канту
источник
2
(извините, пока не можете оставлять заметки): Quartz или Core Graphics - это система рисования и окон в OS X (заменяет QuickDraw). Core Graphics является одной из частей Какао (Какао в целом более сопоставимо со всем Win32 API, а не с GDI, Direct2D или X)
KellyClowers
2

Лучший ресурс для внутренних компонентов OS X - Mac OS X Internals от Амит Сингх . Это удивительно подробно, но, к сожалению, распространяется только на OS X до 10.4. У Google книг есть предварительный просмотр .

Документация Apple по OS X также является хорошим ресурсом и, очевидно, более современной.

УДАЛЕНО
источник
1

XQuartz - это проект с открытым исходным кодом системы X.org X Window, работающий на Mac OS X. Их вики-разработчик и список рассылки должны помочь вам с вашими вопросами, похоже, вам нужен кто-то, кто глубоко вовлечен в проект, чтобы ответить на них.

инвертировать
источник
4
Правильно, но это касается только XQuartz - программы, которая общается с их реальной оконной системой. Вопрос был в том, как приложения, такие как XQuarts или Finder, взаимодействуют с этой оконной системой
miguel.de.icaza
1

В предыдущих версиях MacOS снятие было выполнено QuickDraw; в OS X, который был заменен Какао ...

Это не просто параллель X11, хотя. Например, X11 не включает аудио, но Какао делает.


источник