From c2d0090ad7b0528b308741e67cdae11d58792d13 Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Tue, 20 Jun 2017 18:22:21 -0400 Subject: Support multiple wl backend outputs --- include/backend/wayland.h | 22 ++++++++-------------- include/wlr/backend/wayland.h | 19 +++++++++++++++++-- 2 files changed, 25 insertions(+), 16 deletions(-) (limited to 'include') diff --git a/include/backend/wayland.h b/include/backend/wayland.h index 03667c9a..f4a0a3b4 100644 --- a/include/backend/wayland.h +++ b/include/backend/wayland.h @@ -11,34 +11,30 @@ struct wlr_backend_state { /* local state */ struct wl_display *local_display; + struct wlr_backend *backend; + list_t *devices; + list_t *outputs; + struct wlr_egl egl; + size_t requested_outputs; /* remote state */ struct wl_display *remote_display; + struct wl_event_source *remote_display_src; struct wl_registry *registry; struct wl_compositor *compositor; struct wl_shell *shell; struct wl_shm *shm; struct wl_seat *seat; const char *seatName; - - struct wlr_backend *backend; - list_t *devices; - - struct wl_event_source* remote_display_src; - - size_t num_outputs; - struct wlr_output **outputs; - struct wlr_egl egl; }; struct wlr_output_state { - size_t id; struct wlr_backend_state *backend; - struct wlr_output *output; + struct wlr_output *wlr_output; struct wl_surface *surface; struct wl_shell_surface *shell_surface; struct wl_egl_window* egl_window; struct wl_callback* frame_callback; - void* egl_surface; + void *egl_surface; }; struct wlr_input_device_state { @@ -47,8 +43,6 @@ struct wlr_input_device_state { }; void wlr_wl_registry_poll(struct wlr_backend_state *backend); -struct wlr_output *wlr_wl_output_create(struct wlr_backend_state* backend, - size_t id); extern const struct wl_seat_listener seat_listener; diff --git a/include/wlr/backend/wayland.h b/include/wlr/backend/wayland.h index 83b465c1..43a0b72e 100644 --- a/include/wlr/backend/wayland.h +++ b/include/wlr/backend/wayland.h @@ -4,8 +4,23 @@ #include #include #include +#include -struct wlr_backend *wlr_wl_backend_create(struct wl_display *display, - size_t outputs); +/** + * Creates a new wlr_wl_backend. This backend will be created with no outputs; + * you must use wlr_wl_output_create to add them. + */ +struct wlr_backend *wlr_wl_backend_create(struct wl_display *display); +/** + * Adds a new output to this backend. You may remove outputs by destroying them. + * Note that if called before initializing the backend, this will return NULL + * and your outputs will be created during initialization (and given to you via + * the output_add signal). + */ +struct wlr_output *wlr_wl_output_create(struct wlr_backend *backend); +/** + * True if the given backend is a wlr_wl_backend. + */ +bool wlr_backend_is_wl(struct wlr_backend *backend); #endif -- cgit v1.2.3