[gst-cvs] gstreamer: caps: simplify code a bit
Tim Müller
tpm at kemper.freedesktop.org
Wed Sep 8 10:55:55 PDT 2010
Module: gstreamer
Branch: master
Commit: bf2bdba6b391bc1e411b2cf8e25de8dca2ef612b
URL: http://cgit.freedesktop.org/gstreamer/gstreamer/commit/?id=bf2bdba6b391bc1e411b2cf8e25de8dca2ef612b
Author: Tim-Philipp Müller <tim.muller at collabora.co.uk>
Date: Wed Sep 8 18:41:18 2010 +0100
caps: simplify code a bit
No need to call g_slist_length() here.
---
gst/gstcaps.c | 29 +++++++++++------------------
1 files changed, 11 insertions(+), 18 deletions(-)
diff --git a/gst/gstcaps.c b/gst/gstcaps.c
index 14f9f74..dd3303e 100644
--- a/gst/gstcaps.c
+++ b/gst/gstcaps.c
@@ -1837,24 +1837,17 @@ gst_caps_structure_simplify (GstStructure ** result,
/* try to subtract to get a real subset */
if (gst_caps_structure_subtract (&list, simplify, compare)) {
- switch (g_slist_length (list)) {
- case 0:
- *result = NULL;
- return TRUE;
- case 1:
- *result = list->data;
- g_slist_free (list);
- return TRUE;
- default:
- {
- GSList *walk;
-
- for (walk = list; walk; walk = g_slist_next (walk)) {
- gst_structure_free (walk->data);
- }
- g_slist_free (list);
- break;
- }
+ if (list == NULL) { /* no result */
+ *result = NULL;
+ return TRUE;
+ } else if (list->next == NULL) { /* one result */
+ *result = list->data;
+ g_slist_free (list);
+ return TRUE;
+ } else { /* multiple results */
+ g_slist_foreach (list, (GFunc) gst_structure_free, NULL);
+ g_slist_free (list);
+ list = NULL;
}
}
More information about the Gstreamer-commits
mailing list