1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "base/logging.h"
6 #include "ui/gfx/x/x11_error_tracker.h"
8 #include "ui/gfx/x/x11_types.h"
12 unsigned char g_x11_error_code
= 0;
13 static gfx::X11ErrorTracker
* g_handler
= NULL
;
15 int X11ErrorHandler(Display
* display
, XErrorEvent
* error
) {
16 g_x11_error_code
= error
->error_code
;
23 X11ErrorTracker::X11ErrorTracker() {
24 // This is a poor-man's check for incorrect usage. It disallows nested
25 // X11ErrorTracker instances on the same thread.
26 DCHECK(g_handler
== NULL
);
28 XSync(GetXDisplay(), False
);
29 old_handler_
= XSetErrorHandler(X11ErrorHandler
);
33 X11ErrorTracker::~X11ErrorTracker() {
35 XSetErrorHandler(old_handler_
);
38 bool X11ErrorTracker::FoundNewError() {
39 XSync(GetXDisplay(), False
);
40 unsigned char error
= g_x11_error_code
;