backends: don't destroy renderer and output twice
drm, fbdev, rpi and wayland backends are unnecessarily destroying
renderer and output before executing weston_compositor_shutdown()
Signed-off-by: Dawid Gajownik <gajownik@gmail.com>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
diff --git a/src/compositor-drm.c b/src/compositor-drm.c
index 2aab691..585169e 100644
--- a/src/compositor-drm.c
+++ b/src/compositor-drm.c
@@ -3165,7 +3165,6 @@
err_udev_input:
udev_input_destroy(&b->input);
err_sprite:
- compositor->renderer->destroy(compositor);
gbm_device_destroy(b->gbm);
destroy_sprites(b);
err_udev_dev:
diff --git a/src/compositor-fbdev.c b/src/compositor-fbdev.c
index 3110f74..051a381 100644
--- a/src/compositor-fbdev.c
+++ b/src/compositor-fbdev.c
@@ -881,16 +881,13 @@
}
if (fbdev_output_create(backend, param->device) < 0)
- goto out_pixman;
+ goto out_launcher;
udev_input_init(&backend->input, compositor, backend->udev, seat_id);
compositor->backend = &backend->base;
return backend;
-out_pixman:
- compositor->renderer->destroy(compositor);
-
out_launcher:
weston_launcher_destroy(compositor->launcher);
diff --git a/src/compositor-rpi.c b/src/compositor-rpi.c
index ac9faeb..602cbee 100644
--- a/src/compositor-rpi.c
+++ b/src/compositor-rpi.c
@@ -522,20 +522,17 @@
goto out_launcher;
if (rpi_output_create(backend, param->output_transform) < 0)
- goto out_renderer;
+ goto out_launcher;
if (udev_input_init(&backend->input,
compositor,
backend->udev, "seat0") != 0) {
weston_log("Failed to initialize udev input.\n");
- goto out_renderer;
+ goto out_launcher;
}
return backend;
-out_renderer:
- compositor->renderer->destroy(compositor);
-
out_launcher:
weston_launcher_destroy(compositor->launcher);
diff --git a/src/compositor-wayland.c b/src/compositor-wayland.c
index 1b40e46..f6c84d4 100644
--- a/src/compositor-wayland.c
+++ b/src/compositor-wayland.c
@@ -2018,14 +2018,12 @@
wl_event_loop_add_fd(loop, fd, WL_EVENT_READABLE,
wayland_backend_handle_event, b);
if (b->parent.wl_source == NULL)
- goto err_renderer;
+ goto err_display;
wl_event_source_check(b->parent.wl_source);
compositor->backend = &b->base;
return b;
-err_renderer:
- compositor->renderer->destroy(compositor);
err_display:
wl_display_disconnect(b->parent.wl_display);
err_compositor:
@@ -2037,12 +2035,6 @@
static void
wayland_backend_destroy(struct wayland_backend *b)
{
- struct weston_output *output, *next;
-
- wl_list_for_each_safe(output, next, &b->compositor->output_list, link)
- wayland_output_destroy(output);
-
- b->compositor->renderer->destroy(b->compositor);
wl_display_disconnect(b->parent.wl_display);
if (b->theme)