summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/compositor-drm.c9
-rw-r--r--src/compositor-fbdev.c10
-rw-r--r--src/compositor-headless.c12
-rw-r--r--src/compositor-rdp.c9
-rw-r--r--src/compositor-rpi.c9
-rw-r--r--src/compositor-wayland.c9
-rw-r--r--src/compositor-x11.c10
-rw-r--r--src/compositor.c33
-rw-r--r--src/compositor.h6
-rw-r--r--src/shell.c4
10 files changed, 54 insertions, 57 deletions
diff --git a/src/compositor-drm.c b/src/compositor-drm.c
index c9529be7..44351627 100644
--- a/src/compositor-drm.c
+++ b/src/compositor-drm.c
@@ -2442,7 +2442,8 @@ planes_binding(struct weston_seat *seat, uint32_t time, uint32_t key, void *data
static struct weston_compositor *
drm_compositor_create(struct wl_display *display,
int connector, const char *seat, int tty, int pixman,
- int *argc, char *argv[], int config_fd)
+ int *argc, char *argv[],
+ struct weston_config *config)
{
struct drm_compositor *ec;
struct udev_device *drm_device;
@@ -2465,7 +2466,7 @@ drm_compositor_create(struct wl_display *display,
ec->use_pixman = pixman;
if (weston_compositor_init(&ec->base, display, argc, argv,
- config_fd) < 0) {
+ config) < 0) {
weston_log("%s failed\n", __func__);
goto err_base;
}
@@ -2602,7 +2603,7 @@ err_base:
WL_EXPORT struct weston_compositor *
backend_init(struct wl_display *display, int *argc, char *argv[],
- int config_fd)
+ struct weston_config *config)
{
int connector = 0, tty = 0, use_pixman = 0;
const char *seat = default_seat;
@@ -2618,5 +2619,5 @@ backend_init(struct wl_display *display, int *argc, char *argv[],
parse_options(drm_options, ARRAY_LENGTH(drm_options), argc, argv);
return drm_compositor_create(display, connector, seat, tty, use_pixman,
- argc, argv, config_fd);
+ argc, argv, config);
}
diff --git a/src/compositor-fbdev.c b/src/compositor-fbdev.c
index c643c236..898933fb 100644
--- a/src/compositor-fbdev.c
+++ b/src/compositor-fbdev.c
@@ -836,7 +836,8 @@ switch_vt_binding(struct weston_seat *seat, uint32_t time, uint32_t key, void *d
static struct weston_compositor *
fbdev_compositor_create(struct wl_display *display, int *argc, char *argv[],
- int config_fd, struct fbdev_parameters *param)
+ struct weston_config *config,
+ struct fbdev_parameters *param)
{
struct fbdev_compositor *compositor;
const char *seat = default_seat;
@@ -849,7 +850,7 @@ fbdev_compositor_create(struct wl_display *display, int *argc, char *argv[],
return NULL;
if (weston_compositor_init(&compositor->base, display, argc, argv,
- config_fd) < 0)
+ config) < 0)
goto out_free;
compositor->udev = udev_new();
@@ -907,7 +908,7 @@ out_free:
WL_EXPORT struct weston_compositor *
backend_init(struct wl_display *display, int *argc, char *argv[],
- int config_fd)
+ struct weston_config *config)
{
/* TODO: Ideally, available frame buffers should be enumerated using
* udev, rather than passing a device node in as a parameter. */
@@ -923,6 +924,5 @@ backend_init(struct wl_display *display, int *argc, char *argv[],
parse_options(fbdev_options, ARRAY_LENGTH(fbdev_options), argc, argv);
- return fbdev_compositor_create(display, argc, argv, config_fd,
- &param);
+ return fbdev_compositor_create(display, argc, argv, config, &param);
}
diff --git a/src/compositor-headless.c b/src/compositor-headless.c
index e4bd1bea..e250b989 100644
--- a/src/compositor-headless.c
+++ b/src/compositor-headless.c
@@ -157,8 +157,9 @@ headless_destroy(struct weston_compositor *ec)
static struct weston_compositor *
headless_compositor_create(struct wl_display *display,
- int width, int height, const char *display_name,
- int *argc, char *argv[], int config_fd)
+ int width, int height, const char *display_name,
+ int *argc, char *argv[],
+ struct weston_config *config)
{
struct headless_compositor *c;
@@ -168,8 +169,7 @@ headless_compositor_create(struct wl_display *display,
memset(c, 0, sizeof *c);
- if (weston_compositor_init(&c->base, display, argc, argv,
- config_fd) < 0)
+ if (weston_compositor_init(&c->base, display, argc, argv, config) < 0)
goto err_free;
weston_seat_init(&c->fake_seat, &c->base);
@@ -194,7 +194,7 @@ err_free:
WL_EXPORT struct weston_compositor *
backend_init(struct wl_display *display, int *argc, char *argv[],
- int config_fd)
+ struct weston_config *config)
{
int width = 1024, height = 640;
char *display_name = NULL;
@@ -208,5 +208,5 @@ backend_init(struct wl_display *display, int *argc, char *argv[],
ARRAY_LENGTH(headless_options), argc, argv);
return headless_compositor_create(display, width, height, display_name,
- argc, argv, config_fd);
+ argc, argv, config);
}
diff --git a/src/compositor-rdp.c b/src/compositor-rdp.c
index ae6e8e05..1711fdd0 100644
--- a/src/compositor-rdp.c
+++ b/src/compositor-rdp.c
@@ -965,7 +965,7 @@ rdp_incoming_peer(freerdp_listener *instance, freerdp_peer *client)
static struct weston_compositor *
rdp_compositor_create(struct wl_display *display,
struct rdp_compositor_config *config,
- int *argc, char *argv[], int config_fd)
+ int *argc, char *argv[], struct weston_config *config)
{
struct rdp_compositor *c;
char *fd_str;
@@ -977,8 +977,7 @@ rdp_compositor_create(struct wl_display *display,
memset(c, 0, sizeof *c);
- if (weston_compositor_init(&c->base, display, argc, argv,
- config_fd) < 0)
+ if (weston_compositor_init(&c->base, display, argc, argv, config) < 0)
goto err_free;
c->base.destroy = rdp_destroy;
@@ -1047,7 +1046,7 @@ err_free:
WL_EXPORT struct weston_compositor *
backend_init(struct wl_display *display, int *argc, char *argv[],
- int config_fd)
+ struct weston_config *config)
{
struct rdp_compositor_config config;
rdp_compositor_config_init(&config);
@@ -1070,5 +1069,5 @@ backend_init(struct wl_display *display, int *argc, char *argv[],
};
parse_options(rdp_options, ARRAY_LENGTH(rdp_options), argc, argv);
- return rdp_compositor_create(display, &config, argc, argv, config_fd);
+ return rdp_compositor_create(display, &config, argc, argv, config);
}
diff --git a/src/compositor-rpi.c b/src/compositor-rpi.c
index 5a6d8faa..3d95d303 100644
--- a/src/compositor-rpi.c
+++ b/src/compositor-rpi.c
@@ -734,7 +734,8 @@ struct rpi_parameters {
static struct weston_compositor *
rpi_compositor_create(struct wl_display *display, int *argc, char *argv[],
- int config_fd, struct rpi_parameters *param)
+ struct weston_config *config,
+ struct rpi_parameters *param)
{
struct rpi_compositor *compositor;
const char *seat = default_seat;
@@ -747,7 +748,7 @@ rpi_compositor_create(struct wl_display *display, int *argc, char *argv[],
return NULL;
if (weston_compositor_init(&compositor->base, display, argc, argv,
- config_fd) < 0)
+ config) < 0)
goto out_free;
compositor->udev = udev_new();
@@ -817,7 +818,7 @@ out_free:
WL_EXPORT struct weston_compositor *
backend_init(struct wl_display *display, int *argc, char *argv[],
- int config_fd)
+ struct weston_config *config)
{
const char *transform = "normal";
int ret;
@@ -843,5 +844,5 @@ backend_init(struct wl_display *display, int *argc, char *argv[],
else
param.output_transform = ret;
- return rpi_compositor_create(display, argc, argv, config_fd, &param);
+ return rpi_compositor_create(display, argc, argv, config, &param);
}
diff --git a/src/compositor-wayland.c b/src/compositor-wayland.c
index 511a12da..d253d87a 100644
--- a/src/compositor-wayland.c
+++ b/src/compositor-wayland.c
@@ -721,7 +721,8 @@ wayland_destroy(struct weston_compositor *ec)
static struct weston_compositor *
wayland_compositor_create(struct wl_display *display,
int width, int height, const char *display_name,
- int *argc, char *argv[], int config_fd)
+ int *argc, char *argv[],
+ struct weston_config *config)
{
struct wayland_compositor *c;
struct wl_event_loop *loop;
@@ -734,7 +735,7 @@ wayland_compositor_create(struct wl_display *display,
memset(c, 0, sizeof *c);
if (weston_compositor_init(&c->base, display, argc, argv,
- config_fd) < 0)
+ config) < 0)
goto err_free;
c->parent.wl_display = wl_display_connect(display_name);
@@ -797,7 +798,7 @@ err_free:
WL_EXPORT struct weston_compositor *
backend_init(struct wl_display *display, int *argc, char *argv[],
- int config_fd)
+ struct weston_config *config)
{
int width = 1024, height = 640;
char *display_name = NULL;
@@ -812,5 +813,5 @@ backend_init(struct wl_display *display, int *argc, char *argv[],
ARRAY_LENGTH(wayland_options), argc, argv);
return wayland_compositor_create(display, width, height, display_name,
- argc, argv, config_fd);
+ argc, argv, config);
}
diff --git a/src/compositor-x11.c b/src/compositor-x11.c
index be7b13ec..279f1b34 100644
--- a/src/compositor-x11.c
+++ b/src/compositor-x11.c
@@ -1508,7 +1508,8 @@ x11_compositor_create(struct wl_display *display,
int fullscreen,
int no_input,
int use_pixman,
- int *argc, char *argv[], int config_fd)
+ int *argc, char *argv[],
+ struct weston_config *config)
{
struct x11_compositor *c;
struct x11_output *output;
@@ -1528,8 +1529,7 @@ x11_compositor_create(struct wl_display *display,
memset(c, 0, sizeof *c);
- if (weston_compositor_init(&c->base, display, argc, argv,
- config_fd) < 0)
+ if (weston_compositor_init(&c->base, display, argc, argv, config) < 0)
goto err_free;
c->dpy = XOpenDisplay(NULL);
@@ -1654,7 +1654,7 @@ err_free:
WL_EXPORT struct weston_compositor *
backend_init(struct wl_display *display, int *argc, char *argv[],
- int config_fd)
+ struct weston_config *config)
{
int fullscreen = 0;
int no_input = 0;
@@ -1675,5 +1675,5 @@ backend_init(struct wl_display *display, int *argc, char *argv[],
fullscreen,
no_input,
use_pixman,
- argc, argv, config_fd);
+ argc, argv, config);
}
diff --git a/src/compositor.c b/src/compositor.c
index 4322fb81..f9bdb090 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -2771,15 +2771,13 @@ WL_EXPORT int
weston_compositor_init(struct weston_compositor *ec,
struct wl_display *display,
int *argc, char *argv[],
- int config_fd)
+ struct weston_config *config)
{
struct wl_event_loop *loop;
struct xkb_rule_names xkb_names;
struct weston_config_section *s;
- ec->config_fd = config_fd;
- ec->config = weston_config_parse(config_fd);
-
+ ec->config = config;
ec->wl_display = display;
wl_signal_init(&ec->destroy_signal);
wl_signal_init(&ec->activate_signal);
@@ -2876,7 +2874,7 @@ weston_compositor_shutdown(struct weston_compositor *ec)
wl_event_loop_destroy(ec->input_loop);
- close(ec->config_fd);
+ weston_config_destroy(ec->config);
}
WL_EXPORT void
@@ -3208,24 +3206,18 @@ int main(int argc, char *argv[])
struct wl_event_loop *loop;
struct weston_compositor
*(*backend_init)(struct wl_display *display,
- int *argc, char *argv[], int config_fd);
+ int *argc, char *argv[],
+ struct weston_config *config);
int i, config_fd;
char *backend = NULL;
- const char *modules = "desktop-shell.so", *option_modules = NULL;
+ char *modules, *option_modules = NULL;
char *log = NULL;
int32_t idle_time = 300;
int32_t help = 0;
char *socket_name = "wayland-0";
int32_t version = 0;
-
- const struct config_key core_config_keys[] = {
- { "modules", CONFIG_KEY_STRING, &modules },
- };
-
- const struct config_section cs[] = {
- { "core",
- core_config_keys, ARRAY_LENGTH(core_config_keys) },
- };
+ struct weston_config *config;
+ struct weston_config_section *section;
const struct weston_option core_options[] = {
{ WESTON_OPTION_STRING, "backend", 'B', &backend },
@@ -3283,13 +3275,18 @@ int main(int argc, char *argv[])
}
config_fd = open_config_file("weston.ini");
- parse_config_file(config_fd, cs, ARRAY_LENGTH(cs), NULL);
+ config = weston_config_parse(config_fd);
+ close(config_fd);
+
+ section = weston_config_get_section(config, "core", NULL, NULL);
+ weston_config_section_get_string(section, "modules",
+ &modules, "desktop-shell.so");
backend_init = load_module(backend, "backend_init");
if (!backend_init)
exit(EXIT_FAILURE);
- ec = backend_init(display, &argc, argv, config_fd);
+ ec = backend_init(display, &argc, argv, config);
if (ec == NULL) {
weston_log("fatal: failed to create compositor\n");
exit(EXIT_FAILURE);
diff --git a/src/compositor.h b/src/compositor.h
index b871fe4e..e3a798ea 100644
--- a/src/compositor.h
+++ b/src/compositor.h
@@ -556,8 +556,6 @@ struct weston_compositor {
struct xkb_rule_names xkb_names;
struct xkb_context *xkb_context;
struct weston_xkb_info xkb_info;
-
- int config_fd;
};
struct weston_buffer_reference {
@@ -1011,7 +1009,7 @@ weston_compositor_get_time(void);
int
weston_compositor_init(struct weston_compositor *ec, struct wl_display *display,
- int *argc, char *argv[], int config_fd);
+ int *argc, char *argv[], struct weston_config *config);
void
weston_compositor_shutdown(struct weston_compositor *ec);
void
@@ -1149,7 +1147,7 @@ noop_renderer_init(struct weston_compositor *ec);
struct weston_compositor *
backend_init(struct wl_display *display, int *argc, char *argv[],
- int config_fd);
+ struct weston_config *config);
int
module_init(struct weston_compositor *compositor,
diff --git a/src/shell.c b/src/shell.c
index 0e18db22..14433288 100644
--- a/src/shell.c
+++ b/src/shell.c
@@ -379,7 +379,7 @@ get_animation_type(char *animation)
}
static void
-shell_configuration(struct desktop_shell *shell, int config_fd)
+shell_configuration(struct desktop_shell *shell)
{
struct weston_config_section *section;
int duration;
@@ -4418,7 +4418,7 @@ module_init(struct weston_compositor *ec,
wl_array_init(&shell->workspaces.array);
wl_list_init(&shell->workspaces.client_list);
- shell_configuration(shell, ec->config_fd);
+ shell_configuration(shell);
for (i = 0; i < shell->workspaces.num; i++) {
pws = wl_array_add(&shell->workspaces.array, sizeof *pws);