20 #ifndef MIRAL_WAYLAND_APP_H
21 #define MIRAL_WAYLAND_APP_H
23 #include <wayland-client.h>
36 : proxy{nullptr, [](auto){}}
41 : proxy{proxy, destroy}
51 std::unique_ptr<T, void(*)(T*)> proxy;
60 auto scale() const ->
int {
return scale_; }
61 auto transform() const ->
int {
return transform_; }
62 auto operator==(wl_output* other)
const ->
bool {
return wl_ == other; }
63 auto wl() const -> wl_output* {
return wl_; }
66 static void handle_geometry(
68 struct wl_output* wl_output,
71 int32_t physical_width,
72 int32_t physical_height,
77 static void handle_mode(
79 struct wl_output* wl_output,
84 static void handle_done(
void* data,
struct wl_output* wl_output);
85 static void handle_scale(
void* data,
struct wl_output* wl_output, int32_t factor);
87 static wl_output_listener
const output_listener;
108 auto display() const -> wl_display* {
return display_.get(); };
109 auto compositor() const -> wl_compositor* {
return compositor_; };
110 auto shm() const -> wl_shm* {
return shm_; };
111 auto seat() const -> wl_seat* {
return seat_; };
112 auto shell() const -> wl_shell* {
return shell_; };
122 std::unique_ptr<wl_display, decltype(&wl_display_roundtrip)> display_;
130 static void handle_new_global(
132 struct wl_registry* registry,
134 char const* interface,
136 static void handle_global_remove(
void* data,
struct wl_registry* registry, uint32_t name);
138 static wl_registry_listener
const registry_listener;
141 std::map<uint32_t, std::function<void()>> global_remove_handlers;
Definition: wayland_app.h:98
void roundtrip() const
Definition: wayland_app.cpp:124
virtual ~WaylandApp()=default
auto compositor() const -> wl_compositor *
Definition: wayland_app.h:109
virtual void output_gone(WaylandOutput const *)
Definition: wayland_app.h:118
virtual void output_ready(WaylandOutput const *)
Definition: wayland_app.h:116
WaylandApp()
Definition: wayland_app.cpp:99
friend WaylandOutput
Definition: wayland_app.h:112
auto shell() const -> wl_shell *
Definition: wayland_app.h:112
virtual void output_changed(WaylandOutput const *)
Definition: wayland_app.h:117
auto seat() const -> wl_seat *
Definition: wayland_app.h:111
void wayland_init(wl_display *display)
Needs to be two-step initialized to virtual methods are called.
Definition: wayland_app.cpp:110
auto shm() const -> wl_shm *
Definition: wayland_app.h:110
auto display() const -> wl_display *
Definition: wayland_app.h:108
Definition: wayland_app.h:33
WaylandObject(T *proxy, void(*destroy)(T *))
Definition: wayland_app.h:40
WaylandObject()
Definition: wayland_app.h:35
Definition: wayland_app.h:55
auto operator==(wl_output *other) const -> bool
Definition: wayland_app.h:62
auto scale() const -> int
Definition: wayland_app.h:60
WaylandOutput(WaylandApp *app, wl_output *output)
Definition: wayland_app.cpp:31
auto wl() const -> wl_output *
Definition: wayland_app.h:63
virtual ~WaylandOutput()=default
auto transform() const -> int
Definition: wayland_app.h:61