Re: A map of X11
Re: A map of X11
- Subject: Re: A map of X11
- From: Jeremy Huddleston <email@hidden>
- Date: Thu, 29 Nov 2007 23:48:19 -0800
This is my current understanding of everything which has been formed
over the past month of cleanup and small fixes. I'm sure Ben can
refine/fix my comments.
The bulk of our code is on three main locations: GL/apple, miext/
rootless, and hw/darwin. You can think of miext/rootless as the
portion of hw/darwin that is cross-platform for rootless servers.
Realistically this just means us, but it's there for the bitrotting
Xwin.
GL/apple contains the code that essentially provides glx. I don't
know how this works, and it's not working at all in the master branch.
hw/darwin/launcher is /A/U/X11.app... it's independent of anything
else and just launches xterm.
hw/darwin/apple is /u/X/X11.app. It is self contained by by its
launch process loads Xquartz.
hw/darwin/quartz/*.[cm] and hw/darwin/*.[cm] should probably be merged
together at some point (refactoring for 1.4 or 1.5 perhaps). They're
separated for legacy reasons with the original XDarwin and XDarwin.app
codebase that we built off of and have since purged.
Now, for the launch process... this is ugly... and I am not sure I
understand it entirely...
/u/X/X11.app starts (via launchd or whatever)*. X11.app does a fork/
execv to launch Xquartz as a child process (like xinit I believe...
but I haven't looked at xinit source to compare exactly). Xquartz's
main() is from dix/main.c. This is the ugly part that calls
DarwinHandleGUI() in quartz/quartzStartup.c This whole startup
process is using Carbon, is broken (we shouldn't be introducing
Xquartz specific stuff into dix/* as that breaks Xephyr, Xnest, etc
when built together), and is really hackishly ugly. See Ben's post
from yesterday about this.
*: I believe the "duplicate dock icon" when launcing it directly is
caused by this weird launch process. The bouncing icon belonging to /
u/X/X11.app/C/M/X11 and the "usable" one belonging to /u/X/bin/
Xquartz. The bouncing one doesn't show up when launchd starts it
because it's not user initiated... this is ENTIRELY speculation
though. Ben, have you been able to sit down with the Dock guys about
this?
On Nov 29, 2007, at 17:42, Nathaniel Gray wrote:
Hi folks,
I've started looking at adding very basic accessibility support in the
server but I'm having a hard time internalizing the design of the
server itself. I can't figure out what the boundaries of the various
modules/processes/threads are. It would be *really* helpful if
somebody (named Ben or Jeremy ;^) would write up a quick map of X11.
It doesn't have to be ultra-detailed, but it would help to know:
* What processes are running (Xquartz, X11, etc?)
* What their roles are
* Some kind of block-diagram-like description of the components of the
server as it relates to OS X. (Meaning, no need to go into the
various X protocol extensions and things that are part of the X server
on all platforms, just "this module translates Quartz events to X
events" and so on.)
* What the various directories in the darwin portion of the source
are for
Once this document exists, it would be nice to add it to git so the
project was a little more self-documenting.
Cheers,
-n8
--
-- Nathaniel Gray -- Caltech Computer Science ------>
-- Mojave Project -- http://mojave.cs.caltech.edu -->
_______________________________________________
Do not post admin requests to the list. They will be ignored.
X11-users mailing list (email@hidden)
This email sent to email@hidden
_______________________________________________
Do not post admin requests to the list. They will be ignored.
X11-users mailing list (email@hidden)
This email sent to email@hidden
References: | |
| >A map of X11 (From: "Nathaniel Gray" <email@hidden>) |