XQuartz: Fixed the "laggy" startup under the new model. This was caused by xinit blocking expecting SIGUSR1 and our stub never sending it.

(cherry picked from commit ee92aced10d0743c4658e53b58b5d9f5a094a415)
This commit is contained in:
Jeremy Huddleston 2008-06-10 01:39:15 -07:00
parent 01ace5f3fd
commit 5170c169db
2 changed files with 14 additions and 0 deletions

View File

@ -350,6 +350,10 @@ Bool DarwinEQInit(void) {
QuartzModeEQInit();
/* Note that this *could* cause a potential async issue, since we're checking
* darwinEvents without holding the lock, but darwinEvents is only ever set
* here, so I don't bother.
*/
if (!darwinEvents) {
darwinEvents = (xEvent *)xcalloc(sizeof(xEvent), GetMaximumEventsNum());

View File

@ -214,6 +214,7 @@ int main(int argc, char **argv, char **envp) {
int launchd_fd;
string_t handoff_socket_filename;
#endif
sig_t handler;
if(argc == 2 && !strcmp(argv[1], "-version")) {
fprintf(stderr, "X.org Release 7.3\n");
@ -222,6 +223,15 @@ int main(int argc, char **argv, char **envp) {
return EXIT_SUCCESS;
}
/* We don't have a mechanism in place to handle this interrupt driven
* server-start notification, so just send the signal now, so xinit doesn't
* time out waiting for it and will just poll for the server.
*/
handler = signal(SIGUSR1, SIG_IGN);
if(handler == SIG_IGN)
kill(getppid(), SIGUSR1);
signal(SIGUSR1, handler);
#ifdef NEW_LAUNCH_METHOD
/* Get the $DISPLAY FD */
launchd_fd = launchd_display_fd();