blob: 7286c096499b3ed9e01be1fc7ef5187afca1e5ee (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/exo/wayland/wl_output.h"
#include <wayland-server-core.h>
#include <wayland-server-protocol-core.h>
#include "components/exo/wayland/server_util.h"
#include "components/exo/wayland/wayland_display_observer.h"
#include "components/exo/wayland/wayland_display_output.h"
#include "components/exo/wm_helper.h"
#include "ui/display/display.h"
#include "ui/display/manager/display_manager.h"
#include "ui/display/manager/managed_display_info.h"
#include "ui/display/screen.h"
namespace exo {
namespace wayland {
////////////////////////////////////////////////////////////////////////////////
// wl_output_interface:
void output_release(wl_client* client, wl_resource* resource) {
wl_resource_destroy(resource);
}
const struct wl_output_interface output_implementation = {output_release};
void bind_output(wl_client* client,
void* data,
uint32_t version,
uint32_t output_id) {
WaylandDisplayOutput* output = static_cast<WaylandDisplayOutput*>(data);
wl_resource* resource =
wl_resource_create(client, &wl_output_interface,
std::min(version, kWlOutputVersion), output_id);
auto handler = std::make_unique<WaylandDisplayHandler>(output, resource);
handler->Initialize();
SetImplementation(resource, &output_implementation, std::move(handler));
}
} // namespace wayland
} // namespace exo
|