[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