OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 #include "chromeos/display/output_util.h" | 5 #include "chromeos/display/output_util.h" |
6 | 6 |
7 #include <X11/Xlib.h> | 7 #include <X11/Xlib.h> |
8 #include <X11/extensions/Xrandr.h> | 8 #include <X11/extensions/Xrandr.h> |
9 #include <X11/Xatom.h> | 9 #include <X11/Xatom.h> |
10 | 10 |
(...skipping 21 matching lines...) Expand all Loading... |
32 uint32 product_code_hash, | 32 uint32 product_code_hash, |
33 uint8 output_index) { | 33 uint8 output_index) { |
34 return ((static_cast<int64>(manufacturer_id) << 40) | | 34 return ((static_cast<int64>(manufacturer_id) << 40) | |
35 (static_cast<int64>(product_code_hash) << 8) | output_index); | 35 (static_cast<int64>(product_code_hash) << 8) | output_index); |
36 } | 36 } |
37 | 37 |
38 bool IsRandRAvailable() { | 38 bool IsRandRAvailable() { |
39 int randr_version_major = 0; | 39 int randr_version_major = 0; |
40 int randr_version_minor = 0; | 40 int randr_version_minor = 0; |
41 static bool is_randr_available = XRRQueryVersion( | 41 static bool is_randr_available = XRRQueryVersion( |
42 base::MessagePumpAuraX11::GetDefaultXDisplay(), | 42 base::MessagePumpX11::GetDefaultXDisplay(), |
43 &randr_version_major, &randr_version_minor); | 43 &randr_version_major, &randr_version_minor); |
44 return is_randr_available; | 44 return is_randr_available; |
45 } | 45 } |
46 | 46 |
47 // Get the EDID data from the |output| and stores to |prop|. |nitem| will store | 47 // Get the EDID data from the |output| and stores to |prop|. |nitem| will store |
48 // the number of characters |prop| will have. It doesn't take the ownership of | 48 // the number of characters |prop| will have. It doesn't take the ownership of |
49 // |prop|, so caller must release it by XFree(). | 49 // |prop|, so caller must release it by XFree(). |
50 // Returns true if EDID property is successfully obtained. Otherwise returns | 50 // Returns true if EDID property is successfully obtained. Otherwise returns |
51 // false and does not touch |prop| and |nitems|. | 51 // false and does not touch |prop| and |nitems|. |
52 bool GetEDIDProperty(XID output, unsigned long* nitems, unsigned char** prop) { | 52 bool GetEDIDProperty(XID output, unsigned long* nitems, unsigned char** prop) { |
53 if (!IsRandRAvailable()) | 53 if (!IsRandRAvailable()) |
54 return false; | 54 return false; |
55 | 55 |
56 Display* display = base::MessagePumpAuraX11::GetDefaultXDisplay(); | 56 Display* display = base::MessagePumpX11::GetDefaultXDisplay(); |
57 | 57 |
58 static Atom edid_property = XInternAtom( | 58 static Atom edid_property = XInternAtom( |
59 base::MessagePumpAuraX11::GetDefaultXDisplay(), | 59 base::MessagePumpX11::GetDefaultXDisplay(), |
60 RR_PROPERTY_RANDR_EDID, false); | 60 RR_PROPERTY_RANDR_EDID, false); |
61 | 61 |
62 bool has_edid_property = false; | 62 bool has_edid_property = false; |
63 int num_properties = 0; | 63 int num_properties = 0; |
64 Atom* properties = XRRListOutputProperties(display, output, &num_properties); | 64 Atom* properties = XRRListOutputProperties(display, output, &num_properties); |
65 for (int i = 0; i < num_properties; ++i) { | 65 for (int i = 0; i < num_properties; ++i) { |
66 if (properties[i] == edid_property) { | 66 if (properties[i] == edid_property) { |
67 has_edid_property = true; | 67 has_edid_property = true; |
68 break; | 68 break; |
69 } | 69 } |
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
396 mode_info.hTotal = 1; | 396 mode_info.hTotal = 1; |
397 mode_info.vTotal = 1; | 397 mode_info.vTotal = 1; |
398 mode_info.dotClock = refresh_rate; | 398 mode_info.dotClock = refresh_rate; |
399 } | 399 } |
400 return mode_info; | 400 return mode_info; |
401 } | 401 } |
402 | 402 |
403 } // namespace test | 403 } // namespace test |
404 | 404 |
405 } // namespace chromeos | 405 } // namespace chromeos |
OLD | NEW |