Merge pull request #505 from martinetd/io_is_foo

Add wlr_input_device_is_foo and wlr_output_is_bar functions
This commit is contained in:
emersion 2017-12-19 22:53:08 +01:00 committed by GitHub
commit 1a96ce0c53
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 59 additions and 8 deletions

View file

@ -658,6 +658,10 @@ static struct wlr_output_impl output_impl = {
.get_gamma_size = wlr_drm_connector_get_gamma_size, .get_gamma_size = wlr_drm_connector_get_gamma_size,
}; };
bool wlr_output_is_drm(struct wlr_output *output) {
return output->impl == &output_impl;
}
static int retry_pageflip(void *data) { static int retry_pageflip(void *data) {
struct wlr_drm_connector *conn = data; struct wlr_drm_connector *conn = data;
wlr_log(L_INFO, "%s: Retrying pageflip", conn->output.name); wlr_log(L_INFO, "%s: Retrying pageflip", conn->output.name);

View file

@ -19,6 +19,10 @@ static struct wlr_input_device_impl input_device_impl = {
.destroy = input_device_destroy, .destroy = input_device_destroy,
}; };
bool wlr_input_device_is_headless(struct wlr_input_device *wlr_dev) {
return wlr_dev->impl == &input_device_impl;
}
struct wlr_input_device *wlr_headless_add_input_device( struct wlr_input_device *wlr_headless_add_input_device(
struct wlr_backend *wlr_backend, enum wlr_input_device_type type) { struct wlr_backend *wlr_backend, enum wlr_input_device_type type) {
struct wlr_headless_backend *backend = struct wlr_headless_backend *backend =

View file

@ -82,6 +82,10 @@ static const struct wlr_output_impl output_impl = {
.swap_buffers = output_swap_buffers, .swap_buffers = output_swap_buffers,
}; };
bool wlr_output_is_headless(struct wlr_output *wlr_output) {
return wlr_output->impl == &output_impl;
}
static int signal_frame(void *data) { static int signal_frame(void *data) {
struct wlr_headless_output *output = data; struct wlr_headless_output *output = data;
wl_signal_emit(&output->wlr_output.events.frame, &output->wlr_output); wl_signal_emit(&output->wlr_output.events.frame, &output->wlr_output);

View file

@ -53,6 +53,10 @@ static struct wlr_input_device *allocate_device(
return wlr_dev; return wlr_dev;
} }
bool wlr_input_device_is_libinput(struct wlr_input_device *wlr_dev) {
return wlr_dev->impl == &input_device_impl;
}
static void handle_device_added(struct wlr_libinput_backend *backend, static void handle_device_added(struct wlr_libinput_backend *backend,
struct libinput_device *libinput_dev) { struct libinput_device *libinput_dev) {
assert(backend && libinput_dev); assert(backend && libinput_dev);

View file

@ -205,6 +205,10 @@ static struct wlr_output_impl output_impl = {
.move_cursor = wlr_wl_output_move_cursor, .move_cursor = wlr_wl_output_move_cursor,
}; };
bool wlr_output_is_wl(struct wlr_output *wlr_output) {
return wlr_output->impl == &output_impl;
}
static void xdg_surface_handle_configure(void *data, struct zxdg_surface_v6 *xdg_surface, static void xdg_surface_handle_configure(void *data, struct zxdg_surface_v6 *xdg_surface,
uint32_t serial) { uint32_t serial) {
struct wlr_wl_backend_output *output = data; struct wlr_wl_backend_output *output = data;

View file

@ -203,6 +203,10 @@ static struct wlr_input_device_impl input_device_impl = {
.destroy = input_device_destroy .destroy = input_device_destroy
}; };
bool wlr_input_device_is_wl(struct wlr_input_device *dev) {
return dev->impl == &input_device_impl;
}
static struct wlr_input_device *allocate_device(struct wlr_wl_backend *backend, static struct wlr_input_device *allocate_device(struct wlr_wl_backend *backend,
enum wlr_input_device_type type) { enum wlr_input_device_type type) {
struct wlr_wl_input_device *wlr_wl_dev; struct wlr_wl_input_device *wlr_wl_dev;

View file

@ -25,6 +25,7 @@
static struct wlr_backend_impl backend_impl; static struct wlr_backend_impl backend_impl;
static struct wlr_output_impl output_impl; static struct wlr_output_impl output_impl;
static struct wlr_input_device_impl input_device_impl = { 0 };
static uint32_t xcb_button_to_wl(uint32_t button) { static uint32_t xcb_button_to_wl(uint32_t button) {
switch (button) { switch (button) {
@ -328,12 +329,12 @@ struct wlr_backend *wlr_x11_backend_create(struct wl_display *display,
} }
wlr_input_device_init(&x11->keyboard_dev, WLR_INPUT_DEVICE_KEYBOARD, wlr_input_device_init(&x11->keyboard_dev, WLR_INPUT_DEVICE_KEYBOARD,
NULL, "X11 keyboard", 0, 0); &input_device_impl, "X11 keyboard", 0, 0);
wlr_keyboard_init(&x11->keyboard, NULL); wlr_keyboard_init(&x11->keyboard, NULL);
x11->keyboard_dev.keyboard = &x11->keyboard; x11->keyboard_dev.keyboard = &x11->keyboard;
wlr_input_device_init(&x11->pointer_dev, WLR_INPUT_DEVICE_POINTER, wlr_input_device_init(&x11->pointer_dev, WLR_INPUT_DEVICE_POINTER,
NULL, "X11 pointer", 0, 0); &input_device_impl, "X11 pointer", 0, 0);
wlr_pointer_init(&x11->pointer, NULL); wlr_pointer_init(&x11->pointer, NULL);
x11->pointer_dev.pointer = &x11->pointer; x11->pointer_dev.pointer = &x11->pointer;
@ -401,3 +402,11 @@ static struct wlr_output_impl output_impl = {
.make_current = output_make_current, .make_current = output_make_current,
.swap_buffers = output_swap_buffers, .swap_buffers = output_swap_buffers,
}; };
bool wlr_output_is_x11(struct wlr_output *wlr_output) {
return wlr_output->impl == &output_impl;
}
bool wlr_input_device_is_x11(struct wlr_input_device *wlr_dev) {
return wlr_dev->impl == &input_device_impl;
}

View file

@ -12,7 +12,6 @@
#include <wlr/backend/session.h> #include <wlr/backend/session.h>
#include <wlr/backend/drm.h> #include <wlr/backend/drm.h>
#include <wlr/types/wlr_output.h>
#include <wlr/render/egl.h> #include <wlr/render/egl.h>
#include "iface.h" #include "iface.h"

View file

@ -3,7 +3,6 @@
#include <wlr/backend/interface.h> #include <wlr/backend/interface.h>
#include <wlr/backend/headless.h> #include <wlr/backend/headless.h>
#include <wlr/types/wlr_output.h>
struct wlr_headless_backend { struct wlr_headless_backend {
struct wlr_backend backend; struct wlr_backend backend;

View file

@ -8,8 +8,6 @@
#include <wlr/render/egl.h> #include <wlr/render/egl.h>
#include <wlr/backend/wayland.h> #include <wlr/backend/wayland.h>
#include <wlr/types/wlr_box.h> #include <wlr/types/wlr_box.h>
#include <wlr/types/wlr_output.h>
#include <wlr/types/wlr_input_device.h>
#include <wayland-util.h> #include <wayland-util.h>
struct wlr_wl_backend { struct wlr_wl_backend {

View file

@ -6,8 +6,6 @@
#include <X11/Xlib-xcb.h> #include <X11/Xlib-xcb.h>
#include <wayland-server.h> #include <wayland-server.h>
#include <wlr/render/egl.h> #include <wlr/render/egl.h>
#include <wlr/types/wlr_output.h>
#include <wlr/types/wlr_input_device.h>
struct wlr_x11_backend; struct wlr_x11_backend;

View file

@ -4,10 +4,12 @@
#include <wayland-server.h> #include <wayland-server.h>
#include <wlr/backend/session.h> #include <wlr/backend/session.h>
#include <wlr/backend.h> #include <wlr/backend.h>
#include <wlr/types/wlr_output.h>
struct wlr_backend *wlr_drm_backend_create(struct wl_display *display, struct wlr_backend *wlr_drm_backend_create(struct wl_display *display,
struct wlr_session *session, int gpu_fd, struct wlr_backend *parent); struct wlr_session *session, int gpu_fd, struct wlr_backend *parent);
bool wlr_backend_is_drm(struct wlr_backend *backend); bool wlr_backend_is_drm(struct wlr_backend *backend);
bool wlr_output_is_drm(struct wlr_output *output);
#endif #endif

View file

@ -3,6 +3,7 @@
#include <wlr/backend.h> #include <wlr/backend.h>
#include <wlr/types/wlr_input_device.h> #include <wlr/types/wlr_input_device.h>
#include <wlr/types/wlr_output.h>
struct wlr_backend *wlr_headless_backend_create(struct wl_display *display); struct wlr_backend *wlr_headless_backend_create(struct wl_display *display);
struct wlr_output *wlr_headless_add_output(struct wlr_backend *backend, struct wlr_output *wlr_headless_add_output(struct wlr_backend *backend,
@ -10,5 +11,7 @@ struct wlr_output *wlr_headless_add_output(struct wlr_backend *backend,
struct wlr_input_device *wlr_headless_add_input_device( struct wlr_input_device *wlr_headless_add_input_device(
struct wlr_backend *backend, enum wlr_input_device_type type); struct wlr_backend *backend, enum wlr_input_device_type type);
bool wlr_backend_is_headless(struct wlr_backend *backend); bool wlr_backend_is_headless(struct wlr_backend *backend);
bool wlr_input_device_is_headless(struct wlr_input_device *device);
bool wlr_output_is_headless(struct wlr_output *output);
#endif #endif

View file

@ -12,5 +12,6 @@ struct wlr_backend *wlr_libinput_backend_create(struct wl_display *display,
struct libinput_device *wlr_libinput_get_device_handle(struct wlr_input_device *dev); struct libinput_device *wlr_libinput_get_device_handle(struct wlr_input_device *dev);
bool wlr_backend_is_libinput(struct wlr_backend *backend); bool wlr_backend_is_libinput(struct wlr_backend *backend);
bool wlr_input_device_is_libinput(struct wlr_input_device *device);
#endif #endif

View file

@ -4,6 +4,8 @@
#include <wayland-client.h> #include <wayland-client.h>
#include <wayland-server.h> #include <wayland-server.h>
#include <wlr/backend.h> #include <wlr/backend.h>
#include <wlr/types/wlr_input_device.h>
#include <wlr/types/wlr_output.h>
#include <stdbool.h> #include <stdbool.h>
/** /**
@ -11,6 +13,7 @@
* you must use wlr_wl_output_create to add them. * you must use wlr_wl_output_create to add them.
*/ */
struct wlr_backend *wlr_wl_backend_create(struct wl_display *display); 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. * 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 * Note that if called before initializing the backend, this will return NULL
@ -18,9 +21,20 @@ struct wlr_backend *wlr_wl_backend_create(struct wl_display *display);
* the output_add signal). * the output_add signal).
*/ */
struct wlr_output *wlr_wl_output_create(struct wlr_backend *backend); struct wlr_output *wlr_wl_output_create(struct wlr_backend *backend);
/** /**
* True if the given backend is a wlr_wl_backend. * True if the given backend is a wlr_wl_backend.
*/ */
bool wlr_backend_is_wl(struct wlr_backend *backend); bool wlr_backend_is_wl(struct wlr_backend *backend);
/**
* True if the given input device is a wlr_wl_input_device.
*/
bool wlr_input_device_is_wl(struct wlr_input_device *device);
/**
* True if the given output is a wlr_wl_backend_output.
*/
bool wlr_output_is_wl(struct wlr_output *output);
#endif #endif

View file

@ -4,10 +4,14 @@
#include <stdbool.h> #include <stdbool.h>
#include <wayland-server.h> #include <wayland-server.h>
#include <wlr/backend.h> #include <wlr/backend.h>
#include <wlr/types/wlr_input_device.h>
#include <wlr/types/wlr_output.h>
struct wlr_backend *wlr_x11_backend_create(struct wl_display *display, struct wlr_backend *wlr_x11_backend_create(struct wl_display *display,
const char *x11_display); const char *x11_display);
bool wlr_backend_is_x11(struct wlr_backend *backend); bool wlr_backend_is_x11(struct wlr_backend *backend);
bool wlr_input_device_is_x11(struct wlr_input_device *device);
bool wlr_output_is_x11(struct wlr_output *output);
#endif #endif