Estou familiarizado com o funcionamento do sistema X11, em que os clientes se conectam por meio de um soquete ao processo do servidor e enviam operações ao servidor de janela para realizar certas operações em seu nome.
Mas eu não entendo (e não consegui encontrar bons documentos) descrevendo como um aplicativo GUI interage com o sistema de janelas no Mac OS X. Algumas das perguntas que tenho incluem:
Isso é o que consegui reunir até agora:
Os aplicativos se comunicam por meio de algum tipo de API privada com o processo WindowServer, o processo WindowServer é aquele que realmente obtém eventos de hardware (mouse, teclado) e os envia para os aplicativos clientes. (esta ainda é uma questão em aberto: qual protocolo eles usam se houver, eles usam portas Mach e MIG, ou alguma API baseada em Socket, não tenho certeza).
Algumas informações estão aqui:
O WindowServer é o Quartz Compositor. Normalmente, os aplicativos usam a API Quartz2D que é exposta na API CoreGraphics (funções CGXXX). Os aplicativos criam "Contextos" do CoreGraphics (CGContext) e desenham lá. Se o contexto é enviado quando é feito como bitmap grande ou se as operações são enviadas ao servidor como no X11, ainda é uma questão em aberto.
Há uma API limitada exposta para controlar certos aspectos do processo WindowServer, o tipo de definições de configuração que normalmente são feitas no aplicativo Configurações, mas não há documentação sobre como os aplicativos realmente comunicam solicitações gráficas ou bombeiam mensagens do servidor, a não ser as APIs Carbon/Cocoa expostas.
O "O que é cacau?" seção do Cocoa Fundamentals Guide tem um monte de ótimas ilustrações da arquitetura de baixo para cima.
O melhor recurso para os internos do OS X é internos do Mac OS X de Amit Singh . É surpreendentemente detalhado, mas infelizmente cobre apenas o OS X até o 10.4. Os livros do Google têm um visualização .
documentação da Apple para OS X também é um bom recurso e, obviamente, está mais atualizado.
XQuartz é o projeto de código aberto do X.org X Window System que roda no Mac OS X. O wiki do desenvolvedor e lista de discussão deve ajudá-lo com suas perguntas, parece que você precisa de alguém profundamente envolvido em o projeto para responder a essas.
Nas versões anteriores do MacOS, o levantamento era feito pelo QuickDraw; no OS X, que foi substituído pelo Cocoa ...
Porém, não é simplesmente paralelo ao X11. Por exemplo, o X11 não inclui áudio, mas o Cocoa sim.