1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Copyright 2013 Intel Corporation. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
6 #include "ozone/wayland/screen.h"
8 #include <wayland-client.h>
10 #include "ozone/impl/ozone_display.h"
11 #include "ozone/wayland/display.h"
13 namespace ozonewayland {
15 WaylandScreen::WaylandScreen(WaylandDisplay* display, uint32_t id)
17 static const wl_output_listener kOutputListener = {
18 WaylandScreen::OutputHandleGeometry,
19 WaylandScreen::OutputHandleMode,
22 output_ = static_cast<wl_output*>(
23 wl_registry_bind(display->registry(), id, &wl_output_interface, 1));
24 wl_output_add_listener(output_, &kOutputListener, this);
27 WaylandScreen::~WaylandScreen() {
29 wl_output_destroy(output_);
33 void WaylandScreen::OutputHandleGeometry(void *data,
37 int32_t physical_width,
38 int32_t physical_height,
42 int32_t output_transform) {
43 WaylandScreen* screen = static_cast<WaylandScreen*>(data);
44 gfx::Point point = gfx::Point(x, y);
45 screen->rect_.set_origin(point);
49 void WaylandScreen::OutputHandleMode(void* data,
55 WaylandScreen* screen = static_cast<WaylandScreen*>(data);
56 if (flags & WL_OUTPUT_MODE_CURRENT) {
57 screen->rect_.set_width(width);
58 screen->rect_.set_height(height);
59 screen->refresh_ = refresh;
60 OzoneDisplay::GetInstance()->OnOutputSizeChanged(screen, width, height);
64 } // namespace ozonewayland