Chromium Code Reviews| 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; |
| } |