mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2025-12-25 14:10:03 +01:00
The renderer redesign is going to need the render fd before the backend is fully started, so we have to move the wl registry code to when the backend is created instead of when it is started. We also need to stash the wl_keyboard and emit it to library users later, once they've added their listeners and started the backend.
90 lines
2.2 KiB
C
90 lines
2.2 KiB
C
#ifndef BACKEND_WAYLAND_H
|
|
#define BACKEND_WAYLAND_H
|
|
|
|
#include <stdbool.h>
|
|
#include <wayland-client.h>
|
|
#include <wayland-egl.h>
|
|
#include <wayland-server.h>
|
|
#include <wayland-util.h>
|
|
#include <wlr/backend/wayland.h>
|
|
#include <wlr/render/egl.h>
|
|
#include <wlr/render/wlr_renderer.h>
|
|
#include <wlr/types/wlr_box.h>
|
|
|
|
struct wlr_wl_backend {
|
|
struct wlr_backend backend;
|
|
|
|
/* local state */
|
|
bool started;
|
|
struct wl_display *local_display;
|
|
struct wl_list devices;
|
|
struct wl_list outputs;
|
|
struct wlr_egl egl;
|
|
struct wlr_renderer *renderer;
|
|
size_t requested_outputs;
|
|
struct wl_listener local_display_destroy;
|
|
/* remote state */
|
|
struct wl_display *remote_display;
|
|
struct wl_event_source *remote_display_src;
|
|
struct wl_registry *registry;
|
|
struct wl_compositor *compositor;
|
|
struct zxdg_shell_v6 *shell;
|
|
struct wl_shm *shm;
|
|
struct wl_seat *seat;
|
|
struct wl_pointer *pointer;
|
|
struct wl_keyboard *keyboard;
|
|
struct wlr_wl_pointer *current_pointer;
|
|
char *seat_name;
|
|
};
|
|
|
|
struct wlr_wl_output {
|
|
struct wlr_output wlr_output;
|
|
|
|
struct wlr_wl_backend *backend;
|
|
struct wl_list link;
|
|
|
|
struct wl_surface *surface;
|
|
struct wl_callback *frame_callback;
|
|
struct zxdg_surface_v6 *xdg_surface;
|
|
struct zxdg_toplevel_v6 *xdg_toplevel;
|
|
struct wl_egl_window *egl_window;
|
|
EGLSurface egl_surface;
|
|
|
|
uint32_t enter_serial;
|
|
|
|
struct {
|
|
struct wl_surface *surface;
|
|
struct wl_egl_window *egl_window;
|
|
int32_t hotspot_x, hotspot_y;
|
|
int32_t width, height;
|
|
} cursor;
|
|
};
|
|
|
|
struct wlr_wl_input_device {
|
|
struct wlr_input_device wlr_input_device;
|
|
|
|
struct wlr_wl_backend *backend;
|
|
void *resource;
|
|
};
|
|
|
|
struct wlr_wl_pointer {
|
|
struct wlr_pointer wlr_pointer;
|
|
|
|
struct wlr_wl_input_device *input_device;
|
|
struct wl_pointer *wl_pointer;
|
|
enum wlr_axis_source axis_source;
|
|
int32_t axis_discrete;
|
|
struct wlr_wl_output *output;
|
|
|
|
struct wl_listener output_destroy;
|
|
};
|
|
|
|
struct wlr_wl_backend *get_wl_backend_from_backend(struct wlr_backend *backend);
|
|
void update_wl_output_cursor(struct wlr_wl_output *output);
|
|
struct wlr_wl_pointer *pointer_get_wl(struct wlr_pointer *wlr_pointer);
|
|
void create_wl_pointer(struct wl_pointer *wl_pointer, struct wlr_wl_output *output);
|
|
void create_wl_keyboard(struct wl_keyboard *wl_keyboard, struct wlr_wl_backend *wl);
|
|
|
|
extern const struct wl_seat_listener seat_listener;
|
|
|
|
#endif
|