| Index: ui/ozone/platform/dri/chromeos/display_message_handler.cc
|
| diff --git a/ui/ozone/platform/dri/chromeos/display_message_handler.cc b/ui/ozone/platform/dri/chromeos/display_message_handler.cc
|
| index fec666ef2b353e4940c7a1bc82a9ea7d7b5185eb..6e68b82aeea32d4a02e0ca47abad55da6f867e62 100644
|
| --- a/ui/ozone/platform/dri/chromeos/display_message_handler.cc
|
| +++ b/ui/ozone/platform/dri/chromeos/display_message_handler.cc
|
| @@ -13,6 +13,22 @@
|
|
|
| namespace ui {
|
|
|
| +namespace {
|
| +
|
| +class FindDisplayById {
|
| + public:
|
| + FindDisplayById(int64_t display_id) : display_id_(display_id) {}
|
| +
|
| + bool operator()(const DisplaySnapshot_Params& display) const {
|
| + return display.display_id == display_id_;
|
| + }
|
| +
|
| + private:
|
| + int64_t display_id_;
|
| +};
|
| +
|
| +} // namespace
|
| +
|
| DisplayMessageHandler::DisplayMessageHandler(
|
| scoped_ptr<NativeDisplayDelegateDri> ndd)
|
| : sender_(NULL),
|
| @@ -45,9 +61,28 @@ void DisplayMessageHandler::OnForceDPMSOn() {
|
| ndd_->ForceDPMSOn();
|
| }
|
|
|
| -void DisplayMessageHandler::OnRefreshNativeDisplays() {
|
| +void DisplayMessageHandler::OnRefreshNativeDisplays(
|
| + const std::vector<DisplaySnapshot_Params>& cached_displays) {
|
| std::vector<DisplaySnapshot_Params> displays;
|
| std::vector<DisplaySnapshot*> native_displays = ndd_->GetDisplays();
|
| +
|
| + // If any of the cached displays are in the list of new displays then apply
|
| + // their configuration immediately.
|
| + for (size_t i = 0; i < native_displays.size(); ++i) {
|
| + std::vector<DisplaySnapshot_Params>::const_iterator it =
|
| + std::find_if(cached_displays.begin(),
|
| + cached_displays.end(),
|
| + FindDisplayById(native_displays[i]->display_id()));
|
| +
|
| + if (it == cached_displays.end())
|
| + continue;
|
| +
|
| + if (it->has_current_mode)
|
| + OnConfigureNativeDisplay(it->display_id, it->current_mode, it->origin);
|
| + else
|
| + OnDisableNativeDisplay(it->display_id);
|
| + }
|
| +
|
| for (size_t i = 0; i < native_displays.size(); ++i)
|
| displays.push_back(GetDisplaySnapshotParams(*native_displays[i]));
|
|
|
|
|