Chromium Code Reviews| Index: ui/aura/display_change_observer_x11.cc |
| diff --git a/ui/aura/display_change_observer_x11.cc b/ui/aura/display_change_observer_x11.cc |
| index 0d863803135f1182ac2db5d6bb75d139af9b12fa..71445b13db4538935508e76c91a49d66c8894478 100644 |
| --- a/ui/aura/display_change_observer_x11.cc |
| +++ b/ui/aura/display_change_observer_x11.cc |
| @@ -15,6 +15,7 @@ |
| #include "ui/aura/dispatcher_linux.h" |
| #include "ui/aura/env.h" |
| #include "ui/aura/display_manager.h" |
| +#include "ui/base/x/x11_util.h" |
| #include "ui/compositor/dip_util.h" |
| #include "ui/gfx/display.h" |
| @@ -150,6 +151,17 @@ void DisplayChangeObserverX11::NotifyDisplayChange() { |
| kHighDensityDIPThreshold) { |
| device_scale_factor = 2.0f; |
| } |
| + |
| + uint16 manufacturer_id = 0; |
| + uint32 serial_number = 0; |
| + if (ui::GetOutputDeviceData(screen_resources->outputs[o], &manufacturer_id, |
| + &serial_number, NULL) && manufacturer_id != 0) { |
| + // An ID based on display's index will be assigned later if this call |
| + // fails. |
| + displays.back().set_id( |
| + gfx::Display::GetID(manufacturer_id, serial_number)); |
|
Daniel Erat
2012/08/17 14:33:46
Maybe I'm being overly paranoid here, but I wonder
Jun Mukai
2012/08/20 05:56:38
Hmm, I see. Added a check code so that index-base
|
| + } |
| + |
| displays.back().set_device_scale_factor(device_scale_factor); |
| y_coords.insert(crtc_info->y); |
| XRRFreeOutputInfo(output_info); |
| @@ -165,11 +177,14 @@ void DisplayChangeObserverX11::NotifyDisplayChange() { |
| // PowerManager lays out the outputs vertically. Sort them by Y |
| // coordinates. |
| std::sort(displays.begin(), displays.end(), CompareDisplayY); |
| - // TODO(oshima): Assisgn index as ID for now. Use unique ID. |
| int id = 0; |
| for (std::vector<gfx::Display>::iterator iter = displays.begin(); |
| - iter != displays.end(); ++iter, ++id) |
| - (*iter).set_id(id); |
| + iter != displays.end(); ++iter) { |
| + if (iter->id() == gfx::Display::kInvalidID) { |
| + iter->set_id(id); |
| + ++id; |
| + } |
| + } |
| Env::GetInstance()->display_manager()->OnNativeDisplaysChanged(displays); |
| } |