When no screens are found, don’t hog the CPU. Also, wait longer for screens (10 seconds).

Instead of just going on, i3 will exit cleanly now, putting an
appropriate message into the logfile.
next
Michael Stapelberg 2009-12-07 16:31:49 +01:00
parent 13231e13ab
commit 1a53cc067b
1 changed files with 9 additions and 1 deletions

View File

@ -188,7 +188,7 @@ static void query_screens(xcb_connection_t *conn, struct screens_head *screenlis
* which the X server does not return any screens, such as when rotating
* screens), but not longer than 5 seconds (strictly speaking, only four
* seconds of trying are guaranteed due to the 1-second-resolution) */
while ((time(NULL) - before_trying) < 5) {
while ((time(NULL) - before_trying) < 10) {
reply = xcb_xinerama_query_screens_reply(conn, xcb_xinerama_query_screens_unchecked(conn), NULL);
if (!reply) {
LOG("Couldn't get Xinerama screens\n");
@ -227,11 +227,19 @@ static void query_screens(xcb_connection_t *conn, struct screens_head *screenlis
if (num_screens == 0) {
LOG("No screens found. This is weird. Trying again...\n");
/* Give the scheduler a chance to do something else
* and dont hog the CPU */
usleep(250);
continue;
}
break;
}
if (num_screens == 0) {
LOG("No screens found for 10 seconds. Please fix your setup. i3 will exit now.\n");
exit(0);
}
}
/*