Blob Blame History Raw
From 563bf2ff83018bdd03a5159522e1fb2ce6532d47 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Fri, 31 Jul 2009 15:33:52 +0200
Subject: [PATCH 3/4] pulse: unify destruction of snd_pulse_t

---
 pulse/pulse.c |   31 ++++++++++++-------------------
 1 files changed, 12 insertions(+), 19 deletions(-)

diff --git a/pulse/pulse.c b/pulse/pulse.c
index dd17384..ae66b0c 100644
--- a/pulse/pulse.c
+++ b/pulse/pulse.c
@@ -217,36 +217,29 @@ snd_pulse_t *pulse_new(void)
 	return p;
 
 fail:
+	pulse_free(p);
+
+	return NULL;
+}
+
+void pulse_free(snd_pulse_t * p)
+{
 	if (p->mainloop)
 		pa_threaded_mainloop_stop(p->mainloop);
 
-	if (p->context)
+	if (p->context) {
+		pa_context_disconnect(p->context);
 		pa_context_unref(p->context);
+	}
 
 	if (p->mainloop)
 		pa_threaded_mainloop_free(p->mainloop);
 
-	if (p->main_fd >= 0)
-		close(p->main_fd);
-
 	if (p->thread_fd >= 0)
 		close(p->thread_fd);
 
-	free(p);
-
-	return NULL;
-}
-
-void pulse_free(snd_pulse_t * p)
-{
-	pa_threaded_mainloop_stop(p->mainloop);
-
-	pa_context_disconnect(p->context);
-	pa_context_unref(p->context);
-	pa_threaded_mainloop_free(p->mainloop);
-
-	close(p->thread_fd);
-	close(p->main_fd);
+	if (p->main_fd >= 0)
+		close(p->main_fd);
 
 	free(p);
 }
-- 
1.6.3.3