libweston: use enum to choose the backend
Change weston_compositor_load_backend() to use an enum to choose the
backend.
The caller no longer needs to know what the backend DSO is called in the
file system. Custom backends cannot be laoded anymore, as the loading
path is now always either LIBWESTON_MODULEDIR, or formed from
$WESTON_BUILD_DIR.
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Quentin Glidic <sardemff7+git@sardemff7.net>
Reviewed-by: Giulio Camuffo <giuliocamuffo@gmail.com>
diff --git a/src/compositor.c b/src/compositor.c
index 07874f6..44126dd 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -4867,6 +4867,15 @@
return compositor->user_data;
}
+static const char * const backend_map[] = {
+ [WESTON_BACKEND_DRM] = "drm-backend.so",
+ [WESTON_BACKEND_FBDEV] = "fbdev-backend.so",
+ [WESTON_BACKEND_HEADLESS] = "headless-backend.so",
+ [WESTON_BACKEND_RDP] = "rdp-backend.so",
+ [WESTON_BACKEND_WAYLAND] = "wayland-backend.so",
+ [WESTON_BACKEND_X11] = "x11-backend.so",
+};
+
/** Load a backend into a weston_compositor
*
* A backend must be loaded to make a weston_compositor work. A backend
@@ -4881,13 +4890,16 @@
*/
WL_EXPORT int
weston_compositor_load_backend(struct weston_compositor *compositor,
- const char *backend,
+ enum weston_compositor_backend backend,
struct weston_backend_config *config_base)
{
int (*backend_init)(struct weston_compositor *c,
struct weston_backend_config *config_base);
- backend_init = weston_load_module(backend, "backend_init");
+ if (backend < 0 || backend >= ARRAY_LENGTH(backend_map))
+ return -1;
+
+ backend_init = weston_load_module(backend_map[backend], "backend_init");
if (!backend_init)
return -1;