commit 7e7f05696b2e452fc9e46f1aec64aa2ec09f12ce
parent 971f2ecf426f343a835bf69c90565c4205e21ed1
Author: Michael Forney <mforney@mforney.org>
Date: Sat, 23 Nov 2013 21:20:06 -0800
Allow user to specify event loop to use
Diffstat:
5 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/libswc/compositor.c b/libswc/compositor.c
@@ -313,9 +313,9 @@ static void bind_compositor(struct wl_client * client, void * data,
}
bool swc_compositor_initialize(struct swc_compositor * compositor,
- struct wl_display * display)
+ struct wl_display * display,
+ struct wl_event_loop * event_loop)
{
- struct wl_event_loop * event_loop;
struct wl_list * outputs;
struct swc_output * output;
pixman_region32_t pointer_region;
@@ -338,8 +338,6 @@ bool swc_compositor_initialize(struct swc_compositor * compositor,
goto error_base;
}
- event_loop = wl_display_get_event_loop(display);
-
/* TODO: configurable seat */
if (!swc_seat_initialize(&compositor->seat, compositor->udev, default_seat))
{
diff --git a/libswc/compositor.h b/libswc/compositor.h
@@ -46,7 +46,8 @@ struct swc_compositor
};
bool swc_compositor_initialize(struct swc_compositor * compositor,
- struct wl_display * display);
+ struct wl_display * display,
+ struct wl_event_loop * event_loop);
void swc_compositor_finish(struct swc_compositor * compositor);
diff --git a/libswc/private.h b/libswc/private.h
@@ -25,12 +25,14 @@
#define SWC_PRIVATE_H
struct wl_display;
+struct wl_event_loop;
struct swc_manager;
struct swc_compositor;
struct swc
{
struct wl_display * display;
+ struct wl_event_loop * event_loop;
const struct swc_manager * manager;
struct swc_compositor * compositor;
diff --git a/libswc/swc.c b/libswc/swc.c
@@ -43,9 +43,11 @@ static void setup_compositor()
EXPORT
bool swc_initialize(struct wl_display * display,
+ struct wl_event_loop * event_loop,
const struct swc_manager * manager)
{
swc.display = display;
+ swc.event_loop = event_loop ?: wl_display_get_event_loop(display);
swc.manager = manager;
if (!swc_bindings_initialize())
@@ -54,7 +56,7 @@ bool swc_initialize(struct wl_display * display,
goto error0;
}
- if (!swc_compositor_initialize(&compositor, display))
+ if (!swc_compositor_initialize(&compositor, display, swc.event_loop))
{
fprintf(stderr, "Could not initialize compositor\n");
goto error1;
diff --git a/libswc/swc.h b/libswc/swc.h
@@ -125,6 +125,7 @@ struct swc_manager
};
bool swc_initialize(struct wl_display * display,
+ struct wl_event_loop * event_loop,
const struct swc_manager * manager);
void swc_finalize();