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 "ui/gfx/x/x11_error_tracker.h"
7 #include "base/logging.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
;
24 X11ErrorTracker::X11ErrorTracker() {
25 // This is a poor-man's check for incorrect usage. It disallows nested
26 // X11ErrorTracker instances on the same thread.
27 DCHECK(g_handler
== NULL
);
29 XSync(GetXDisplay(), False
);
30 old_handler_
= XSetErrorHandler(X11ErrorHandler
);
34 X11ErrorTracker::~X11ErrorTracker() {
36 XSetErrorHandler(old_handler_
);
39 bool X11ErrorTracker::FoundNewError() {
40 XSync(GetXDisplay(), False
);
41 unsigned char error
= g_x11_error_code
;