summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKristian Høgsberg <krh@hinata.localdomain>2008-12-12 11:06:18 -0500
committerKristian Høgsberg <krh@hinata.localdomain>2008-12-12 12:17:51 -0500
commitd6531261de0c8b44e84f413a152477ae5d709f7e (patch)
tree30b611605a6ef98c1359ae0ab93ab0365216481b
parent864c468b4232c9529fc90cf76f5686657bab9c27 (diff)
Add option parsing using GOption.
-rw-r--r--egl-compositor.c23
1 files changed, 18 insertions, 5 deletions
diff --git a/egl-compositor.c b/egl-compositor.c
index 50c0d59..731396a 100644
--- a/egl-compositor.c
+++ b/egl-compositor.c
@@ -1047,12 +1047,18 @@ pick_config(struct egl_compositor *ec)
static const char gem_device[] = "/dev/dri/card0";
+static const char *background_image = "background.jpg";
+
+static GOptionEntry option_entries[] = {
+ { "background", 'b', 0, G_OPTION_ARG_STRING, &background_image, "Background image" },
+ { NULL }
+};
+
static struct egl_compositor *
egl_compositor_create(struct wl_display *display)
{
EGLint major, minor;
struct egl_compositor *ec;
- const char *filename;
struct screenshooter *shooter;
uint32_t fb_name;
int stride;
@@ -1110,10 +1116,8 @@ egl_compositor_create(struct wl_display *display)
create_input_devices(ec);
wl_list_init(&ec->surface_list);
- filename = getenv("WAYLAND_BACKGROUND");
- if (filename == NULL)
- filename = "background.jpg";
- ec->background = background_create(filename, ec->width, ec->height);
+ ec->background = background_create(background_image,
+ ec->width, ec->height);
ec->overlay = overlay_create(0, ec->height, ec->width, 200);
ec->overlay_y = ec->height;
ec->overlay_target = ec->height;
@@ -1148,6 +1152,15 @@ int main(int argc, char *argv[])
{
struct wl_display *display;
struct egl_compositor *ec;
+ GError *error = NULL;
+ GOptionContext *context;
+
+ context = g_option_context_new(NULL);
+ g_option_context_add_main_entries(context, option_entries, "Wayland");
+ if (!g_option_context_parse(context, &argc, &argv, &error)) {
+ fprintf(stderr, "option parsing failed: %s\n", error->message);
+ exit(EXIT_FAILURE);
+ }
display = wl_display_create();