61 lines
1.2 KiB
C++
61 lines
1.2 KiB
C++
|
|
#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 backend‐specific 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;
|
|||
|
|
}
|
|||
|
|
}
|