GCC Code Coverage Report


Directory: ./
File: server/drm_lease_v1_p.h
Date: 2024-01-22 17:25:27
Exec Total Coverage
Lines: 2 2 100.0%
Branches: 0 0 -%

Line Branch Exec Source
1 /*
2 SPDX-FileCopyrightText: 2021 Roman Gilg <subdiff@gmail.com>
3
4 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only
5 */
6 #pragma once
7
8 #include "drm_lease_v1.h"
9
10 #include "wayland/global.h"
11 #include "wayland/resource.h"
12
13 #include <QObject>
14 #include <deque>
15
16 #include <wayland-drm-lease-v1-server-protocol.h>
17
18 namespace Wrapland::Server
19 {
20
21 class Display;
22
23 constexpr uint32_t drm_lease_device_v1Version = 1;
24 using drm_lease_device_v1_global = Wayland::Global<drm_lease_device_v1, drm_lease_device_v1Version>;
25 using drm_lease_device_v1_bind = Wayland::Bind<drm_lease_device_v1_global>;
26
27 class drm_lease_device_v1::Private : public drm_lease_device_v1_global
28 {
29 public:
30 Private(Display* display, drm_lease_device_v1* q_ptr);
31 ~Private() override;
32
33 void bindInit(drm_lease_device_v1_bind* bind) override;
34 void prepareUnbind(drm_lease_device_v1_bind* bind) override;
35
36 void add_connector(drm_lease_connector_v1* connector);
37 void send_connector(drm_lease_device_v1_bind* bind, drm_lease_connector_v1* connector);
38
39 void add_lease(drm_lease_v1* lease, int leese_id);
40 void remove_lease(int leese_id);
41
42 std::deque<drm_lease_device_v1_bind*> waiting_binds;
43 std::vector<drm_lease_device_v1_bind*> active_binds;
44 std::vector<drm_lease_connector_v1*> connectors;
45
46 private:
47 static void create_lease_request_callback(drm_lease_device_v1_bind* bind, uint32_t id);
48 static void release_callback(drm_lease_device_v1_bind* bind);
49
50 static const struct wp_drm_lease_device_v1_interface s_interface;
51
52 drm_lease_device_v1* q_ptr;
53 };
54
55 class drm_lease_request_v1 : public QObject
56 {
57 Q_OBJECT
58 public:
59 drm_lease_request_v1(Client* client,
60 uint32_t version,
61 uint32_t id,
62 drm_lease_device_v1* device);
63
64 std::vector<drm_lease_connector_v1*> connectors() const;
65 Client* applicant() const;
66
67 class Private;
68 Private* d_ptr;
69
70 Q_SIGNALS:
71 void resourceDestroyed();
72 };
73
74 class drm_lease_request_v1::Private : public Wayland::Resource<drm_lease_request_v1>
75 {
76 public:
77 Private(Client* client,
78 uint32_t version,
79 uint32_t id,
80 drm_lease_device_v1* device,
81 drm_lease_request_v1* q_ptr);
82 4 ~Private() override = default;
83
84 drm_lease_device_v1* device;
85 std::vector<drm_lease_connector_v1*> connectors;
86 QMetaObject::Connection destroyConnection;
87
88 private:
89 static void request_connector_callback(wl_client* wlClient,
90 wl_resource* wlResource,
91 wl_resource* wlConnector);
92 static void submit_callback(wl_client* wlClient, wl_resource* wlResource, uint32_t id);
93
94 static const struct wp_drm_lease_request_v1_interface s_interface;
95 };
96
97 class drm_lease_connector_v1_res : public QObject
98 {
99 Q_OBJECT
100 public:
101 drm_lease_connector_v1_res(Wayland::Client* client,
102 uint32_t version,
103 uint32_t id,
104 drm_lease_connector_v1* connector);
105
106 class Private;
107 Private* d_ptr;
108
109 Q_SIGNALS:
110 void resourceDestroyed();
111 };
112
113 class drm_lease_connector_v1_res::Private : public Wayland::Resource<drm_lease_connector_v1_res>
114 {
115 public:
116 Private(Wayland::Client* client,
117 uint32_t version,
118 uint32_t id,
119 drm_lease_connector_v1* connector,
120 drm_lease_connector_v1_res* q_ptr);
121 ~Private() override;
122
123 drm_lease_connector_v1* connector;
124
125 private:
126 static struct wp_drm_lease_connector_v1_interface const s_interface;
127 drm_lease_connector_v1_res* q_ptr;
128 };
129
130 class drm_lease_connector_v1::Private : public QObject
131 {
132 Q_OBJECT
133 public:
134 Private(std::string name,
135 std::string description,
136 int id,
137 drm_lease_device_v1* device,
138 drm_lease_connector_v1* q_ptr);
139 void add_resource(drm_lease_connector_v1_res* res);
140
141 std::string name;
142 std::string description;
143 int connector_id;
144
145 Server::output* output{nullptr};
146 drm_lease_device_v1* device;
147 std::vector<drm_lease_connector_v1_res*> resources;
148
149 drm_lease_connector_v1* q_ptr;
150 };
151
152 class drm_lease_v1::Private : public Wayland::Resource<drm_lease_v1>
153 {
154 public:
155 Private(Client* client,
156 uint32_t version,
157 uint32_t id,
158 std::vector<drm_lease_connector_v1*> connectors,
159 drm_lease_device_v1* device,
160 drm_lease_v1* q_ptr);
161 4 ~Private() override = default;
162
163 int lessee_id{-1};
164 std::vector<drm_lease_connector_v1*> connectors;
165 drm_lease_device_v1* device;
166
167 private:
168 static const struct wp_drm_lease_v1_interface s_interface;
169 };
170
171 }
172