Mac OS X'in pencereleme sisteminin mimarisi nedir?


34

X11 sisteminin nasıl çalıştığını, istemcilerin bir soket üzerinden sunucu işlemine bağlandıkları ve kendileri adına belirli işlemleri gerçekleştirmek için işlemleri pencere sunucusuna gönderdiklerini biliyorum.

Ancak bir GUI uygulamasının Mac OS X'te pencere sistemiyle nasıl etkileşimde bulunduğunu açıklayan (ve iyi belgeler bulamadım) anlamıyorum. İçinde bulunduğum bazı sorular:

  • Bir uygulama pencereleme sisteminden olayları nasıl alır?
  • Uygulamanın çekirdeğe mi yoksa bazı Windows sistem sunucusuna mı kaydolması gerekiyor?
  • Pencereleme sistemi bir uygulamanın ekranını güncellemesini nasıl ister?
  • Bir uygulama yeniden görüntüleme işlemini nasıl tetikler?
  • Pencere sistemine soket tabanlı bir protokol veya başka bir RPC sistemi var mı?
  • Pencereleme sistemi veya uygulamanın doğrudan donanım erişimi var mı?
  • İstemci uygulamaları ve pencereleme sistemi arasındaki mevcut işlemler nelerdir?

Yanıtlar:


14

Şimdiye kadar toplayabildiğim şey buydu:

Uygulamalar, bir tür özel API üzerinden WindowServer işlemiyle iletişim kurar, WindowServer işlemi, aslında donanım olaylarını (fare, klavye) alan ve bunları istemci uygulamalarına gönderen işlemdir. (Bu hala açık bir sorudur: Varsa hangi protokolü kullanıyorlarsa, Mach portlarını ve MIG'yi veya bazı Soket tabanlı API'leri kullanıyorlar mı, emin değiller).

Bazı bilgiler burada:

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

WindowServer, Kuvars Bestecidir. Tipik olarak uygulamalar CoreGraphics API'sinde (CGXXX fonksiyonlarında) bulunan Quartz2D API'sini kullanır. Uygulamalar CoreGraphics "Contexts" (CGContext) 'ı yaratır ve orada çizer. Bağlamın büyük bir bitmap olarak yapıldığında veya işlemlerin X11'deki gibi sunucuya gönderilip gönderilmeyeceği hala açık bir sorudur.

WindowServer işleminin belirli yönlerini, genellikle Ayarlar uygulamasından yapılan yapılandırma ayarlarının türünü kontrol etmeye maruz kalmış sınırlı bir API vardır, ancak uygulamaların aslında sunucudan grafik isteklerini nasıl ilettikleri veya sunucudan pompa mesajları ile ilgili hiçbir belge yoktur. açığa çıkan Carbon / Cocoa API'leri.


bağlantı koptu
Mick

3

"Kakao Nedir?" bölümünde Kakao Temelleri Kılavuzu aşağıdan yukarıya doğru mimarisinin harika çizimler bir grup vardır.


2
(üzgünüm, henüz not gönderemiyorum): Quartz veya Core Graphics, OS X'teki çizim ve pencereleme sistemidir (QuickDraw'ı değiştirerek). Core Graphics,
Kakao'nun


1

XQuartz, Mac OS X'te çalışan X.org X Pencere Sisteminin açık kaynaklı bir projesidir. Geliştirici wiki ve posta listesi , sorularınız için size yardım etmeli, bu soruları yanıtlamak için projeye derinden dahil olan birisine ihtiyacınız var gibi görünüyor.


4
Doğru, ama bu sadece kendi gerçek pencereleme sistemiyle konuşan bir program olan XQuartz'ı kapsar. Soru bu pencereleme sistemine XQuarts veya Bulucu konuşmak gibi uygulamaları yapmak nasıl oldu
miguel.de.icaza

1

MacOS'un önceki sürümlerinde, kaldırma QuickDraw tarafından yapıldı; OS X’te, Cocoa’nın yerini aldı ...

Yine de sadece X11'e paralel değil. Örneğin, X11 ses içermez, ancak Kakao içerir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.