Commit 388e66ef authored by Tom Anderson's avatar Tom Anderson Committed by Commit Bot

Remove xdisplaycheck

Nothing references the build target, so it should be safe to remove.

xvfb.py now has its own check:
https://source.chromium.org/chromium/chromium/src/+/master:testing/xvfb.py;l=172?q=xvfb.py&ss=chromium
Also we now have xwmstartupcheck, which checks that the WM (openbox)
is running, which implies the X server is up and running.

BUG=1066670

Change-Id: I175df13aef8515e9cc39e0baf8db00c74c6f5cc0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2373175
Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
Reviewed-by: default avatarDirk Pranke <dpranke@google.com>
Cr-Commit-Position: refs/heads/master@{#801389}
parent 1f13259c
# Copyright 2014 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.
executable("xdisplaycheck") {
sources = [ "xdisplaycheck.cc" ]
configs += [ "//build/config/linux:x11" ]
}
// Copyright (c) 2012 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 30 seconds pass. If it fails
// to connect to the X server or fails to find needed functiona, it returns
// an error code of -1.
//
// This is to help verify that a useful X server is available before we start
// start running tests on the build bots.
#include <errno.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <X11/Xlib.h>
#if defined(USE_AURA)
#include <X11/extensions/XInput2.h>
#endif
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;
}
class XScopedDisplay {
public:
XScopedDisplay() : display_(nullptr) {}
~XScopedDisplay() {
if (display_) XCloseDisplay(display_);
}
void set(Display* display) { display_ = display; }
Display* display() { return display_; }
private:
Display* display_;
};
int main(int argc, char* argv[]) {
XScopedDisplay scoped_display;
if (argv[1] && strcmp(argv[1], "--noserver") == 0) {
scoped_display.set(XOpenDisplay(NULL));
if (scoped_display.display()) {
fprintf(stderr, "Found unexpected connectable display %s\n",
XDisplayName(NULL));
}
// Return success when we got an unexpected display so that the code
// without the --noserver is the same, but slow, rather than inverted.
return !scoped_display.display();
}
int kNumTries = 78; // 78*77/2 * 10 = 30s of waiting
int tries;
for (tries = 0; tries < kNumTries; ++tries) {
scoped_display.set(XOpenDisplay(NULL));
if (scoped_display.display())
break;
Sleep(10 * tries);
}
if (!scoped_display.display()) {
fprintf(stderr, "Failed to connect to %s\n", XDisplayName(NULL));
return -1;
}
fprintf(stderr, "Connected after %d retries\n", tries);
#if defined(USE_AURA)
// Check for XInput2
int opcode, event, err;
if (!XQueryExtension(scoped_display.display(), "XInputExtension", &opcode,
&event, &err)) {
fprintf(stderr,
"Failed to get XInputExtension on %s.\n", XDisplayName(NULL));
return -2;
}
int major = 2, minor = 0;
if (XIQueryVersion(scoped_display.display(), &major, &minor) == BadRequest) {
fprintf(stderr,
"Server does not have XInput2 on %s.\n", XDisplayName(NULL));
return -3;
}
// Ask for the list of devices. This can cause some Xvfb to crash.
int count = 0;
XIDeviceInfo* devices =
XIQueryDevice(scoped_display.display(), XIAllDevices, &count);
if (devices)
XIFreeDeviceInfo(devices);
fprintf(stderr,
"XInput2 verified initially sane on %s.\n", XDisplayName(NULL));
#endif
return 0;
}
#if defined(LEAK_SANITIZER)
// XOpenDisplay leaks memory if it takes more than one try to connect. This
// causes LSan bots to fail. We don't care about memory leaks in xdisplaycheck
// anyway, so just disable LSan completely.
// This function isn't referenced from the executable itself. Make sure it isn't
// stripped by the linker.
__attribute__((used))
__attribute__((visibility("default")))
extern "C" int __lsan_is_turned_off() { return 1; }
#endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment