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:
parent
01ace5f3fd
commit
5170c169db
|
@ -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());
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Reference in New Issue