#include"config_ac.h" #include"os_calls.h" #include"string_calls.h" #include"xwait.h"// For return status codes
#define ATTEMPTS 10 #define ALARM_WAIT 30
/*****************************************************************************/ staticvoid
alarm_handler(int signal_num)
{ /* Avoid printf() in signal handler (see signal-safety(7)) * *Prefixthemessagewithanewlineincaseanothermessage
* has been partly output */ constchar msg[] = "\n<E>Timed out waiting for RandR outputs\n";
g_file_write(1, msg, g_strlen(msg)); exit(XW_STATUS_TIMED_OUT);
}
if (!XRRQueryExtension(dpy, &event_base, &error_base))
{
printf("<I>RandR not supported on display %s\n",
DisplayString(dpy)); return0;
}
for (n = 1; n <= wait; ++n)
{
printf("<D>Waiting for outputs. Attempt %u of %u\n", n, wait);
res = XRRGetScreenResources(dpy, DefaultRootWindow(dpy)); if (res != NULL)
{ if (res->noutput > 0)
{
outputs = res->noutput;
}
XRRFreeScreenResources(res);
}
if (outputs > 0)
{
printf("<D>Display %s ready with %u RandR outputs\n",
DisplayString(dpy), outputs); return0;
}
g_sleep(1000);
}
printf("<E>Unable to find any RandR outputs\n"); return1;
}
dpy = open_display(display_name); if (!dpy)
{
printf("<E>Unable to open display %s\n", display_name);
status = XW_STATUS_FAILED_TO_START;
} else
{ if (wait_for_r_and_r(dpy) == 0)
{
status = XW_STATUS_OK;
}
XCloseDisplay(dpy);
}
return status;
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.18 Sekunden
(vorverarbeitet am 2026-07-10)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.