Яка архітектура віконної системи Mac OS X?


34

Мені знайоме, як працює система X11, де клієнти підключаються через сокет до серверного процесу та відправляють операції на віконний сервер для виконання певних операцій від їх імені.

Але я не розумію (і мені не вдалося знайти гарних документів), що описує, як програма GUI взаємодіє з віконною системою на Mac OS X. Деякі питання, які у мене є, включають:

  • Як програма отримує події від системи вікон?
  • Чи потрібно програмі зареєструватися у ядрі чи на якомусь системному сервері вікон?
  • Як система вікон вимагає, щоб програма оновила свій дисплей?
  • Як додаток запускає операцію повторного відображення?
  • Чи є протокол на основі сокета або якась інша система RPC до системи вікон?
  • Чи має система вікон або програма безпосередньо прямий апаратний доступ?
  • Які операції доступні між клієнтськими програмами та системою вікон?

Відповіді:


14

Ось що мені вдалося зібрати досі:

Програми спілкуються через якийсь приватний API для процесу WindowServer, процес WindowServer - це той, який фактично отримує апаратні події (миша, клавіатура) та передає їх клієнтським програмам. (це все ще відкрите питання: який протокол вони використовують, якщо такі є, чи вони використовують порти Mach і 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 - це кварцовий композитор. Зазвичай програми використовують Quartz2D API, який відкривається в API CoreGraphics (функції CGXXX). Програми створюють CoreGraphics "Contexts" (CGContext) і малюють там. Чи підштовхується контекст, коли він робиться як великий растровий малюнок, чи операції надсилаються серверу, як вони є на X11, все ще залишається відкритим питанням.

Існує обмежений API, який може керувати певними аспектами процесу WindowServer, типом налаштувань конфігурації, які зазвичай виконуються з програми "Налаштування", але немає документації про те, як додатки насправді передають графічні запити або перекачують повідомлення з сервера, крім відкриті API-вуглець / какао.


посилання розірвано
Мік

3

"Що таке какао?" У розділі Посібника з основ какао є купа чудових ілюстрацій архітектури знизу вгору.


2
(Вибачте, поки не можу розміщувати нотатки): Quartz або Core Graphics - це система малювання та вікон в OS X (замінює QuickDraw). Основна графіка є однією частиною какао (какао в цілому є більш порівнянним з усім API Win32, а не GDI, Direct2D або X)
KellyClowers


1

XQuartz - це проект з відкритим кодом віконної системи X.org X, який працює на Mac OS X. Їх вікі та список розсилки розробників повинні допомогти вам у питаннях, схоже, вам потрібен хтось, хто глибоко залучений у проект, щоб відповісти на них.


4
Правильно, але це стосується лише XQuartz, що є лише програмою, яка спілкується з їх реальною системою вікон. Питання полягало в тому, як додатки, такі як XQuarts або Finder, спілкуються з цією
віконною

1

У попередніх версіях MacOS підйом здійснювався QuickDraw; в OS X, яку витіснив какао ...

Хоча це не просто паралельний X11. Наприклад, X11 не включає аудіо, але какао робить.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.