Qual è l'architettura del sistema di finestre di Mac OS X?


34

Ho familiarità con il funzionamento del sistema X11, in cui i client si connettono tramite un socket al processo del server e inviano operazioni al server della finestra per eseguire determinate operazioni per loro conto.

Ma non capisco (e non sono riuscito a trovare buoni documenti) che descrivono come un'applicazione GUI interagisce con il sistema a finestre su Mac OS X. Alcune delle domande che ho includono:

  • In che modo un'app riceve eventi dal sistema a finestre?
  • L'app deve registrarsi con il kernel o un server di sistema a finestre?
  • In che modo il sistema a finestre richiede che un'app aggiorni il display?
  • In che modo un'app attiva un'operazione di riesposizione?
  • Esiste un protocollo basato su socket o qualche altro sistema RPC per il sistema a finestre?
  • Il sistema a finestre o l'applicazione ha accesso diretto all'hardware?
  • Quali sono le operazioni disponibili tra le app client e il sistema a finestre?

Risposte:


14

Questo è ciò che ho potuto raccogliere finora:

Le applicazioni comunicano tramite una sorta di API privata al processo WindowServer, il processo WindowServer è quello che ottiene effettivamente eventi hardware (mouse, tastiera) e li invia alle applicazioni client. (questa è ancora una domanda aperta: quale protocollo usano se ce ne sono, usano porte Mach e MIG, o qualche API basata su Socket, non sono sicuro).

Alcune informazioni sono qui:

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

WindowServer è il Compositore al quarzo. In genere le applicazioni utilizzano l'API Quartz2D esposta nell'API CoreGraphics (funzioni CGXXX). Le applicazioni creano "Contesti" CoreGraphics (CGContext) e vi disegnano. Se il contesto viene inserito quando viene eseguito come bitmap di grandi dimensioni o se le operazioni vengono inviate al server come se fossero su X11 è ancora una domanda aperta.

Esiste un'API limitata esposta per controllare determinati aspetti del processo WindowServer, il tipo di impostazioni di configurazione che sono in genere eseguite dall'applicazione Impostazioni, ma non c'è documentazione su come le app comunicano effettivamente richieste grafiche o inviano messaggi dal server, oltre a le API Carbon / Cocoa esposte.


il collegamento è interrotto
Mick

3

Il "Che cos'è il cacao?" la sezione della Guida ai fondamenti del cacao ha un mucchio di grandi illustrazioni dell'architettura dal basso verso l'alto.


2
(scusate, non posso ancora postare note): Quartz o Core Graphics è il sistema di disegno e finestra in OS X (che sostituisce QuickDraw). Core Graphics è una parte di Cocoa (il Cocoa nel suo insieme è più comparabile all'intera API Win32, piuttosto che a GDI, Direct2D o X)
KellyClowers


1

XQuartz è il progetto open source di X.org X Window System che gira su Mac OS X. La wiki dello sviluppatore e la mailing list dovrebbero aiutarti con le tue domande, sembra che tu abbia bisogno di qualcuno profondamente coinvolto nel progetto per rispondere a queste.


4
Bene, ma questo riguarda solo XQuartz, che è solo un programma che parla al loro vero sistema di finestre. La domanda riguardava il modo in cui app come XQuarts o Finder parlano con questo sistema di finestre
miguel.de.icaza il

1

Nelle precedenti versioni di MacOS, il sollevamento veniva eseguito da QuickDraw; in OS X, che è stato sostituito da Cocoa ...

Tuttavia, X11 non è semplicemente parallelo. Ad esempio, X11 non include l'audio, ma Cocoa lo fa.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.