Qual é a arquitetura do sistema de janelas do Mac OS X?

32

Estou familiarizado com o funcionamento do sistema X11, onde os clientes se conectam por meio de um soquete ao processo do servidor e enviam operações para o servidor de janelas para executar determinadas operações em seu nome.

Mas eu não entendo (e não consegui encontrar bons documentos) descrevendo como uma aplicação GUI interage com o sistema de janelas no Mac OS X. Algumas das perguntas que tenho incluem:

  • Como um aplicativo recebe eventos do sistema de janelas?
  • O aplicativo precisa se registrar no kernel ou em algum servidor de sistema de janelas?
  • Como o sistema de janelas solicita que um aplicativo atualize sua exibição?
  • Como um aplicativo aciona uma operação de reexposição?
  • Existe um protocolo baseado em soquete ou algum outro sistema RPC no sistema de janelas?
  • O sistema de janelas ou o aplicativo tem acesso direto ao hardware?
  • Quais são as operações disponíveis entre os aplicativos do cliente e o sistema de janelas?
por miguel.de.icaza 16.08.2010 / 03:16

5 respostas

13

Isso é o que consegui reunir até agora:

Os aplicativos se comunicam com algum tipo de API privada para o processo WindowServer, o processo WindowServer é aquele que realmente obtém eventos de hardware (mouse, teclado) e despacha esses para os aplicativos clientes. (isso ainda é uma questão em aberto: qual protocolo eles usam, se algum, eles usam portas Mach e MIG, ou alguma API baseada em Socket, não tenho certeza).

Algumas informações estão aqui:

link

O WindowServer é o Compositor de Quartzo. Normalmente, os aplicativos usam a API Quartz2D, que é exposta na API CoreGraphics (CGXXX funtions). As aplicações criam "Contextos" do CoreGraphics (CGContext) e desenham lá. Se o contexto é empurrado quando é feito um grande bitmap, ou se as operações são enviadas para o servidor como se estivessem no X11, ainda é uma questão em aberto.

Existe uma API limitada exposta para controlar certos aspectos do processo WindowServer, o tipo de configuração que normalmente é feito a partir do aplicativo Configurações, mas não há documentação sobre como os aplicativos realmente comunicam solicitações gráficas ou bombeiam mensagens do servidor , além das APIs de carbono / cacau expostas.

    
por 22.08.2010 / 19:19
2

O melhor recurso para internos do OS X é o Mac OS X Internals de Amit Singh . É surpreendentemente detalhado, mas infelizmente cobre apenas o OS X até 10.4. Os livros do Google têm uma pré-visualização .

A documentação da Apple para o OS X também é um bom recurso, e é obviamente mais atualizado.

    
por 20.08.2010 / 15:02
1

XQuartz é o projeto de código aberto do Sistema X Window X Window que roda no Mac OS X. O seu wiki do desenvolvedor e a lista de discussão deve ajudá-lo com suas perguntas, parece que você precisa de alguém profundamente envolvido no projeto para responder a essas perguntas.

    
por 16.08.2010 / 10:49
1

Nas versões anteriores do MacOS, o levantamento era feito pelo QuickDraw; no OS X, que foi substituído pelo Cocoa ...

Não apenas paralelamente X11. Por exemplo, o X11 não inclui áudio, mas o Cocoa.

    
por 18.08.2010 / 07:09