Commit 96b5f2c3 authored by Tom Anderson's avatar Tom Anderson Committed by Commit Bot

[XProto] Remove bad DCHECK in x11_error_tracker.cc

After [1], gfx::GetXDisplay() returns a different display for each
thread.  This introduces a race condition since |g_handler| is shared
across all threads.

Since X11ErrorHandler will be removed soon anyway (since XProto uses a
different error-handling mechanism), this CL simply removes the
DCHECK().

[1] https://chromium-review.googlesource.com/c/chromium/src/+/2343314

BUG=1122006
R=sky

Change-Id: I1101a3456f4609481a1f204634102dac89bad0ab
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2402304
Auto-Submit: Thomas Anderson <thomasanderson@chromium.org>
Commit-Queue: Scott Violet <sky@chromium.org>
Reviewed-by: default avatarScott Violet <sky@chromium.org>
Cr-Commit-Position: refs/heads/master@{#805585}
parent aa3116de
......@@ -11,7 +11,6 @@
namespace {
unsigned char g_x11_error_code = 0;
static gfx::X11ErrorTracker* g_handler = nullptr;
int X11ErrorHandler(Display* display, XErrorEvent* error) {
g_x11_error_code = error->error_code;
......@@ -23,17 +22,12 @@ int X11ErrorHandler(Display* display, XErrorEvent* error) {
namespace gfx {
X11ErrorTracker::X11ErrorTracker() {
// This is a non-exhaustive check for incorrect usage. It disallows nested
// X11ErrorTracker instances on the same thread.
DCHECK(g_handler == nullptr);
g_handler = this;
XSync(GetXDisplay(), x11::False);
old_handler_ = reinterpret_cast<void*>(XSetErrorHandler(X11ErrorHandler));
g_x11_error_code = 0;
}
X11ErrorTracker::~X11ErrorTracker() {
g_handler = nullptr;
XSetErrorHandler(reinterpret_cast<XErrorHandler>(old_handler_));
}
......
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