1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "ui/ozone/common/display_snapshot_proxy.h"
7 #include "ui/ozone/common/display_mode_proxy.h"
8 #include "ui/ozone/common/gpu/ozone_gpu_message_params.h"
14 bool SameModes(const DisplayMode_Params
& lhs
, const DisplayMode_Params
& rhs
) {
15 return lhs
.size
== rhs
.size
&& lhs
.is_interlaced
== rhs
.is_interlaced
&&
16 lhs
.refresh_rate
== rhs
.refresh_rate
;
19 // Exclude 4K@60kHz becaseu this doesn't work in most devices/configuration now.
20 // TODO(marcheu|oshima): Revisit this. crbug.com/39397
21 bool IsModeBlackListed(const DisplayMode_Params
& mode_params
) {
22 return mode_params
.size
.width() >= 3840 && mode_params
.size
.width() >= 2160 &&
23 mode_params
.refresh_rate
>= 60.0f
;
28 DisplaySnapshotProxy::DisplaySnapshotProxy(const DisplaySnapshot_Params
& params
)
29 : DisplaySnapshot(params
.display_id
,
33 params
.is_aspect_preserving_scaling
,
36 std::vector
<const DisplayMode
*>(),
39 string_representation_(params
.string_representation
) {
40 for (size_t i
= 0; i
< params
.modes
.size(); ++i
) {
41 const DisplayMode_Params
& mode_params
= params
.modes
[i
];
42 if (IsModeBlackListed(mode_params
))
44 modes_
.push_back(new DisplayModeProxy(mode_params
));
46 if (params
.has_current_mode
&&
47 SameModes(params
.modes
[i
], params
.current_mode
))
48 current_mode_
= modes_
.back();
50 if (params
.has_native_mode
&&
51 SameModes(params
.modes
[i
], params
.native_mode
))
52 native_mode_
= modes_
.back();
55 product_id_
= params
.product_id
;
58 DisplaySnapshotProxy::~DisplaySnapshotProxy() {
61 std::string
DisplaySnapshotProxy::ToString() const {
62 return string_representation_
;