Index: ui/base/x/x11_util.cc |
diff --git a/ui/base/x/x11_util.cc b/ui/base/x/x11_util.cc |
index ec6b5363d72403d266c487e9e625a49ff7751e1d..c0bf8a06daa95a7fc0a3ae305dfafc98db5c8113 100644 |
--- a/ui/base/x/x11_util.cc |
+++ b/ui/base/x/x11_util.cc |
@@ -1436,11 +1436,9 @@ XVisualManager::XVisualManager() |
using_compositing_wm_ = XGetSelectionOwner(display_, NET_WM_CM_S0) != None; |
// Choose the opaque visual. |
- XWindowAttributes attribs; |
- Window root = XDefaultRootWindow(display_); |
- Status status = XGetWindowAttributes(display_, root, &attribs); |
- DCHECK_NE(0, status); |
- system_visual_id_ = attribs.visual->visualid; |
+ default_visual_id_ = |
+ XVisualIDFromVisual(DefaultVisual(display_, DefaultScreen(display_))); |
+ system_visual_id_ = default_visual_id_; |
Daniel Erat
2016/11/02 15:14:46
i was initially confused about why there are two m
Tom (Use chromium acct)
2016/11/02 17:38:58
Added a small comment in x11_util_internal.h to cl
|
DCHECK(system_visual_id_); |
DCHECK(visuals_.find(system_visual_id_) != visuals_.end()); |
@@ -1470,15 +1468,20 @@ void XVisualManager::ChooseVisualForWindow(bool want_argb_visual, |
bool* using_argb_visual) { |
bool use_argb = want_argb_visual && using_compositing_wm_ && |
(using_software_rendering_ || have_gpu_argb_visual_); |
- XVisualData& visual_data = |
- *visuals_[use_argb && transparent_visual_id_ ? transparent_visual_id_ |
- : system_visual_id_]; |
+ VisualID visual_id = use_argb && transparent_visual_id_ |
+ ? transparent_visual_id_ |
+ : system_visual_id_; |
+ XVisualData& visual_data = *visuals_[visual_id]; |
+ const XVisualInfo& visual_info = visual_data.visual_info; |
+ |
+ bool is_default_visual = visual_id == default_visual_id_; |
+ |
if (visual) |
- *visual = visual_data.visual_info.visual; |
+ *visual = is_default_visual ? CopyFromParent : visual_info.visual; |
if (depth) |
- *depth = visual_data.visual_info.depth; |
+ *depth = is_default_visual ? CopyFromParent : visual_info.depth; |
if (colormap) |
- *colormap = visual_data.GetColormap(); |
+ *colormap = is_default_visual ? CopyFromParent : visual_data.GetColormap(); |
if (using_argb_visual) |
*using_argb_visual = use_argb; |
} |