Kiến trúc của hệ thống cửa sổ của Mac OS X là gì?


34

Tôi quen thuộc với cách hệ thống X11 hoạt động, nơi khách hàng kết nối thông qua một ổ cắm đến quy trình máy chủ và gửi các hoạt động đến máy chủ cửa sổ để thực hiện các hoạt động nhất định thay cho họ.

Nhưng tôi không hiểu (và tôi không thể tìm thấy tài liệu tốt) mô tả cách ứng dụng GUI tương tác với hệ thống cửa sổ trên Mac OS X. Một số câu hỏi mà tôi có bao gồm:

  • Làm thế nào để một ứng dụng nhận được các sự kiện từ hệ thống cửa sổ?
  • Có phải ứng dụng cần phải đăng ký với kernel, hoặc một số máy chủ hệ thống cửa sổ?
  • Làm thế nào để hệ thống cửa sổ yêu cầu một ứng dụng cập nhật màn hình của nó?
  • Làm thế nào để một ứng dụng kích hoạt một hoạt động hiển thị lại?
  • Có một giao thức dựa trên ổ cắm, hoặc một số hệ thống RPC khác cho hệ thống cửa sổ không?
  • Hệ thống cửa sổ, hoặc ứng dụng, có quyền truy cập phần cứng trực tiếp không?
  • Các hoạt động có sẵn giữa các ứng dụng khách và hệ thống cửa sổ là gì?

Câu trả lời:


14

Đây là những gì tôi đã có thể thu thập cho đến nay:

Các ứng dụng giao tiếp qua một số loại API riêng cho quy trình WindowServer, quy trình WindowServer là một ứng dụng thực sự có các sự kiện phần cứng (chuột, bàn phím) và gửi chúng đến các ứng dụng khách. (đây vẫn là một câu hỏi mở: họ sử dụng giao thức nào nếu có, họ có sử dụng cổng Mach và MIG hoặc một số API dựa trên Ổ cắm không, không chắc chắn).

Một số thông tin ở đây:

https://developer.apple.com/mac/l Library / document / MacOSX

WindowServer là Compositor Quartz. Thông thường, các ứng dụng sử dụng API Quartz2D được hiển thị trong API CoreGraphics (chức năng CGXXX). Các ứng dụng tạo CoreGraphics "Bối cảnh" (CGContext) và vẽ ở đó. Cho dù bối cảnh được đẩy khi nó được thực hiện dưới dạng bitmap lớn, hoặc nếu các hoạt động được gửi đến máy chủ như trên X11 vẫn là một câu hỏi mở.

Có một API giới hạn được hiển thị để kiểm soát các khía cạnh nhất định của quy trình WindowServer, loại cài đặt cấu hình thường được thực hiện từ ứng dụng Cài đặt, nhưng không có tài liệu nào về cách các ứng dụng thực sự truyền đạt yêu cầu đồ họa hoặc bơm tin nhắn từ máy chủ, ngoại trừ các API Carbon / Ca cao tiếp xúc.


liên kết bị hỏng
Mick

3

"Ca cao là gì?" phần của Hướng dẫn cơ bản về ca cao có một loạt các minh họa tuyệt vời về kiến ​​trúc từ dưới lên.


2
(xin lỗi, chưa thể đăng ghi chú): Quartz hoặc Core Graphics là hệ thống vẽ và cửa sổ trong OS X (thay thế QuickDraw). Đồ họa lõi là một phần của Ca cao (Nhìn chung, Ca cao tương đương với toàn bộ API Win32, thay vì GDI, Direct2D hoặc X)
KellyClowers


1

XQuartz là dự án nguồn mở của Hệ thống Cửa sổ X.org chạy trên Mac OS X. Danh sách thư và wiki dành cho nhà phát triển của họ sẽ giúp bạn giải đáp thắc mắc của mình, có vẻ như bạn cần ai đó tham gia sâu vào dự án để trả lời những câu hỏi đó.


4
Phải, nhưng điều đó chỉ bao gồm XQuartz, đây chỉ là một chương trình nói chuyện với hệ thống cửa sổ thực sự của họ. Câu hỏi là về cách các ứng dụng như XQuarts hoặc Finder nói chuyện với hệ thống cửa sổ này
Miguel.de.icaza

1

Trong các phiên bản MacOS trước, việc nâng hạ được thực hiện bởi QuickDraw; trong OS X, đã được thay thế bởi ...

Nó không chỉ đơn giản là song song X11. Ví dụ: X11 không bao gồm âm thanh, nhưng Ca cao thì có.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.