Add pointer to backend inside wlr_output

This commit is contained in:
Scott Anderson 2017-10-21 17:37:25 +13:00
parent 4ea84c5765
commit 822a9f65a4
6 changed files with 13 additions and 8 deletions

View File

@ -707,7 +707,7 @@ void wlr_drm_scan_connectors(struct wlr_drm_backend *drm) {
drmModeFreeConnector(drm_conn); drmModeFreeConnector(drm_conn);
continue; continue;
} }
wlr_output_init(&wlr_conn->output, &output_impl); wlr_output_init(&wlr_conn->output, &drm->backend, &output_impl);
struct wl_event_loop *ev = wl_display_get_event_loop(drm->display); struct wl_event_loop *ev = wl_display_get_event_loop(drm->display);
wlr_conn->retry_pageflip = wl_event_loop_add_timer(ev, retry_pageflip, wlr_conn->retry_pageflip = wl_event_loop_add_timer(ev, retry_pageflip,

View File

@ -241,7 +241,7 @@ struct wlr_output *wlr_wl_output_create(struct wlr_backend *_backend) {
wlr_log(L_ERROR, "Failed to allocate wlr_wl_backend_output"); wlr_log(L_ERROR, "Failed to allocate wlr_wl_backend_output");
return NULL; return NULL;
} }
wlr_output_init(&output->wlr_output, &output_impl); wlr_output_init(&output->wlr_output, &backend->backend, &output_impl);
struct wlr_output *wlr_output = &output->wlr_output; struct wlr_output *wlr_output = &output->wlr_output;
wlr_output->width = 640; wlr_output->width = 640;

View File

@ -264,7 +264,7 @@ static bool wlr_x11_backend_start(struct wlr_backend *backend) {
output->x11 = x11; output->x11 = x11;
wlr_output_init(&output->wlr_output, &output_impl); wlr_output_init(&output->wlr_output, &x11->backend, &output_impl);
snprintf(output->wlr_output.name, sizeof(output->wlr_output.name), "X11-1"); snprintf(output->wlr_output.name, sizeof(output->wlr_output.name), "X11-1");
output->win = xcb_generate_id(x11->xcb_conn); output->win = xcb_generate_id(x11->xcb_conn);

View File

@ -1,8 +1,9 @@
#ifndef WLR_INTERFACES_WLR_OUTPUT_H #ifndef WLR_INTERFACES_WLR_OUTPUT_H
#define WLR_INTERFACES_WLR_OUTPUT_H #define WLR_INTERFACES_WLR_OUTPUT_H
#include <wlr/types/wlr_output.h>
#include <stdbool.h> #include <stdbool.h>
#include <wlr/types/wlr_output.h>
#include <wlr/backend.h>
struct wlr_output_impl { struct wlr_output_impl {
void (*enable)(struct wlr_output *output, bool enable); void (*enable)(struct wlr_output *output, bool enable);
@ -21,7 +22,8 @@ struct wlr_output_impl {
uint16_t (*get_gamma_size)(struct wlr_output *output); uint16_t (*get_gamma_size)(struct wlr_output *output);
}; };
void wlr_output_init(struct wlr_output *output, const struct wlr_output_impl *impl); void wlr_output_init(struct wlr_output *output, struct wlr_backend *backend,
const struct wlr_output_impl *impl);
void wlr_output_free(struct wlr_output *output); void wlr_output_free(struct wlr_output *output);
void wlr_output_update_matrix(struct wlr_output *output); void wlr_output_update_matrix(struct wlr_output *output);
struct wl_global *wlr_output_create_global( struct wl_global *wlr_output_create_global(

View File

@ -1,9 +1,10 @@
#ifndef WLR_TYPES_WLR_OUTPUT_H #ifndef WLR_TYPES_WLR_OUTPUT_H
#define WLR_TYPES_WLR_OUTPUT_H #define WLR_TYPES_WLR_OUTPUT_H
#include <wayland-server.h>
#include <wlr/util/list.h>
#include <stdbool.h> #include <stdbool.h>
#include <wayland-server.h>
#include <wlr/backend.h>
#include <wlr/util/list.h>
struct wlr_output_mode { struct wlr_output_mode {
uint32_t flags; // enum wl_output_mode uint32_t flags; // enum wl_output_mode
@ -15,6 +16,7 @@ struct wlr_output_impl;
struct wlr_output { struct wlr_output {
const struct wlr_output_impl *impl; const struct wlr_output_impl *impl;
struct wlr_backend *backend;
struct wl_global *wl_global; struct wl_global *wl_global;
struct wl_list wl_resources; struct wl_list wl_resources;

View File

@ -307,8 +307,9 @@ bool wlr_output_move_cursor(struct wlr_output *output, int x, int y) {
return output->impl->move_cursor(output, x, y); return output->impl->move_cursor(output, x, y);
} }
void wlr_output_init(struct wlr_output *output, void wlr_output_init(struct wlr_output *output, struct wlr_backend *backend,
const struct wlr_output_impl *impl) { const struct wlr_output_impl *impl) {
output->backend = backend;
output->impl = impl; output->impl = impl;
output->modes = list_create(); output->modes = list_create();
output->transform = WL_OUTPUT_TRANSFORM_NORMAL; output->transform = WL_OUTPUT_TRANSFORM_NORMAL;