Remove wlr_output_state, update backends

This commit is contained in:
Drew DeVault 2017-08-13 10:51:50 -04:00
parent 4386816889
commit 41e735242d
12 changed files with 149 additions and 164 deletions

View file

@ -12,6 +12,7 @@
#include <wlr/backend/session.h>
#include <wlr/backend/drm.h>
#include <wlr/types/wlr_output.h>
#include <wlr/egl.h>
#include <wlr/util/list.h>
@ -137,8 +138,9 @@ struct wlr_output_mode_state {
drmModeModeInfo mode;
};
struct wlr_output_state {
struct wlr_output *base;
struct wlr_drm_output {
struct wlr_output output;
enum wlr_drm_output_state state;
uint32_t connector;
@ -161,10 +163,10 @@ struct wlr_output_state {
struct wlr_drm_interface {
// Enable or disable DPMS for output
void (*conn_enable)(struct wlr_drm_backend *backend,
struct wlr_output_state *output, bool enable);
struct wlr_drm_output *output, bool enable);
// Pageflip on crtc. If mode is non-NULL perform a full modeset using it.
bool (*crtc_pageflip)(struct wlr_drm_backend *backend,
struct wlr_output_state *output, struct wlr_drm_crtc *crtc,
struct wlr_drm_output *output, struct wlr_drm_crtc *crtc,
uint32_t fb_id, drmModeModeInfo *mode);
// Enable the cursor buffer on crtc. Set bo to NULL to disable
bool (*crtc_set_cursor)(struct wlr_drm_backend *backend,
@ -177,11 +179,11 @@ struct wlr_drm_interface {
bool wlr_drm_check_features(struct wlr_drm_backend *drm);
bool wlr_drm_resources_init(struct wlr_drm_backend *drm);
void wlr_drm_resources_free(struct wlr_drm_backend *drm);
void wlr_drm_output_cleanup(struct wlr_output_state *output, bool restore);
void wlr_drm_output_cleanup(struct wlr_drm_output *output, bool restore);
void wlr_drm_scan_connectors(struct wlr_drm_backend *state);
int wlr_drm_event(int fd, uint32_t mask, void *data);
void wlr_drm_output_start_renderer(struct wlr_output_state *output);
void wlr_drm_output_start_renderer(struct wlr_drm_output *output);
#endif

View file

@ -6,6 +6,7 @@
#include <wayland-egl.h>
#include <wlr/egl.h>
#include <wlr/backend/wayland.h>
#include <wlr/types/wlr_output.h>
#include <wlr/types/wlr_input_device.h>
#include <wlr/util/list.h>
@ -29,9 +30,10 @@ struct wlr_wl_backend {
char *seat_name;
};
struct wlr_output_state {
struct wlr_wl_backend_output {
struct wlr_output wlr_output;
struct wlr_wl_backend *backend;
struct wlr_output *wlr_output;
struct wl_surface *surface;
struct wl_shell_surface *shell_surface;
struct wl_egl_window *egl_window;
@ -47,12 +49,12 @@ struct wlr_input_device_state {
struct wlr_pointer_state {
enum wlr_axis_source axis_source;
struct wlr_output *current_output;
struct wlr_wl_backend_output *current_output;
};
void wlr_wl_registry_poll(struct wlr_wl_backend *backend);
struct wlr_output *wlr_wl_output_for_surface(struct wlr_wl_backend *backend,
struct wl_surface *surface);
struct wlr_wl_backend_output *wlr_wl_output_for_surface(
struct wlr_wl_backend *backend, struct wl_surface *surface);
extern const struct wl_seat_listener seat_listener;

View file

@ -4,21 +4,19 @@
#include <stdbool.h>
struct wlr_output_impl {
void (*enable)(struct wlr_output_state *state, bool enable);
bool (*set_mode)(struct wlr_output_state *state,
struct wlr_output_mode *mode);
void (*transform)(struct wlr_output_state *state,
void (*enable)(struct wlr_output *output, bool enable);
bool (*set_mode)(struct wlr_output *output, struct wlr_output_mode *mode);
void (*transform)(struct wlr_output *output,
enum wl_output_transform transform);
bool (*set_cursor)(struct wlr_output_state *state,
const uint8_t *buf, int32_t stride, uint32_t width, uint32_t height);
bool (*move_cursor)(struct wlr_output_state *state, int x, int y);
void (*destroy)(struct wlr_output_state *state);
void (*make_current)(struct wlr_output_state *state);
void (*swap_buffers)(struct wlr_output_state *state);
bool (*set_cursor)(struct wlr_output *output, const uint8_t *buf,
int32_t stride, uint32_t width, uint32_t height);
bool (*move_cursor)(struct wlr_output *output, int x, int y);
void (*destroy)(struct wlr_output *output);
void (*make_current)(struct wlr_output *output);
void (*swap_buffers)(struct wlr_output *output);
};
struct wlr_output *wlr_output_create(struct wlr_output_impl *impl,
struct wlr_output_state *state);
void wlr_output_init(struct wlr_output *output, const struct wlr_output_impl *impl);
void wlr_output_free(struct wlr_output *output);
void wlr_output_update_matrix(struct wlr_output *output);
struct wl_global *wlr_output_create_global(

View file

@ -14,12 +14,10 @@ struct wlr_output_mode {
};
struct wlr_output_impl;
struct wlr_output_state;
struct wlr_output {
const struct wlr_output_impl *impl;
struct wlr_output_state *state;
void *user_data;
struct wl_global *wl_global;
struct wl_list wl_resources;