1 /*
2     SPDX-FileCopyrightText: 2020 Roman Gilg <subdiff@gmail.com>
3     SPDX-FileCopyrightText: 2021 Francesco Sorrentino <francesco.sorr@gmail.com>
4 
5     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only
6 */
7 #pragma once
8 
9 #include "seat.h"
10 #include "seat_p.h"
11 #include "wayland/bind.h"
12 #include "wayland/global.h"
13 
14 #include <wayland-server.h>
15 
16 namespace Wrapland::Server
17 {
18 
19 template<typename Global>
20 class device_manager : public Global
21 {
22 public:
23     using Bind = Wayland::Bind<Global>;
24 
25     using Global::Global;
26 
27     static void get_device(Bind* bind, uint32_t id, wl_resource* wlSeat);
28     static void create_source(Bind* bind, uint32_t id);
29 };
30 
31 template<typename Global>
get_device(Bind * bind,uint32_t id,wl_resource * wlSeat)32 void device_manager<Global>::get_device(Bind* bind, uint32_t id, wl_resource* wlSeat)
33 {
34     auto seat = SeatGlobal::handle(wlSeat);
35     bind->global()->handle()->get_device(bind->client()->handle(), bind->version(), id, seat);
36 }
37 
38 template<typename Global>
create_source(Bind * bind,uint32_t id)39 void device_manager<Global>::create_source(Bind* bind, uint32_t id)
40 {
41     bind->global()->handle()->create_source(bind->client()->handle(), bind->version(), id);
42 }
43 
44 }
45