From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Thu, 20 Sep 2018 17:50:17 -0700 Subject: allow_nested_error_trackers.patch Only one X11ErrorTracker should exist at a time, but upstream has a bug where two can exist if running in headless mode -- ui::(anonymous namespace)::SupportsEWMH() [inner tracker is created] ui::WmSupportsHint() ui::IsX11WindowFullScreen() ui::ScreensaverWindowFinder::IsScreensaverWindow() ui::ScreensaverWindowFinder::ShouldStopIterating() ui::EnumerateTopLevelWindows() ui::ScreensaverWindowFinder::ScreensaverWindowExists() [outer tracker created] ui::CheckIdleStateIsLocked() ui::CalculateIdleState() Removal of either tracker could have side-effects in some code paths, so this is probably better handled upstream. This patch tries to do the least harm in the interim by removing the check that prevents more than one tracker from existing at a time. diff --git a/ui/gfx/x/x11_error_tracker.cc b/ui/gfx/x/x11_error_tracker.cc index af031de356c5e0938fd3b84a494e48dc9a0e0476..2a5c18dc473a4f88fc0427bec69142917159bbd9 100644 --- a/ui/gfx/x/x11_error_tracker.cc +++ b/ui/gfx/x/x11_error_tracker.cc @@ -24,7 +24,7 @@ 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 == NULL); + // DCHECK(g_handler == NULL); g_handler = this; XSync(GetXDisplay(), False); old_handler_ = XSetErrorHandler(X11ErrorHandler);