compositor: add API to manage compositor instances
This commit adds three new exported functions:
- weston_compositor_create() returns a new weston_compositor instance,
initializing it as the now removed weston_compositor_init() did.
- weston_compositor_exit(compositor) asks the compositor to tear
down by calling the compositor's exit vfunc which is set by the
libweston application.
- weston_compositor_destroy(compositor) is called by the libweston
application when tearing down the compositor. The compositor is destroyed
and the memory freed.
Reviewed-by: Jon A. Cruz <jonc@osg.samsung.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
diff --git a/src/compositor-wayland.c b/src/compositor-wayland.c
index 626d8de..35f1de0 100644
--- a/src/compositor-wayland.c
+++ b/src/compositor-wayland.c
@@ -1404,7 +1404,7 @@
input->keyboard_focus = NULL;
if (wl_list_empty(&input->backend->compositor->output_list))
- wl_display_terminate(input->backend->compositor->wl_display);
+ weston_compositor_exit(input->backend->compositor);
return;
}
@@ -1852,7 +1852,7 @@
int count = 0;
if ((mask & WL_EVENT_HANGUP) || (mask & WL_EVENT_ERROR)) {
- wl_display_terminate(b->compositor->wl_display);
+ weston_compositor_exit(b->compositor);
return 0;
}
@@ -1960,10 +1960,6 @@
return NULL;
b->compositor = compositor;
- if (weston_compositor_init(compositor, argc, argv,
- config) < 0)
- goto err_free;
-
if (weston_compositor_set_presentation_clock_software(compositor) < 0)
goto err_compositor;
@@ -2032,7 +2028,6 @@
wl_display_disconnect(b->parent.wl_display);
err_compositor:
weston_compositor_shutdown(compositor);
-err_free:
free(b);
return NULL;
}