blob: f90504616c7932b07f79084e93f247068394f093 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ui/ozone/common/display_snapshot_proxy.h"
#include "ui/ozone/common/display_mode_proxy.h"
#include "ui/ozone/common/gpu/ozone_gpu_message_params.h"
namespace ui {
namespace {
bool SameModes(const DisplayMode_Params& lhs, const DisplayMode_Params& rhs) {
return lhs.size == rhs.size && lhs.is_interlaced == rhs.is_interlaced &&
lhs.refresh_rate == rhs.refresh_rate;
}
// Exclude 4K@60kHz becaseu this doesn't work in most devices/configuration now.
// TODO(marcheu|oshima): Revisit this. crbug.com/39397
bool IsModeBlackListed(const DisplayMode_Params& mode_params) {
return mode_params.size.width() >= 3840 && mode_params.size.width() >= 2160 &&
mode_params.refresh_rate >= 60.0f;
}
} // namespace
DisplaySnapshotProxy::DisplaySnapshotProxy(const DisplaySnapshot_Params& params)
: DisplaySnapshot(params.display_id,
params.origin,
params.physical_size,
params.type,
std::vector<const DisplayMode*>(),
NULL,
NULL),
string_representation_(params.string_representation) {
for (size_t i = 0; i < params.modes.size(); ++i) {
const DisplayMode_Params& mode_params = params.modes[i];
if (IsModeBlackListed(mode_params))
continue;
modes_.push_back(new DisplayModeProxy(mode_params));
if (params.has_current_mode &&
SameModes(params.modes[i], params.current_mode))
current_mode_ = modes_.back();
if (params.has_native_mode &&
SameModes(params.modes[i], params.native_mode))
native_mode_ = modes_.back();
}
product_id_ = params.product_id;
}
DisplaySnapshotProxy::~DisplaySnapshotProxy() {
}
std::string DisplaySnapshotProxy::ToString() const {
return string_representation_;
}
} // namespace ui