Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // This file defines utility functions for X11 (Linux only). This code has been | 5 // This file defines utility functions for X11 (Linux only). This code has been |
| 6 // ported from XCB since we can't use XCB on Ubuntu while its 32-bit support | 6 // ported from XCB since we can't use XCB on Ubuntu while its 32-bit support |
| 7 // remains woefully incomplete. | 7 // remains woefully incomplete. |
| 8 | 8 |
| 9 #include "ui/base/x/x11_util.h" | 9 #include "ui/base/x/x11_util.h" |
| 10 | 10 |
| (...skipping 1402 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1413 << " (" << request_str << ")"; | 1413 << " (" << request_str << ")"; |
| 1414 } | 1414 } |
| 1415 | 1415 |
| 1416 #if !defined(OS_CHROMEOS) | 1416 #if !defined(OS_CHROMEOS) |
| 1417 void ChooseVisualForWindow(Visual** visual, int* depth) { | 1417 void ChooseVisualForWindow(Visual** visual, int* depth) { |
| 1418 static Visual* s_visual = NULL; | 1418 static Visual* s_visual = NULL; |
| 1419 static int s_depth = 0; | 1419 static int s_depth = 0; |
| 1420 | 1420 |
| 1421 if (!s_visual) { | 1421 if (!s_visual) { |
| 1422 XDisplay* display = gfx::GetXDisplay(); | 1422 XDisplay* display = gfx::GetXDisplay(); |
| 1423 XAtom NET_WM_CM_S0 = XInternAtom(display, "_NET_WM_CM_S0", False); | 1423 |
| 1424 // Xvfb support 32 bit depths. But for some reasons NET_WM_CM_S0 it not set | |
| 1425 // so at check for Composite extension instead. | |
| 1426 int opcode = 0; | |
| 1427 int eventb = 0; | |
| 1428 int errorb = 0; | |
| 1429 bool has_composite_ext = | |
| 1430 XQueryExtension(display, "Composite", &opcode, &eventb, &errorb); | |
| 1431 // XAtom NET_WM_CM_S0 = XInternAtom(display, "_NET_WM_CM_S0", False); | |
|
piman
2016/05/20 20:40:38
This is not right. The Composite extension may exi
| |
| 1424 | 1432 |
| 1425 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | 1433 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 1426 switches::kEnableTransparentVisuals) && | 1434 switches::kEnableTransparentVisuals) && |
| 1427 XGetSelectionOwner(display, NET_WM_CM_S0) != None) { | 1435 has_composite_ext) { |
| 1428 // Choose the first ARGB8888 visual | 1436 // Choose the first ARGB8888 visual |
| 1429 XVisualInfo visual_template; | 1437 XVisualInfo visual_template; |
| 1430 visual_template.screen = 0; | 1438 visual_template.screen = 0; |
| 1431 | 1439 |
| 1432 int visuals_len; | 1440 int visuals_len; |
| 1433 gfx::XScopedPtr<XVisualInfo[]> visual_list(XGetVisualInfo( | 1441 gfx::XScopedPtr<XVisualInfo[]> visual_list(XGetVisualInfo( |
| 1434 display, VisualScreenMask, &visual_template, &visuals_len)); | 1442 display, VisualScreenMask, &visual_template, &visuals_len)); |
| 1435 for (int i = 0; i < visuals_len; ++i) { | 1443 for (int i = 0; i < visuals_len; ++i) { |
| 1436 // Why support only 8888 ARGB? Because it's all that GTK+ supports. In | 1444 // Why support only 8888 ARGB? Because it's all that GTK+ supports. In |
| 1437 // gdkvisual-x11.cc, they look for this specific visual and use it for | 1445 // gdkvisual-x11.cc, they look for this specific visual and use it for |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1469 if (depth) | 1477 if (depth) |
| 1470 *depth = s_depth; | 1478 *depth = s_depth; |
| 1471 } | 1479 } |
| 1472 #endif | 1480 #endif |
| 1473 | 1481 |
| 1474 // ---------------------------------------------------------------------------- | 1482 // ---------------------------------------------------------------------------- |
| 1475 // End of x11_util_internal.h | 1483 // End of x11_util_internal.h |
| 1476 | 1484 |
| 1477 | 1485 |
| 1478 } // namespace ui | 1486 } // namespace ui |
| OLD | NEW |