summaryrefslogtreecommitdiffstats
path: root/ui/aura/monitor_change_observer_x11.cc
diff options
context:
space:
mode:
Diffstat (limited to 'ui/aura/monitor_change_observer_x11.cc')
-rw-r--r--ui/aura/monitor_change_observer_x11.cc24
1 files changed, 14 insertions, 10 deletions
diff --git a/ui/aura/monitor_change_observer_x11.cc b/ui/aura/monitor_change_observer_x11.cc
index bb2904f..3239022 100644
--- a/ui/aura/monitor_change_observer_x11.cc
+++ b/ui/aura/monitor_change_observer_x11.cc
@@ -12,11 +12,10 @@
#include <X11/extensions/Xrandr.h>
#include "base/message_pump_x.h"
-#include "base/stl_util.h"
#include "ui/aura/env.h"
#include "ui/aura/dispatcher_linux.h"
-#include "ui/aura/monitor.h"
#include "ui/aura/monitor_manager.h"
+#include "ui/gfx/monitor.h"
namespace aura {
namespace internal {
@@ -31,8 +30,8 @@ XRRModeInfo* FindMode(XRRScreenResources* screen_resources, XID current_mode) {
return NULL;
}
-bool CompareMonitorY(const Monitor* lhs, const Monitor* rhs) {
- return lhs->bounds().y() < rhs->bounds().y();
+bool CompareMonitorY(gfx::Monitor lhs, gfx::Monitor rhs) {
+ return lhs.bounds().y() < rhs.bounds().y();
}
} // namespace
@@ -77,7 +76,7 @@ void MonitorChangeObserverX11::NotifyMonitorChange() {
crtc_info_map[crtc_id] = crtc_info;
}
- std::vector<const Monitor*> monitors;
+ std::vector<gfx::Monitor> monitors;
std::set<int> y_coords;
for (int o = 0; o < screen_resources->noutput; o++) {
XRROutputInfo *output_info =
@@ -98,10 +97,10 @@ void MonitorChangeObserverX11::NotifyMonitorChange() {
// Mirrored monitors have the same y coordinates.
if (y_coords.find(crtc_info->y) != y_coords.end())
continue;
- Monitor* monitor = new Monitor;
- monitor->set_bounds(gfx::Rect(crtc_info->x, crtc_info->y,
- mode->width, mode->height));
- monitors.push_back(monitor);
+ // TODO(oshima): Create unique ID for the monitor.
+ monitors.push_back(gfx::Monitor(
+ 0,
+ gfx::Rect(crtc_info->x, crtc_info->y, mode->width, mode->height)));
y_coords.insert(crtc_info->y);
XRRFreeOutputInfo(output_info);
}
@@ -116,9 +115,14 @@ void MonitorChangeObserverX11::NotifyMonitorChange() {
// PowerManager lays out the outputs vertically. Sort them by Y
// coordinates.
std::sort(monitors.begin(), monitors.end(), CompareMonitorY);
+ // TODO(oshima): Assisgn index as ID for now. Use unique ID.
+ int id = 0;
+ for (std::vector<gfx::Monitor>::iterator iter = monitors.begin();
+ iter != monitors.end(); ++iter, ++id)
+ (*iter).set_id(id);
+
Env::GetInstance()->monitor_manager()
->OnNativeMonitorsChanged(monitors);
- STLDeleteContainerPointers(monitors.begin(), monitors.end());
}
} // namespace internal