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

Side by Side Diff: ui/display/chromeos/x11/native_display_delegate_x11.cc

Issue 667753002: Treat displays with and without EDID the same way (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 months 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 unified diff | Download patch
OLDNEW
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/display/chromeos/x11/native_display_delegate_x11.h" 5 #include "ui/display/chromeos/x11/native_display_delegate_x11.h"
6 6
7 #include <X11/Xatom.h> 7 #include <X11/Xatom.h>
8 #include <X11/Xlib.h> 8 #include <X11/Xlib.h>
9 #include <X11/extensions/dpms.h> 9 #include <X11/extensions/dpms.h>
10 #include <X11/extensions/Xrandr.h> 10 #include <X11/extensions/Xrandr.h>
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 info.id))); 301 info.id)));
302 } 302 }
303 } 303 }
304 304
305 DisplaySnapshotX11* NativeDisplayDelegateX11::InitDisplaySnapshot( 305 DisplaySnapshotX11* NativeDisplayDelegateX11::InitDisplaySnapshot(
306 RROutput output, 306 RROutput output,
307 XRROutputInfo* info, 307 XRROutputInfo* info,
308 RRCrtc* last_used_crtc, 308 RRCrtc* last_used_crtc,
309 int index) { 309 int index) {
310 int64_t display_id = 0; 310 int64_t display_id = 0;
311 bool has_display_id = GetDisplayId( 311 if (!GetDisplayId(output, static_cast<uint8_t>(index), &display_id))
312 output, static_cast<uint8_t>(index), &display_id); 312 display_id = index;
313 313
314 bool has_overscan = false; 314 bool has_overscan = false;
315 GetOutputOverscanFlag(output, &has_overscan); 315 GetOutputOverscanFlag(output, &has_overscan);
316 316
317 DisplayConnectionType type = GetDisplayConnectionTypeFromName(info->name); 317 DisplayConnectionType type = GetDisplayConnectionTypeFromName(info->name);
318 if (type == DISPLAY_CONNECTION_TYPE_UNKNOWN) 318 if (type == DISPLAY_CONNECTION_TYPE_UNKNOWN)
319 LOG(ERROR) << "Unknown link type: " << info->name; 319 LOG(ERROR) << "Unknown link type: " << info->name;
320 320
321 // Use the index as a valid display ID even if the internal
322 // display doesn't have valid EDID because the index
323 // will never change.
324 if (!has_display_id) {
325 if (type == DISPLAY_CONNECTION_TYPE_INTERNAL)
326 has_display_id = true;
327
328 // Fallback to output index.
329 display_id = index;
330 }
331
332 RRMode native_mode_id = GetOutputNativeMode(info); 321 RRMode native_mode_id = GetOutputNativeMode(info);
333 RRMode current_mode_id = None; 322 RRMode current_mode_id = None;
334 gfx::Point origin; 323 gfx::Point origin;
335 if (info->crtc) { 324 if (info->crtc) {
336 XRRCrtcInfo* crtc_info = XRRGetCrtcInfo(display_, screen_, info->crtc); 325 XRRCrtcInfo* crtc_info = XRRGetCrtcInfo(display_, screen_, info->crtc);
337 current_mode_id = crtc_info->mode; 326 current_mode_id = crtc_info->mode;
338 origin.SetPoint(crtc_info->x, crtc_info->y); 327 origin.SetPoint(crtc_info->x, crtc_info->y);
339 XRRFreeCrtcInfo(crtc_info); 328 XRRFreeCrtcInfo(crtc_info);
340 } 329 }
341 330
(...skipping 20 matching lines...) Expand all
362 current_mode = display_modes.back(); 351 current_mode = display_modes.back();
363 if (mode == native_mode_id) 352 if (mode == native_mode_id)
364 native_mode = display_modes.back(); 353 native_mode = display_modes.back();
365 } else { 354 } else {
366 LOG(WARNING) << "Unable to find XRRModeInfo for mode " << mode; 355 LOG(WARNING) << "Unable to find XRRModeInfo for mode " << mode;
367 } 356 }
368 } 357 }
369 358
370 DisplaySnapshotX11* display_snapshot = 359 DisplaySnapshotX11* display_snapshot =
371 new DisplaySnapshotX11(display_id, 360 new DisplaySnapshotX11(display_id,
372 has_display_id,
373 origin, 361 origin,
374 gfx::Size(info->mm_width, info->mm_height), 362 gfx::Size(info->mm_width, info->mm_height),
375 type, 363 type,
376 IsOutputAspectPreservingScaling(output), 364 IsOutputAspectPreservingScaling(output),
377 has_overscan, 365 has_overscan,
378 GetDisplayName(output), 366 GetDisplayName(output),
379 display_modes, 367 display_modes,
380 current_mode, 368 current_mode,
381 native_mode, 369 native_mode,
382 output, 370 output,
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
642 XSetForeground(display_, gc, color.pixel); 630 XSetForeground(display_, gc, color.pixel);
643 XSetFillStyle(display_, gc, FillSolid); 631 XSetFillStyle(display_, gc, FillSolid);
644 int width = DisplayWidth(display_, DefaultScreen(display_)); 632 int width = DisplayWidth(display_, DefaultScreen(display_));
645 int height = DisplayHeight(display_, DefaultScreen(display_)); 633 int height = DisplayHeight(display_, DefaultScreen(display_));
646 XFillRectangle(display_, window_, gc, 0, 0, width, height); 634 XFillRectangle(display_, window_, gc, 0, 0, width, height);
647 XFreeGC(display_, gc); 635 XFreeGC(display_, gc);
648 XFreeColors(display_, colormap, &color.pixel, 1, 0); 636 XFreeColors(display_, colormap, &color.pixel, 1, 0);
649 } 637 }
650 638
651 } // namespace ui 639 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698