[PATCH weston v2] backends: don't destroy renderer and output twice

Dawid Gajownik gajownik at gmail.com
Thu Jul 30 20:02:28 PDT 2015


drm, fbdev, rpi and wayland backends are unnecessarily destroying
renderer and output before executing weston_compositor_shutdown()

Signed-off-by: Dawid Gajownik <gajownik at gmail.com>
---
 src/compositor-drm.c     |  1 -
 src/compositor-fbdev.c   |  5 +----
 src/compositor-rpi.c     |  7 ++-----
 src/compositor-wayland.c | 10 +---------
 4 files changed, 4 insertions(+), 19 deletions(-)

diff --git a/src/compositor-drm.c b/src/compositor-drm.c
index 3cb6b84..34a4ea9 100644
--- a/src/compositor-drm.c
+++ b/src/compositor-drm.c
@@ -3163,7 +3163,6 @@ err_drm_source:
 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 @@ fbdev_backend_create(struct weston_compositor *compositor, int *argc, char *argv
 	}
 
 	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 @@ rpi_backend_create(struct weston_compositor *compositor,
 		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 a8e63e1..44b6ebb 100644
--- a/src/compositor-wayland.c
+++ b/src/compositor-wayland.c
@@ -2016,14 +2016,12 @@ wayland_backend_create(struct weston_compositor *compositor, int use_pixman,
 		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:
@@ -2035,12 +2033,6 @@ err_compositor:
 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)
-- 
2.4.3



More information about the wayland-devel mailing list