parent
							
								
									7e9feb70a0
								
							
						
					
					
						commit
						15b1ce9e6c
					
				| @ -0,0 +1,37 @@ | ||||
| #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.output_frame); | ||||
| 	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 anything else?
 | ||||
| 	free(backend); | ||||
| } | ||||
| @ -0,0 +1,17 @@ | ||||
| #ifndef _WLR_BACKEND_INTERNAL_H | ||||
| #define _WLR_BACKEND_INTERNAL_H | ||||
| 
 | ||||
| #include <stdbool.h> | ||||
| #include <wlr/backend.h> | ||||
| 
 | ||||
| struct wlr_backend_state; | ||||
| 
 | ||||
| struct wlr_backend_impl { | ||||
| 	bool (*init)(struct wlr_backend_state *state); | ||||
| 	void (*destroy)(struct wlr_backend_state *state); | ||||
| }; | ||||
| 
 | ||||
| struct wlr_backend *wlr_backend_create(const struct wlr_backend_impl *impl, | ||||
| 		struct wlr_backend_state *state); | ||||
| 
 | ||||
| #endif | ||||
| @ -1,7 +1,30 @@ | ||||
| #ifndef _WLR_BACKEND_H | ||||
| #define _WLR_BACKEND_H | ||||
| 
 | ||||
| struct wlr_backend *wlr_backend_init(); | ||||
| void wlr_backend_free(struct wlr_backend *backend); | ||||
| #include <wayland-server.h> | ||||
| 
 | ||||
| struct wlr_backend_impl; | ||||
| struct wlr_backend_state; | ||||
| 
 | ||||
| struct wlr_backend { | ||||
| 	const struct wlr_backend_impl *impl; | ||||
| 	struct wlr_backend_state *state; | ||||
| 
 | ||||
| 	struct { | ||||
| 		struct wl_signal output_add; | ||||
| 		struct wl_signal output_remove; | ||||
| 		struct wl_signal output_frame; | ||||
| 		struct wl_signal keyboard_add; | ||||
| 		struct wl_signal keyboard_remove; | ||||
| 		struct wl_signal pointer_add; | ||||
| 		struct wl_signal pointer_remove; | ||||
| 		struct wl_signal touch_add; | ||||
| 		struct wl_signal touch_remove; | ||||
| 	} events; | ||||
| }; | ||||
| 
 | ||||
| struct wlr_backend *wlr_backend_autocreate(); | ||||
| bool wlr_backend_init(struct wlr_backend *backend); | ||||
| void wlr_backend_destroy(struct wlr_backend *backend); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
					Loading…
					
					
				
		Reference in new issue