Pass config_file through to weston_compositor_init

This allows us to do config parsing there.

Signed-off-by: Daniel Stone <daniel@fooishbar.org>
diff --git a/src/compositor.c b/src/compositor.c
index f9c9b2c..ef3802d 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -2841,7 +2841,8 @@
 weston_compositor_init(struct weston_compositor *ec,
 		       struct wl_display *display,
 		       int argc,
-		       char *argv[])
+		       char *argv[],
+		       const char *config_file)
 {
 	struct wl_event_loop *loop;
 	const char *extensions;
@@ -3041,7 +3042,7 @@
 	int (*module_init)(struct weston_compositor *ec);
 	struct weston_compositor
 		*(*backend_init)(struct wl_display *display,
-				 int argc, char *argv[]);
+				 int argc, char *argv[], const char *config_file);
 	int i;
 	char *backend = NULL;
 	char *shell = NULL;
@@ -3116,13 +3117,12 @@
 
 	config_file = config_file_path("weston.ini");
 	parse_config_file(config_file, cs, ARRAY_LENGTH(cs), shell);
-	free(config_file);
 
 	backend_init = load_module(backend, "backend_init", &backend_module);
 	if (!backend_init)
 		exit(EXIT_FAILURE);
 
-	ec = backend_init(display, argc, argv);
+	ec = backend_init(display, argc, argv, config_file);
 	if (ec == NULL) {
 		fprintf(stderr, "failed to create compositor\n");
 		exit(EXIT_FAILURE);
@@ -3133,7 +3133,7 @@
 	if (argv[1])
 		exit(EXIT_FAILURE);
 
-	weston_compositor_xkb_init(ec, &xkb_names);
+	free(config_file);
 
 	ec->option_idle_time = idle_time;
 	ec->idle_time = idle_time;