Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1760)

Unified Diff: chromeos/display/output_configurator.cc

Issue 120223003: Support failing modeset (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chromeos/display/output_configurator.cc
diff --git a/chromeos/display/output_configurator.cc b/chromeos/display/output_configurator.cc
index 67da273b64965469c0b9d252e2e64e3c8ab16158..3e2c836ffbdd2dc3891380983a54500dcda4db1e 100644
--- a/chromeos/display/output_configurator.cc
+++ b/chromeos/display/output_configurator.cc
@@ -943,7 +943,7 @@ bool OutputConfigurator::EnterState(
DCHECK_EQ(cached_outputs_.size(), updated_outputs.size());
if (!updated_outputs.empty()) {
delegate_->CreateFrameBuffer(width, height, updated_outputs);
- for (size_t i = 0; i < updated_outputs.size(); ++i) {
+ for (size_t i = 0; i < updated_outputs.size(); ) {
Daniel Erat 2013/12/21 14:25:54 please structure this code in a more logical way:
const OutputSnapshot& output = updated_outputs[i];
if (delegate_->ConfigureCrtc(output.crtc, output.current_mode,
output.output, output.x, output.y)) {
@@ -956,7 +956,24 @@ bool OutputConfigurator::EnterState(
<< " output=" << output.output
<< " x=" << output.x
<< " y=" << output.y;
+
+ int best_mode_pixels = 0;
+ const ModeInfo mode_info =
+ output.mode_infos.find(output.current_mode)->second;
Daniel Erat 2013/12/21 14:25:54 indent 4 spaces, not 7
+ int pixels = mode_info.width * mode_info.height;
Daniel Erat 2013/12/21 14:25:54 give this a better name like current_mode_pixels
+ for (ModeInfoMap::const_iterator it = output.mode_infos.begin();
+ it != output.mode_infos.end(); it++) {
+ int pixel_count = it->second.width * it->second.height;
+ if ((pixel_count < pixels) && (pixel_count > best_mode_pixels)) {
+ updated_outputs[i].current_mode = it->first;
+ best_mode_pixels = pixel_count;
+ }
+ }
marcheu 2013/12/21 01:56:15 If we are in mirror mode, and modeset fails on one
+
+ if (best_mode_pixels != 0)
+ continue;
Daniel Erat 2013/12/21 14:25:54 indent 2 spaces, not 0
}
+ i++;
}
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698