diff options
Diffstat (limited to 'backend/backend.c')
-rw-r--r-- | backend/backend.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/backend/backend.c b/backend/backend.c new file mode 100644 index 00000000..753bb3ae --- /dev/null +++ b/backend/backend.c @@ -0,0 +1,36 @@ +#include <wayland-server.h> +#include <stdlib.h> +#include <string.h> +#include <errno.h> +#include "common/log.h" +#include "backend.h" + +struct wlr_backend *wlr_backend_create(const struct wlr_backend_impl *impl, + struct wlr_backend_state *state) { + struct wlr_backend *backend = calloc(1, sizeof(struct wlr_backend)); + if (!backend) { + wlr_log(L_ERROR, "Allocation failed: %s", strerror(errno)); + return NULL; + } + backend->state = state; + backend->impl = impl; + wl_signal_init(&backend->events.output_add); + wl_signal_init(&backend->events.output_remove); + wl_signal_init(&backend->events.keyboard_add); + wl_signal_init(&backend->events.keyboard_remove); + wl_signal_init(&backend->events.pointer_add); + wl_signal_init(&backend->events.pointer_remove); + wl_signal_init(&backend->events.touch_add); + wl_signal_init(&backend->events.touch_remove); + return backend; +} + +bool wlr_backend_init(struct wlr_backend *backend) { + return backend->impl->init(backend->state); +} + +void wlr_backend_destroy(struct wlr_backend *backend) { + backend->impl->destroy(backend->state); + // TODO: free outputs + free(backend); +} |