| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 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 "ui/ozone/platform/dri/chromeos/native_display_delegate_dri.h" | 5 #include "ui/ozone/platform/dri/chromeos/native_display_delegate_dri.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "third_party/skia/include/core/SkCanvas.h" | 8 #include "third_party/skia/include/core/SkCanvas.h" |
| 9 #include "ui/display/types/chromeos/native_display_observer.h" | 9 #include "ui/display/types/chromeos/native_display_observer.h" |
| 10 #include "ui/events/ozone/device/device_event.h" | 10 #include "ui/events/ozone/device/device_event.h" |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 } | 45 } |
| 46 | 46 |
| 47 for (int i = 0; i < property->count_enums; ++i) | 47 for (int i = 0; i < property->count_enums; ++i) |
| 48 if (name == property->enums[i].name) | 48 if (name == property->enums[i].name) |
| 49 return i; | 49 return i; |
| 50 | 50 |
| 51 NOTREACHED(); | 51 NOTREACHED(); |
| 52 return 0; | 52 return 0; |
| 53 } | 53 } |
| 54 | 54 |
| 55 class DisplaySnapshotComparator { | |
| 56 public: | |
| 57 DisplaySnapshotComparator(const DisplaySnapshotDri* snapshot) | |
| 58 : snapshot_(snapshot) {} | |
| 59 | |
| 60 bool operator()(const DisplaySnapshotDri* other) const { | |
| 61 if (snapshot_->connector() == other->connector() && | |
| 62 snapshot_->crtc() == other->crtc()) | |
| 63 return true; | |
| 64 | |
| 65 return false; | |
| 66 } | |
| 67 | |
| 68 private: | |
| 69 const DisplaySnapshotDri* snapshot_; | |
| 70 }; | |
| 71 | |
| 72 } // namespace | 55 } // namespace |
| 73 | 56 |
| 74 NativeDisplayDelegateDri::NativeDisplayDelegateDri( | 57 NativeDisplayDelegateDri::NativeDisplayDelegateDri( |
| 75 DriWrapper* dri, | 58 DriWrapper* dri, |
| 76 ScreenManager* screen_manager, | 59 ScreenManager* screen_manager, |
| 77 DeviceManager* device_manager) | 60 DeviceManager* device_manager) |
| 78 : dri_(dri), | 61 : dri_(dri), |
| 79 screen_manager_(screen_manager), | 62 screen_manager_(screen_manager), |
| 80 device_manager_(device_manager) { | 63 device_manager_(device_manager) { |
| 81 } | 64 } |
| (...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 298 VLOG(1) << "Got display changed event"; | 281 VLOG(1) << "Got display changed event"; |
| 299 FOR_EACH_OBSERVER( | 282 FOR_EACH_OBSERVER( |
| 300 NativeDisplayObserver, observers_, OnConfigurationChanged()); | 283 NativeDisplayObserver, observers_, OnConfigurationChanged()); |
| 301 } | 284 } |
| 302 } | 285 } |
| 303 | 286 |
| 304 void NativeDisplayDelegateDri::NotifyScreenManager( | 287 void NativeDisplayDelegateDri::NotifyScreenManager( |
| 305 const std::vector<DisplaySnapshotDri*>& new_displays, | 288 const std::vector<DisplaySnapshotDri*>& new_displays, |
| 306 const std::vector<DisplaySnapshotDri*>& old_displays) const { | 289 const std::vector<DisplaySnapshotDri*>& old_displays) const { |
| 307 for (size_t i = 0; i < old_displays.size(); ++i) { | 290 for (size_t i = 0; i < old_displays.size(); ++i) { |
| 308 const std::vector<DisplaySnapshotDri*>::const_iterator it = | 291 bool found = false; |
| 309 std::find_if(new_displays.begin(), | 292 for (size_t j = 0; j < new_displays.size(); ++j) { |
| 310 new_displays.end(), | 293 if (old_displays[i]->connector() == new_displays[j]->connector() && |
| 311 DisplaySnapshotComparator(old_displays[i])); | 294 old_displays[i]->crtc() == new_displays[j]->crtc()) { |
| 295 found = true; |
| 296 break; |
| 297 } |
| 298 } |
| 312 | 299 |
| 313 if (it == new_displays.end()) | 300 if (!found) |
| 314 screen_manager_->RemoveDisplayController(old_displays[i]->crtc()); | 301 screen_manager_->RemoveDisplayController(old_displays[i]->crtc()); |
| 315 } | 302 } |
| 316 | |
| 317 for (size_t i = 0; i < new_displays.size(); ++i) { | |
| 318 const std::vector<DisplaySnapshotDri*>::const_iterator it = | |
| 319 std::find_if(old_displays.begin(), | |
| 320 old_displays.end(), | |
| 321 DisplaySnapshotComparator(new_displays[i])); | |
| 322 | |
| 323 if (it == old_displays.end()) | |
| 324 screen_manager_->AddDisplayController(new_displays[i]->crtc(), | |
| 325 new_displays[i]->connector()); | |
| 326 } | |
| 327 } | 303 } |
| 328 | 304 |
| 329 } // namespace ui | 305 } // namespace ui |
| OLD | NEW |