Files
lunarwm/src/wlr/backend.cpp

61 lines
1.2 KiB
C++
Raw Normal View History

#include <stdlib.h>
extern "C" {
#include <wayland-server-core.h>
#include <wlr/backend/interface.h>
#include <wlr/util/log.h>
}
struct my_backend {
struct wlr_backend base;
// TODO: any backendspecific fields
};
extern "C" {
static bool backend_start(struct wlr_backend* backend)
{
(void)backend;
// TODO: start event loops, create outputs, inputs, etc.
return true;
}
static void backend_destroy(struct wlr_backend* backend)
{
(void)backend;
// TODO: destroy outputs, free everything
}
static int backend_get_drm_fd(struct wlr_backend* backend)
{
(void)backend;
// TODO: return drm FD or -1
return -1;
}
static const struct wlr_backend_impl backend_impl = {
.start = backend_start,
.destroy = backend_destroy,
.get_drm_fd = backend_get_drm_fd,
};
struct wlr_backend* wlr_my_backend_create(
struct wl_event_loop* loop, char const* name)
{
(void)loop;
(void)name;
struct my_backend* b = (struct my_backend*)calloc(1, sizeof(*b));
if (!b) {
return NULL;
}
wlr_backend_init(&b->base, &backend_impl);
// TODO: store loop/name, setup
return &b->base;
}
bool wlr_backend_is_mybackend(struct wlr_backend* backend)
{
return backend->impl == &backend_impl;
}
}