Chromium Code Reviews| Index: ui/wayland/wayland_screen.cc |
| diff --git a/ui/wayland/wayland_screen.cc b/ui/wayland/wayland_screen.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..21e80ce50d1b6fabfc7c8fbff41b8558c70246b1 |
| --- /dev/null |
| +++ b/ui/wayland/wayland_screen.cc |
| @@ -0,0 +1,78 @@ |
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "ui/wayland/wayland_screen.h" |
| + |
| +#include <wayland-client.h> |
| + |
| +#include "ui/wayland/wayland_display.h" |
| + |
| +namespace ui { |
| + |
| +WaylandScreen::WaylandScreen(WaylandDisplay* display, uint32_t id) |
| + : output_(NULL), |
| + display_(display) { |
| + static const wl_output_listener kOutputListener = { |
|
tfarina
2011/07/25 18:34:27
This body should be indent just 2 spaces.
|
| + WaylandScreen::OutputHandleGeometry, |
| + WaylandScreen::OutputHandleMode, |
| + }; |
| + |
| + output_ = wl_output_create(display_->GetNativeDisplay(), id, 1); |
| + wl_output_add_listener(output_, &kOutputListener, this); |
| +} |
| + |
| +WaylandScreen::~WaylandScreen() { |
| + if (output_) |
| + wl_output_destroy(output_); |
| +} |
| + |
| +gfx::Rect WaylandScreen::GetAllocation() const { |
| + gfx::Rect allocation; |
| + allocation.set_origin(position_); |
| + |
| + // Find the active mode and pass its dimensions |
|
tfarina
2011/07/25 18:34:27
period.
|
| + for (Modes::const_iterator it = modes_.begin(); it != modes_.end(); it++) { |
|
tfarina
2011/07/25 18:34:27
just |i| instead of |it| is fine.
tfarina
2011/07/25 18:34:27
++i
|
| + if ((*it).flags & WL_OUTPUT_MODE_CURRENT) { |
| + allocation.set_width((*it).width); |
| + allocation.set_height((*it).height); |
| + break; |
| + } |
| + } |
| + |
| + return allocation; |
| +} |
| + |
| +// static |
| +void WaylandScreen::OutputHandleGeometry(void* data, |
| + wl_output* output, |
| + int32_t x, |
| + int32_t y, |
| + int32_t physical_width, |
| + int32_t physical_height, |
| + int32_t subpixel, |
| + const char* make, |
| + const char* model) { |
| + WaylandScreen* screen = static_cast<WaylandScreen*>(data); |
| + screen->position_.SetPoint(x, y); |
| +} |
| + |
| +// static |
| +void WaylandScreen::OutputHandleMode(void* data, |
| + wl_output* wl_output, |
| + uint32_t flags, |
| + int32_t width, |
| + int32_t height, |
| + int32_t refresh) { |
| + WaylandScreen* screen = static_cast<WaylandScreen*>(data); |
| + |
| + Mode mode; |
| + mode.width = width; |
| + mode.height = height; |
| + mode.refresh = refresh; |
| + mode.flags = flags; |
| + |
| + screen->modes_.push_back(mode); |
| +} |
| + |
| +} // namespace ui |