Index: ui/display/chromeos/x11/native_display_delegate_x11.cc |
diff --git a/ui/display/chromeos/x11/native_display_delegate_x11.cc b/ui/display/chromeos/x11/native_display_delegate_x11.cc |
index 15b29d0b993c273a76fae7d9966dd857204c02ff..33a1400ff717f966ef0032676f6cb52e70256060 100644 |
--- a/ui/display/chromeos/x11/native_display_delegate_x11.cc |
+++ b/ui/display/chromeos/x11/native_display_delegate_x11.cc |
@@ -175,15 +175,15 @@ std::vector<DisplaySnapshot*> NativeDisplayDelegateX11::GetDisplays() { |
CHECK(screen_) << "Server not grabbed"; |
cached_outputs_.clear(); |
- RRCrtc last_used_crtc = None; |
+ std::set<RRCrtc> last_used_crtcs; |
InitModes(); |
- for (int i = 0; i < screen_->noutput && cached_outputs_.size() < 2; ++i) { |
+ for (int i = 0; i < screen_->noutput; ++i) { |
RROutput output_id = screen_->outputs[i]; |
XRROutputInfo* output_info = XRRGetOutputInfo(display_, screen_, output_id); |
if (output_info->connection == RR_Connected) { |
DisplaySnapshotX11* output = |
- InitDisplaySnapshot(output_id, output_info, &last_used_crtc, i); |
+ InitDisplaySnapshot(output_id, output_info, &last_used_crtcs, i); |
cached_outputs_.push_back(output); |
} |
XRRFreeOutputInfo(output_info); |
@@ -315,7 +315,7 @@ void NativeDisplayDelegateX11::InitModes() { |
DisplaySnapshotX11* NativeDisplayDelegateX11::InitDisplaySnapshot( |
RROutput output, |
XRROutputInfo* info, |
- RRCrtc* last_used_crtc, |
+ std::set<RRCrtc>* last_used_crtcs, |
int index) { |
int64_t display_id = 0; |
if (!GetDisplayId(output, static_cast<uint8_t>(index), &display_id)) |
@@ -341,9 +341,9 @@ DisplaySnapshotX11* NativeDisplayDelegateX11::InitDisplaySnapshot( |
RRCrtc crtc = None; |
// Assign a CRTC that isn't already in use. |
for (int i = 0; i < info->ncrtc; ++i) { |
- if (info->crtcs[i] != *last_used_crtc) { |
+ if (last_used_crtcs->find(info->crtcs[i]) == last_used_crtcs->end()) { |
crtc = info->crtcs[i]; |
- *last_used_crtc = crtc; |
+ last_used_crtcs->insert(crtc); |
break; |
} |
} |