| Index: tools/xdisplaycheck/xdisplaycheck.cc
|
| diff --git a/tools/xdisplaycheck/xdisplaycheck.cc b/tools/xdisplaycheck/xdisplaycheck.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..b7a975426684b25df39071534941a0f10f17601b
|
| --- /dev/null
|
| +++ b/tools/xdisplaycheck/xdisplaycheck.cc
|
| @@ -0,0 +1,43 @@
|
| +// Copyright (c) 2009 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +//
|
| +// This is a small program that tries to connect to the X server. It
|
| +// continually retries until it connects or 5 seconds pass. If it fails
|
| +// to connect to the X server after 5 seconds, it returns an error code
|
| +// of -1.
|
| +//
|
| +// This is to help verify that the X server is available before we start
|
| +// start running tests on the build bots.
|
| +
|
| +#include <errno.h>
|
| +#include <stdio.h>
|
| +#include <time.h>
|
| +#include <X11/Xlib.h>
|
| +
|
| +void Sleep(int duration_ms) {
|
| + struct timespec sleep_time, remaining;
|
| +
|
| + // Contains the portion of duration_ms >= 1 sec.
|
| + sleep_time.tv_sec = duration_ms / 1000;
|
| + duration_ms -= sleep_time.tv_sec * 1000;
|
| +
|
| + // Contains the portion of duration_ms < 1 sec.
|
| + sleep_time.tv_nsec = duration_ms * 1000 * 1000; // nanoseconds.
|
| +
|
| + while (nanosleep(&sleep_time, &remaining) == -1 && errno == EINTR)
|
| + sleep_time = remaining;
|
| +}
|
| +
|
| +int main(int argc, char* argv[]) {
|
| + int kNumTries = 50;
|
| + for (int i = 0; i < kNumTries; ++i) {
|
| + Display* display = XOpenDisplay(NULL);
|
| + if (display)
|
| + return 0;
|
| + Sleep(100);
|
| + }
|
| +
|
| + printf("Failed to connect to %s\n", XDisplayName(NULL));
|
| + return -1;
|
| +}
|
|
|