Hi All,

Attached is a patch which fixes some cleanup issues for the drm-based compositor. Basically, if we fail to allocate space for the crtcs in the compositor, then we need to free the drm mode resources before exiting the create_outputs function. We should also free these resources (in the same create_outputs function) if the compositor output_list is empty.

Cheers,
devilhorns
>From a71519a4e82451a632165f3f910246c238af4ed4 Mon Sep 17 00:00:00 2001
From: Christopher Michael <[email protected]>
Date: Wed, 7 Mar 2012 14:55:21 -0500
Subject: [PATCH] When creating outputs in the drm compositor, if allocating crtcs fails, then free the drm resources. Also, if the base output list is empty, free drm resources

---
 src/compositor-drm.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/src/compositor-drm.c b/src/compositor-drm.c
index 9796014..67fa500 100644
--- a/src/compositor-drm.c
+++ b/src/compositor-drm.c
@@ -1263,8 +1263,10 @@ create_outputs(struct drm_compositor *ec, int option_connector,
 	}
 
 	ec->crtcs = calloc(resources->count_crtcs, sizeof(uint32_t));
-	if (!ec->crtcs)
+	if (!ec->crtcs) {
+		drmModeFreeResources(resources);
 		return -1;
+	}
 
 	ec->num_crtcs = resources->count_crtcs;
 	memcpy(ec->crtcs, resources->crtcs, sizeof(uint32_t) * ec->num_crtcs);
@@ -1295,6 +1297,7 @@ create_outputs(struct drm_compositor *ec, int option_connector,
 
 	if (wl_list_empty(&ec->base.output_list)) {
 		fprintf(stderr, "No currently active connector found.\n");
+		drmModeFreeResources(resources);
 		return -1;
 	}
 
-- 
1.7.4.1

_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to