Fix _pad_get_direction wrt ghostpads.
authorWim Taymans <wim.taymans@gmail.com>
Wed, 9 Mar 2005 17:28:52 +0000 (17:28 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Wed, 9 Mar 2005 17:28:52 +0000 (17:28 +0000)
Original commit message from CVS:
* gst/gstpad.c: (gst_pad_get_direction),
(_gst_pad_default_fixate_foreach), (gst_pad_collectv),
(gst_pad_collect_valist):
* testsuite/bins/interface.c: (main):
* testsuite/caps/audioscale.c: (test_caps):
* testsuite/caps/caps.c: (test1), (test2), (test3):
* testsuite/caps/deserialize.c: (main):
* testsuite/caps/enumcaps.c: (main):
* testsuite/caps/filtercaps.c: (main):
* testsuite/caps/intersect2.c: (main):
* testsuite/caps/random.c: (main):
* testsuite/caps/renegotiate.c: (my_fixate), (main):
* testsuite/caps/sets.c: (check_caps):
* testsuite/caps/simplify.c: (check_caps), (main):
* testsuite/caps/subtract.c: (check_caps):
Fix _pad_get_direction wrt ghostpads.
Fix caps testsuite.

26 files changed:
ChangeLog
gst/gstpad.c
tests/old/testsuite/bins/interface.c
tests/old/testsuite/caps/audioscale.c
tests/old/testsuite/caps/caps.c
tests/old/testsuite/caps/deserialize.c
tests/old/testsuite/caps/enumcaps.c
tests/old/testsuite/caps/filtercaps.c
tests/old/testsuite/caps/intersect2.c
tests/old/testsuite/caps/random.c
tests/old/testsuite/caps/renegotiate.c
tests/old/testsuite/caps/sets.c
tests/old/testsuite/caps/simplify.c
tests/old/testsuite/caps/subtract.c
testsuite/bins/interface.c
testsuite/caps/audioscale.c
testsuite/caps/caps.c
testsuite/caps/deserialize.c
testsuite/caps/enumcaps.c
testsuite/caps/filtercaps.c
testsuite/caps/intersect2.c
testsuite/caps/random.c
testsuite/caps/renegotiate.c
testsuite/caps/sets.c
testsuite/caps/simplify.c
testsuite/caps/subtract.c

index f7391e7..2c03dfe 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,25 @@
 2005-03-09  Wim Taymans  <wim@fluendo.com>
 
+       * gst/gstpad.c: (gst_pad_get_direction),
+       (_gst_pad_default_fixate_foreach), (gst_pad_collectv),
+       (gst_pad_collect_valist):
+       * testsuite/bins/interface.c: (main):
+       * testsuite/caps/audioscale.c: (test_caps):
+       * testsuite/caps/caps.c: (test1), (test2), (test3):
+       * testsuite/caps/deserialize.c: (main):
+       * testsuite/caps/enumcaps.c: (main):
+       * testsuite/caps/filtercaps.c: (main):
+       * testsuite/caps/intersect2.c: (main):
+       * testsuite/caps/random.c: (main):
+       * testsuite/caps/renegotiate.c: (my_fixate), (main):
+       * testsuite/caps/sets.c: (check_caps):
+       * testsuite/caps/simplify.c: (check_caps), (main):
+       * testsuite/caps/subtract.c: (check_caps):
+       Fix _pad_get_direction wrt ghostpads.
+       Fix caps testsuite.
+
+2005-03-09  Wim Taymans  <wim@fluendo.com>
+
        * check/Makefile.am:
        * check/gst/gstbin.c: (START_TEST), (gst_bin_suite), (main):
        * check/gst/gstsystemclock.c: (START_TEST), (gst_clock_debug),
index b699408..8723491 100644 (file)
@@ -454,16 +454,23 @@ GstPadDirection
 gst_pad_get_direction (GstPad * pad)
 {
   GstPadDirection result;
+  GstRealPad *realpad;
 
-  /* pad unkown is a little silly but we need some sort of
+  /* PAD_UNKNOWN is a little silly but we need some sort of
    * error return value */
   g_return_val_if_fail (GST_IS_PAD (pad), GST_PAD_UNKNOWN);
 
-  /* since the direction cannot change at runtime we can
-   * safely read without locking. */
-  result = GST_PAD_DIRECTION (pad);
+  GST_PAD_REALIZE_AND_LOCK (pad, realpad, lost_ghostpad);
+  result = GST_RPAD_DIRECTION (realpad);
+  GST_UNLOCK (realpad);
 
   return result;
+
+  /* errors */
+lost_ghostpad:
+  {
+    return GST_PAD_UNKNOWN;
+  }
 }
 
 /**
index 4201a8c..cefe1c6 100644 (file)
@@ -19,7 +19,7 @@
 
 #include <gst/gst.h>
 
-/* tests if gst_bin_get_(all_)by_interface works */
+/* tests if gst_bin_iterate_(all_)by_interface works */
 
 gint
 main (gint argc, gchar * argv[])
index 9b73dbd..1dd8ad1 100644 (file)
@@ -146,8 +146,8 @@ test_caps (const char *s)
   g_print ("original: %s\nfiltered: %s\n\n", s, s2);
 
   g_free (s2);
-  gst_caps_free (caps);
-  gst_caps_free (caps2);
+  gst_caps_unref (caps);
+  gst_caps_unref (caps2);
 }
 
 
index c816976..bf8cabb 100644 (file)
@@ -12,11 +12,11 @@ test1 (void)
 
   caps = gst_caps_new_empty ();
   g_assert (caps != NULL);
-  gst_caps_free (caps);
+  gst_caps_unref (caps);
 
   caps = gst_caps_new_any ();
   g_assert (caps != NULL);
-  gst_caps_free (caps);
+  gst_caps_unref (caps);
 
   caps = gst_caps_new_simple ("audio/raw", "_int", G_TYPE_INT, 100, NULL);
   g_assert (caps != NULL);
@@ -25,7 +25,7 @@ test1 (void)
   g_assert (GST_CAPS_IS_SIMPLE (caps) == TRUE);
   g_assert (gst_caps_is_fixed (caps) == TRUE);
   g_print ("%s\n", gst_caps_to_string (caps));
-  gst_caps_free (caps);
+  gst_caps_unref (caps);
 
   caps = gst_caps_new_simple ("audio/raw",
       "_double", G_TYPE_DOUBLE, 100.0, NULL);
@@ -35,7 +35,7 @@ test1 (void)
   g_assert (GST_CAPS_IS_SIMPLE (caps) == TRUE);
   g_assert (gst_caps_is_fixed (caps) == TRUE);
   g_print ("%s\n", gst_caps_to_string (caps));
-  gst_caps_free (caps);
+  gst_caps_unref (caps);
 
   caps = gst_caps_new_simple ("audio/raw",
       "_fourcc", GST_TYPE_FOURCC, GST_MAKE_FOURCC ('a', 'b', 'c', 'd'), NULL);
@@ -45,7 +45,7 @@ test1 (void)
   g_assert (GST_CAPS_IS_SIMPLE (caps) == TRUE);
   g_assert (gst_caps_is_fixed (caps) == TRUE);
   g_print ("%s\n", gst_caps_to_string (caps));
-  gst_caps_free (caps);
+  gst_caps_unref (caps);
 
   caps = gst_caps_new_simple ("audio/raw",
       "_boolean", G_TYPE_BOOLEAN, TRUE, NULL);
@@ -55,7 +55,7 @@ test1 (void)
   g_assert (GST_CAPS_IS_SIMPLE (caps) == TRUE);
   g_assert (gst_caps_is_fixed (caps) == TRUE);
   g_print ("%s\n", gst_caps_to_string (caps));
-  gst_caps_free (caps);
+  gst_caps_unref (caps);
 
   caps =
       gst_caps_new_full (gst_structure_new ("audio/raw", "_int", G_TYPE_INT,
@@ -67,7 +67,7 @@ test1 (void)
   g_assert (GST_CAPS_IS_SIMPLE (caps) == FALSE);
   g_assert (gst_caps_is_fixed (caps) == FALSE);
   g_print ("%s\n", gst_caps_to_string (caps));
-  gst_caps_free (caps);
+  gst_caps_unref (caps);
 
   caps = gst_caps_new_simple ("audio/raw", "_int", G_TYPE_INT, 100, NULL);
   g_assert (caps != NULL);
@@ -79,8 +79,8 @@ test1 (void)
   g_assert (gst_caps_is_fixed (caps2) == TRUE);
   g_print ("%s\n", gst_caps_to_string (caps));
   g_print ("%s\n", gst_caps_to_string (caps2));
-  gst_caps_free (caps);
-  gst_caps_free (caps2);
+  gst_caps_unref (caps);
+  gst_caps_unref (caps2);
 
   caps = gst_caps_new_simple ("audio/raw", "_int", G_TYPE_INT, 100, NULL);
   gst_caps_append (caps,
@@ -91,7 +91,7 @@ test1 (void)
   g_assert (GST_CAPS_IS_SIMPLE (caps) == FALSE);
   g_assert (gst_caps_is_fixed (caps) == FALSE);
   g_print ("%s\n", gst_caps_to_string (caps));
-  gst_caps_free (caps);
+  gst_caps_unref (caps);
 
   caps = gst_caps_new_simple ("audio/raw", "_int", G_TYPE_INT, 100, NULL);
   g_assert (caps != NULL);
@@ -102,7 +102,7 @@ test1 (void)
   g_assert (GST_CAPS_IS_SIMPLE (caps) == FALSE);
   g_assert (gst_caps_is_fixed (caps) == FALSE);
   g_print ("%s\n", gst_caps_to_string (caps));
-  gst_caps_free (caps);
+  gst_caps_unref (caps);
 }
 
 void
@@ -122,9 +122,9 @@ test2 (void)
           NULL), NULL);
   caps = gst_caps_intersect (caps1, caps2);
   g_print ("%s\n", gst_caps_to_string (caps));
-  gst_caps_free (caps);
-  gst_caps_free (caps1);
-  gst_caps_free (caps2);
+  gst_caps_unref (caps);
+  gst_caps_unref (caps1);
+  gst_caps_unref (caps2);
 
 }
 
@@ -143,7 +143,7 @@ test3 (void)
   g_assert (gst_caps_is_any (caps1));
   g_assert (gst_caps_get_size (caps1) == 0);
 
-  gst_caps_free (caps1);
+  gst_caps_unref (caps1);
 }
 
 int
index d17dd49..d48f6be 100644 (file)
@@ -66,14 +66,14 @@ main (int argc, char *argv[])
           abort ();
         }
 
-        gst_caps_free (caps);
+        gst_caps_unref (caps);
       }
 
       g_print ("parsed each structure individually\n");
       abort ();
     }
 
-    gst_caps_free (caps);
+    gst_caps_unref (caps);
     g_free (list[i]);
   }
 
index 7585333..ac36e7b 100644 (file)
@@ -87,8 +87,8 @@ main (gint argc, gchar * argv[])
   yes = g_value_get_enum (gst_structure_get_value (strc, "yes"));
   no = g_value_get_enum (gst_structure_get_value (strc, "no"));
   g_assert (yes == TEST_YES && no == TEST_NO);
-  gst_caps_free (caps);
-  gst_caps_free (res_caps);
+  gst_caps_unref (caps);
+  gst_caps_unref (res_caps);
 
   /* yes */
   return 0;
index 51466e5..4061e34 100644 (file)
@@ -39,9 +39,11 @@ main (gint argc, gchar ** argv)
   caps = gst_pad_get_caps (gst_element_get_pad (identity, "sink"));
   g_print ("caps:         %s\n", gst_caps_to_string (caps));
   g_assert (!gst_caps_is_any (caps));
+
   caps = gst_pad_get_allowed_caps (gst_element_get_pad (identity, "sink"));
   g_print ("allowed caps: %s\n", gst_caps_to_string (caps));
-  g_assert (gst_caps_is_any (caps));
+  /* get_allowed_caps doesn't mean anything if you aren't connected */
+  g_assert (!caps);
 
   return 0;
 }
index e43bc63..d240993 100644 (file)
@@ -75,8 +75,8 @@ main (int argc, char *argv[])
   g_print ("caps %s\n", gst_caps_to_string (caps));
   if (gst_caps_is_empty (caps))
     return 1;
-  gst_caps_free (caps1);
-  gst_caps_free (caps2);
+  gst_caps_unref (caps1);
+  gst_caps_unref (caps2);
 
   caps1 = gst_caps_copy (gst_static_caps_get (&rawcaps2));
   caps2 = gst_caps_copy (gst_static_caps_get (&rawcaps3));
@@ -84,8 +84,8 @@ main (int argc, char *argv[])
   g_print ("caps %s\n", gst_caps_to_string (caps));
   if (gst_caps_is_empty (caps))
     return 1;
-  gst_caps_free (caps1);
-  gst_caps_free (caps2);
+  gst_caps_unref (caps1);
+  gst_caps_unref (caps2);
 
   caps1 = gst_caps_copy (gst_static_caps_get (&rawcaps4));
   caps2 = gst_caps_copy (gst_static_caps_get (&rawcaps5));
@@ -94,10 +94,10 @@ main (int argc, char *argv[])
   caps = gst_caps_intersect (caps3, caps4);
   g_print ("caps4 %s\n", gst_caps_to_string (caps4));
   g_print ("caps %s\n", gst_caps_to_string (caps));
-  gst_caps_free (caps1);
-  gst_caps_free (caps2);
-  gst_caps_free (caps3);
-  gst_caps_free (caps4);
+  gst_caps_unref (caps1);
+  gst_caps_unref (caps2);
+  gst_caps_unref (caps3);
+  gst_caps_unref (caps4);
 
   caps1 = gst_caps_copy (gst_static_caps_get (&rawcaps7));
   caps2 = gst_caps_copy (gst_static_caps_get (&rawcaps8));
@@ -105,8 +105,8 @@ main (int argc, char *argv[])
   g_print ("caps %s\n", gst_caps_to_string (caps));
   if (gst_caps_is_empty (caps))
     return 1;
-  gst_caps_free (caps1);
-  gst_caps_free (caps2);
+  gst_caps_unref (caps1);
+  gst_caps_unref (caps2);
 
   caps1 = gst_caps_copy (gst_static_caps_get (&rawcaps9));
   caps2 = gst_caps_copy (gst_static_caps_get (&rawcaps10));
@@ -114,8 +114,8 @@ main (int argc, char *argv[])
   g_print ("caps %s\n", gst_caps_to_string (caps));
   if (gst_caps_is_empty (caps))
     return 1;
-  gst_caps_free (caps1);
-  gst_caps_free (caps2);
+  gst_caps_unref (caps1);
+  gst_caps_unref (caps2);
 
   return 0;
 }
index 6b10abc..d604436 100644 (file)
@@ -46,7 +46,7 @@ main (gint argc, gchar * argv[])
     gst_debug_add_log_function (assert_on_error, NULL);
     gst_caps_do_simplify (caps);
     gst_debug_remove_log_function (assert_on_error);
-    gst_caps_free (caps);
+    gst_caps_unref (caps);
   }
 
   /* TEST 2:
index 377ffe0..7ff14b2 100644 (file)
@@ -1,6 +1,8 @@
 
 #include <gst/gst.h>
 #include <string.h>
+#include <unistd.h>
+
 
 static GstPad *sinesrcpad;
 
@@ -42,11 +44,11 @@ my_fixate (GstPad * pad, GstCaps * caps, gpointer user_data)
     }
     icaps = gst_caps_intersect (caps, mycaps);
     if (!gst_caps_is_empty (icaps)) {
-      gst_caps_free (icaps);
+      gst_caps_unref (icaps);
       g_print ("returning %d\n", rate);
       return gst_caps_copy (mycaps);
     }
-    gst_caps_free (icaps);
+    gst_caps_unref (icaps);
   }
 
   return NULL;
@@ -56,11 +58,10 @@ int
 main (int argc, char *argv[])
 {
   GstElement *pipeline;
-  const GList *list;
-  const GList *l2;
-  int i;
-  int ret;
   GError *error = NULL;
+  GstIterator *iter1, *iter2;
+  gint done1 = FALSE, done2 = FALSE;
+  gpointer element;
 
   gst_init (&argc, &argv);
 
@@ -77,42 +78,73 @@ main (int argc, char *argv[])
     exit (0);
   }
 
-  list = gst_bin_get_list (GST_BIN (pipeline));
-  while (list) {
-    GstElement *element = GST_ELEMENT (list->data);
-
-    l2 = gst_element_get_pad_list (element);
-    while (l2) {
-      GstPad *pad = GST_PAD (l2->data);
-
-      if (gst_pad_get_direction (pad) == GST_PAD_SRC) {
-        g_signal_connect (G_OBJECT (pad), "fixate", G_CALLBACK (my_fixate),
-            NULL);
+  iter1 = gst_bin_iterate_elements (GST_BIN (pipeline));
+  while (!done1) {
+    switch (gst_iterator_next (iter1, &element)) {
+      case GST_ITERATOR_OK:
+      {
+        gpointer pad;
+
+        iter2 = gst_element_iterate_pads (element);
+        while (!done2) {
+          switch (gst_iterator_next (iter2, &pad)) {
+            case GST_ITERATOR_OK:
+              if (gst_pad_get_direction (pad) == GST_PAD_SRC) {
+                g_signal_connect (G_OBJECT (pad), "fixate",
+                    G_CALLBACK (my_fixate), NULL);
+              }
+              gst_object_unref (pad);
+              break;
+            case GST_ITERATOR_DONE:
+              done2 = TRUE;
+              break;
+            case GST_ITERATOR_RESYNC:
+            case GST_ITERATOR_ERROR:
+              exit (1);
+              break;
+          }
+        }
+        gst_iterator_free (iter2);
+
+        gst_object_unref (element);
+        break;
       }
-      l2 = g_list_next (l2);
+      case GST_ITERATOR_DONE:
+        done1 = TRUE;
+        break;
+      case GST_ITERATOR_RESYNC:
+      case GST_ITERATOR_ERROR:
+        exit (1);
+        break;
     }
-    list = g_list_next (list);
   }
+  gst_iterator_free (iter1);
 
-  g_signal_connect (pipeline, "deep_notify",
-      G_CALLBACK (gst_element_default_deep_notify), NULL);
+  /*g_signal_connect (pipeline, "deep_notify",
+     G_CALLBACK (gst_element_default_deep_notify), NULL); */
 
   gst_element_set_state (pipeline, GST_STATE_PLAYING);
-  i = 0;
-  while (1) {
-    gst_bin_iterate (GST_BIN (pipeline));
-    i++;
-    if (i == 10) {
-      stage = 1;
-      g_print ("10 iterations\n");
-      ret = gst_pad_renegotiate (sinesrcpad);
-      g_print ("negotiation returned %d\n", ret);
-    }
-    if (i == 20) {
-      g_print ("20 iterations\n");
-      exit (0);
-    }
-  }
+
+  /*
+     i = 0;
+     while (1) {
+     gst_bin_iterate (GST_BIN (pipeline));
+     i++;
+     if (i == 10) {
+     stage = 1;
+     g_print ("10 iterations\n");
+     ret = gst_pad_renegotiate (sinesrcpad);
+     g_print ("negotiation returned %d\n", ret);
+     }
+     if (i == 20) {
+     g_print ("20 iterations\n");
+     exit (0);
+     }
+     }
+   */
+  /* Like totally not sure how to do this in THREADED. Punting for now! */
+
+  sleep (5);
 
   return 0;
 }
index 676d194..e279427 100644 (file)
@@ -42,7 +42,7 @@ check_caps (const gchar * eins, const gchar * zwei)
     test3 = gst_caps_intersect (test2, two);
     g_print ("  empty  =  %s\n", gst_caps_to_string (test3));
     g_assert (gst_caps_is_empty (test3));
-    gst_caps_free (test3);
+    gst_caps_unref (test3);
     test3 = gst_caps_union (test2, two);
     g_print ("  A + B  =  %u\n", strlen (gst_caps_to_string (test3)));
     /* test3 = one - two + two = one + two */
@@ -52,15 +52,15 @@ check_caps (const gchar * eins, const gchar * zwei)
     test4 = gst_caps_union (one, two);
     g_assert (gst_caps_is_equal (test3, test4));
     g_print ("         NOT EQUAL\n\n");
-    gst_caps_free (test2);
-    gst_caps_free (test3);
-    gst_caps_free (test4);
+    gst_caps_unref (test2);
+    gst_caps_unref (test3);
+    gst_caps_unref (test4);
   } else {
     g_print ("         ANY CAPS\n\n");
   }
-  gst_caps_free (test);
-  gst_caps_free (two);
-  gst_caps_free (one);
+  gst_caps_unref (test);
+  gst_caps_unref (two);
+  gst_caps_unref (one);
 }
 
 gint
index 99d5173..6adb65c 100644 (file)
@@ -61,7 +61,7 @@ check_caps (GstCaps * caps)
 
   g_free (before);
   g_free (after);
-  gst_caps_free (old);
+  gst_caps_unref (old);
 }
 
 gint
@@ -86,7 +86,7 @@ main (gint argc, gchar ** argv)
 
         g_print ("%2u - %2u ", i, j);
         check_caps (temp);
-        gst_caps_free (temp);
+        gst_caps_unref (temp);
         /* union */
         temp = gst_caps_union (caps, caps2);
         g_print ("%2u + %2u ", i, j);
@@ -99,11 +99,11 @@ main (gint argc, gchar ** argv)
         temp2 = gst_caps_copy (caps);
         gst_caps_append (temp2, caps2);
         g_assert (gst_caps_is_equal (temp, temp2));
-        gst_caps_free (temp2);
-        gst_caps_free (temp);
+        gst_caps_unref (temp2);
+        gst_caps_unref (temp);
       }
     }
-    gst_caps_free (caps);
+    gst_caps_unref (caps);
   }
   g_print ("\n\nSTATISTICS:\n");
   g_print ("\nOf all caps tried\n");
index fe80d44..9d1053c 100644 (file)
@@ -30,23 +30,23 @@ check_caps (const gchar * set, const gchar * subset)
   /* basics */
   test = gst_caps_subtract (one, one);
   g_assert (gst_caps_is_empty (test));
-  gst_caps_free (test);
+  gst_caps_unref (test);
   test = gst_caps_subtract (two, two);
   g_assert (gst_caps_is_empty (test));
-  gst_caps_free (test);
+  gst_caps_unref (test);
   test = gst_caps_subtract (two, one);
   g_assert (gst_caps_is_empty (test));
-  gst_caps_free (test);
+  gst_caps_unref (test);
   /* now the nice part */
   test = gst_caps_subtract (one, two);
   g_assert (!gst_caps_is_empty (test));
   g_print ("    A - B  =  %s\n", gst_caps_to_string (test));
   test2 = gst_caps_union (test, two);
   g_print ("A - B + B  =  %s\n", gst_caps_to_string (test2));
-  gst_caps_free (test);
+  gst_caps_unref (test);
   test = gst_caps_subtract (test2, one);
   g_assert (gst_caps_is_empty (test));
-  gst_caps_free (test);
+  gst_caps_unref (test);
 }
 
 gint
index 4201a8c..cefe1c6 100644 (file)
@@ -19,7 +19,7 @@
 
 #include <gst/gst.h>
 
-/* tests if gst_bin_get_(all_)by_interface works */
+/* tests if gst_bin_iterate_(all_)by_interface works */
 
 gint
 main (gint argc, gchar * argv[])
index 9b73dbd..1dd8ad1 100644 (file)
@@ -146,8 +146,8 @@ test_caps (const char *s)
   g_print ("original: %s\nfiltered: %s\n\n", s, s2);
 
   g_free (s2);
-  gst_caps_free (caps);
-  gst_caps_free (caps2);
+  gst_caps_unref (caps);
+  gst_caps_unref (caps2);
 }
 
 
index c816976..bf8cabb 100644 (file)
@@ -12,11 +12,11 @@ test1 (void)
 
   caps = gst_caps_new_empty ();
   g_assert (caps != NULL);
-  gst_caps_free (caps);
+  gst_caps_unref (caps);
 
   caps = gst_caps_new_any ();
   g_assert (caps != NULL);
-  gst_caps_free (caps);
+  gst_caps_unref (caps);
 
   caps = gst_caps_new_simple ("audio/raw", "_int", G_TYPE_INT, 100, NULL);
   g_assert (caps != NULL);
@@ -25,7 +25,7 @@ test1 (void)
   g_assert (GST_CAPS_IS_SIMPLE (caps) == TRUE);
   g_assert (gst_caps_is_fixed (caps) == TRUE);
   g_print ("%s\n", gst_caps_to_string (caps));
-  gst_caps_free (caps);
+  gst_caps_unref (caps);
 
   caps = gst_caps_new_simple ("audio/raw",
       "_double", G_TYPE_DOUBLE, 100.0, NULL);
@@ -35,7 +35,7 @@ test1 (void)
   g_assert (GST_CAPS_IS_SIMPLE (caps) == TRUE);
   g_assert (gst_caps_is_fixed (caps) == TRUE);
   g_print ("%s\n", gst_caps_to_string (caps));
-  gst_caps_free (caps);
+  gst_caps_unref (caps);
 
   caps = gst_caps_new_simple ("audio/raw",
       "_fourcc", GST_TYPE_FOURCC, GST_MAKE_FOURCC ('a', 'b', 'c', 'd'), NULL);
@@ -45,7 +45,7 @@ test1 (void)
   g_assert (GST_CAPS_IS_SIMPLE (caps) == TRUE);
   g_assert (gst_caps_is_fixed (caps) == TRUE);
   g_print ("%s\n", gst_caps_to_string (caps));
-  gst_caps_free (caps);
+  gst_caps_unref (caps);
 
   caps = gst_caps_new_simple ("audio/raw",
       "_boolean", G_TYPE_BOOLEAN, TRUE, NULL);
@@ -55,7 +55,7 @@ test1 (void)
   g_assert (GST_CAPS_IS_SIMPLE (caps) == TRUE);
   g_assert (gst_caps_is_fixed (caps) == TRUE);
   g_print ("%s\n", gst_caps_to_string (caps));
-  gst_caps_free (caps);
+  gst_caps_unref (caps);
 
   caps =
       gst_caps_new_full (gst_structure_new ("audio/raw", "_int", G_TYPE_INT,
@@ -67,7 +67,7 @@ test1 (void)
   g_assert (GST_CAPS_IS_SIMPLE (caps) == FALSE);
   g_assert (gst_caps_is_fixed (caps) == FALSE);
   g_print ("%s\n", gst_caps_to_string (caps));
-  gst_caps_free (caps);
+  gst_caps_unref (caps);
 
   caps = gst_caps_new_simple ("audio/raw", "_int", G_TYPE_INT, 100, NULL);
   g_assert (caps != NULL);
@@ -79,8 +79,8 @@ test1 (void)
   g_assert (gst_caps_is_fixed (caps2) == TRUE);
   g_print ("%s\n", gst_caps_to_string (caps));
   g_print ("%s\n", gst_caps_to_string (caps2));
-  gst_caps_free (caps);
-  gst_caps_free (caps2);
+  gst_caps_unref (caps);
+  gst_caps_unref (caps2);
 
   caps = gst_caps_new_simple ("audio/raw", "_int", G_TYPE_INT, 100, NULL);
   gst_caps_append (caps,
@@ -91,7 +91,7 @@ test1 (void)
   g_assert (GST_CAPS_IS_SIMPLE (caps) == FALSE);
   g_assert (gst_caps_is_fixed (caps) == FALSE);
   g_print ("%s\n", gst_caps_to_string (caps));
-  gst_caps_free (caps);
+  gst_caps_unref (caps);
 
   caps = gst_caps_new_simple ("audio/raw", "_int", G_TYPE_INT, 100, NULL);
   g_assert (caps != NULL);
@@ -102,7 +102,7 @@ test1 (void)
   g_assert (GST_CAPS_IS_SIMPLE (caps) == FALSE);
   g_assert (gst_caps_is_fixed (caps) == FALSE);
   g_print ("%s\n", gst_caps_to_string (caps));
-  gst_caps_free (caps);
+  gst_caps_unref (caps);
 }
 
 void
@@ -122,9 +122,9 @@ test2 (void)
           NULL), NULL);
   caps = gst_caps_intersect (caps1, caps2);
   g_print ("%s\n", gst_caps_to_string (caps));
-  gst_caps_free (caps);
-  gst_caps_free (caps1);
-  gst_caps_free (caps2);
+  gst_caps_unref (caps);
+  gst_caps_unref (caps1);
+  gst_caps_unref (caps2);
 
 }
 
@@ -143,7 +143,7 @@ test3 (void)
   g_assert (gst_caps_is_any (caps1));
   g_assert (gst_caps_get_size (caps1) == 0);
 
-  gst_caps_free (caps1);
+  gst_caps_unref (caps1);
 }
 
 int
index d17dd49..d48f6be 100644 (file)
@@ -66,14 +66,14 @@ main (int argc, char *argv[])
           abort ();
         }
 
-        gst_caps_free (caps);
+        gst_caps_unref (caps);
       }
 
       g_print ("parsed each structure individually\n");
       abort ();
     }
 
-    gst_caps_free (caps);
+    gst_caps_unref (caps);
     g_free (list[i]);
   }
 
index 7585333..ac36e7b 100644 (file)
@@ -87,8 +87,8 @@ main (gint argc, gchar * argv[])
   yes = g_value_get_enum (gst_structure_get_value (strc, "yes"));
   no = g_value_get_enum (gst_structure_get_value (strc, "no"));
   g_assert (yes == TEST_YES && no == TEST_NO);
-  gst_caps_free (caps);
-  gst_caps_free (res_caps);
+  gst_caps_unref (caps);
+  gst_caps_unref (res_caps);
 
   /* yes */
   return 0;
index 51466e5..4061e34 100644 (file)
@@ -39,9 +39,11 @@ main (gint argc, gchar ** argv)
   caps = gst_pad_get_caps (gst_element_get_pad (identity, "sink"));
   g_print ("caps:         %s\n", gst_caps_to_string (caps));
   g_assert (!gst_caps_is_any (caps));
+
   caps = gst_pad_get_allowed_caps (gst_element_get_pad (identity, "sink"));
   g_print ("allowed caps: %s\n", gst_caps_to_string (caps));
-  g_assert (gst_caps_is_any (caps));
+  /* get_allowed_caps doesn't mean anything if you aren't connected */
+  g_assert (!caps);
 
   return 0;
 }
index e43bc63..d240993 100644 (file)
@@ -75,8 +75,8 @@ main (int argc, char *argv[])
   g_print ("caps %s\n", gst_caps_to_string (caps));
   if (gst_caps_is_empty (caps))
     return 1;
-  gst_caps_free (caps1);
-  gst_caps_free (caps2);
+  gst_caps_unref (caps1);
+  gst_caps_unref (caps2);
 
   caps1 = gst_caps_copy (gst_static_caps_get (&rawcaps2));
   caps2 = gst_caps_copy (gst_static_caps_get (&rawcaps3));
@@ -84,8 +84,8 @@ main (int argc, char *argv[])
   g_print ("caps %s\n", gst_caps_to_string (caps));
   if (gst_caps_is_empty (caps))
     return 1;
-  gst_caps_free (caps1);
-  gst_caps_free (caps2);
+  gst_caps_unref (caps1);
+  gst_caps_unref (caps2);
 
   caps1 = gst_caps_copy (gst_static_caps_get (&rawcaps4));
   caps2 = gst_caps_copy (gst_static_caps_get (&rawcaps5));
@@ -94,10 +94,10 @@ main (int argc, char *argv[])
   caps = gst_caps_intersect (caps3, caps4);
   g_print ("caps4 %s\n", gst_caps_to_string (caps4));
   g_print ("caps %s\n", gst_caps_to_string (caps));
-  gst_caps_free (caps1);
-  gst_caps_free (caps2);
-  gst_caps_free (caps3);
-  gst_caps_free (caps4);
+  gst_caps_unref (caps1);
+  gst_caps_unref (caps2);
+  gst_caps_unref (caps3);
+  gst_caps_unref (caps4);
 
   caps1 = gst_caps_copy (gst_static_caps_get (&rawcaps7));
   caps2 = gst_caps_copy (gst_static_caps_get (&rawcaps8));
@@ -105,8 +105,8 @@ main (int argc, char *argv[])
   g_print ("caps %s\n", gst_caps_to_string (caps));
   if (gst_caps_is_empty (caps))
     return 1;
-  gst_caps_free (caps1);
-  gst_caps_free (caps2);
+  gst_caps_unref (caps1);
+  gst_caps_unref (caps2);
 
   caps1 = gst_caps_copy (gst_static_caps_get (&rawcaps9));
   caps2 = gst_caps_copy (gst_static_caps_get (&rawcaps10));
@@ -114,8 +114,8 @@ main (int argc, char *argv[])
   g_print ("caps %s\n", gst_caps_to_string (caps));
   if (gst_caps_is_empty (caps))
     return 1;
-  gst_caps_free (caps1);
-  gst_caps_free (caps2);
+  gst_caps_unref (caps1);
+  gst_caps_unref (caps2);
 
   return 0;
 }
index 6b10abc..d604436 100644 (file)
@@ -46,7 +46,7 @@ main (gint argc, gchar * argv[])
     gst_debug_add_log_function (assert_on_error, NULL);
     gst_caps_do_simplify (caps);
     gst_debug_remove_log_function (assert_on_error);
-    gst_caps_free (caps);
+    gst_caps_unref (caps);
   }
 
   /* TEST 2:
index 377ffe0..7ff14b2 100644 (file)
@@ -1,6 +1,8 @@
 
 #include <gst/gst.h>
 #include <string.h>
+#include <unistd.h>
+
 
 static GstPad *sinesrcpad;
 
@@ -42,11 +44,11 @@ my_fixate (GstPad * pad, GstCaps * caps, gpointer user_data)
     }
     icaps = gst_caps_intersect (caps, mycaps);
     if (!gst_caps_is_empty (icaps)) {
-      gst_caps_free (icaps);
+      gst_caps_unref (icaps);
       g_print ("returning %d\n", rate);
       return gst_caps_copy (mycaps);
     }
-    gst_caps_free (icaps);
+    gst_caps_unref (icaps);
   }
 
   return NULL;
@@ -56,11 +58,10 @@ int
 main (int argc, char *argv[])
 {
   GstElement *pipeline;
-  const GList *list;
-  const GList *l2;
-  int i;
-  int ret;
   GError *error = NULL;
+  GstIterator *iter1, *iter2;
+  gint done1 = FALSE, done2 = FALSE;
+  gpointer element;
 
   gst_init (&argc, &argv);
 
@@ -77,42 +78,73 @@ main (int argc, char *argv[])
     exit (0);
   }
 
-  list = gst_bin_get_list (GST_BIN (pipeline));
-  while (list) {
-    GstElement *element = GST_ELEMENT (list->data);
-
-    l2 = gst_element_get_pad_list (element);
-    while (l2) {
-      GstPad *pad = GST_PAD (l2->data);
-
-      if (gst_pad_get_direction (pad) == GST_PAD_SRC) {
-        g_signal_connect (G_OBJECT (pad), "fixate", G_CALLBACK (my_fixate),
-            NULL);
+  iter1 = gst_bin_iterate_elements (GST_BIN (pipeline));
+  while (!done1) {
+    switch (gst_iterator_next (iter1, &element)) {
+      case GST_ITERATOR_OK:
+      {
+        gpointer pad;
+
+        iter2 = gst_element_iterate_pads (element);
+        while (!done2) {
+          switch (gst_iterator_next (iter2, &pad)) {
+            case GST_ITERATOR_OK:
+              if (gst_pad_get_direction (pad) == GST_PAD_SRC) {
+                g_signal_connect (G_OBJECT (pad), "fixate",
+                    G_CALLBACK (my_fixate), NULL);
+              }
+              gst_object_unref (pad);
+              break;
+            case GST_ITERATOR_DONE:
+              done2 = TRUE;
+              break;
+            case GST_ITERATOR_RESYNC:
+            case GST_ITERATOR_ERROR:
+              exit (1);
+              break;
+          }
+        }
+        gst_iterator_free (iter2);
+
+        gst_object_unref (element);
+        break;
       }
-      l2 = g_list_next (l2);
+      case GST_ITERATOR_DONE:
+        done1 = TRUE;
+        break;
+      case GST_ITERATOR_RESYNC:
+      case GST_ITERATOR_ERROR:
+        exit (1);
+        break;
     }
-    list = g_list_next (list);
   }
+  gst_iterator_free (iter1);
 
-  g_signal_connect (pipeline, "deep_notify",
-      G_CALLBACK (gst_element_default_deep_notify), NULL);
+  /*g_signal_connect (pipeline, "deep_notify",
+     G_CALLBACK (gst_element_default_deep_notify), NULL); */
 
   gst_element_set_state (pipeline, GST_STATE_PLAYING);
-  i = 0;
-  while (1) {
-    gst_bin_iterate (GST_BIN (pipeline));
-    i++;
-    if (i == 10) {
-      stage = 1;
-      g_print ("10 iterations\n");
-      ret = gst_pad_renegotiate (sinesrcpad);
-      g_print ("negotiation returned %d\n", ret);
-    }
-    if (i == 20) {
-      g_print ("20 iterations\n");
-      exit (0);
-    }
-  }
+
+  /*
+     i = 0;
+     while (1) {
+     gst_bin_iterate (GST_BIN (pipeline));
+     i++;
+     if (i == 10) {
+     stage = 1;
+     g_print ("10 iterations\n");
+     ret = gst_pad_renegotiate (sinesrcpad);
+     g_print ("negotiation returned %d\n", ret);
+     }
+     if (i == 20) {
+     g_print ("20 iterations\n");
+     exit (0);
+     }
+     }
+   */
+  /* Like totally not sure how to do this in THREADED. Punting for now! */
+
+  sleep (5);
 
   return 0;
 }
index 676d194..e279427 100644 (file)
@@ -42,7 +42,7 @@ check_caps (const gchar * eins, const gchar * zwei)
     test3 = gst_caps_intersect (test2, two);
     g_print ("  empty  =  %s\n", gst_caps_to_string (test3));
     g_assert (gst_caps_is_empty (test3));
-    gst_caps_free (test3);
+    gst_caps_unref (test3);
     test3 = gst_caps_union (test2, two);
     g_print ("  A + B  =  %u\n", strlen (gst_caps_to_string (test3)));
     /* test3 = one - two + two = one + two */
@@ -52,15 +52,15 @@ check_caps (const gchar * eins, const gchar * zwei)
     test4 = gst_caps_union (one, two);
     g_assert (gst_caps_is_equal (test3, test4));
     g_print ("         NOT EQUAL\n\n");
-    gst_caps_free (test2);
-    gst_caps_free (test3);
-    gst_caps_free (test4);
+    gst_caps_unref (test2);
+    gst_caps_unref (test3);
+    gst_caps_unref (test4);
   } else {
     g_print ("         ANY CAPS\n\n");
   }
-  gst_caps_free (test);
-  gst_caps_free (two);
-  gst_caps_free (one);
+  gst_caps_unref (test);
+  gst_caps_unref (two);
+  gst_caps_unref (one);
 }
 
 gint
index 99d5173..6adb65c 100644 (file)
@@ -61,7 +61,7 @@ check_caps (GstCaps * caps)
 
   g_free (before);
   g_free (after);
-  gst_caps_free (old);
+  gst_caps_unref (old);
 }
 
 gint
@@ -86,7 +86,7 @@ main (gint argc, gchar ** argv)
 
         g_print ("%2u - %2u ", i, j);
         check_caps (temp);
-        gst_caps_free (temp);
+        gst_caps_unref (temp);
         /* union */
         temp = gst_caps_union (caps, caps2);
         g_print ("%2u + %2u ", i, j);
@@ -99,11 +99,11 @@ main (gint argc, gchar ** argv)
         temp2 = gst_caps_copy (caps);
         gst_caps_append (temp2, caps2);
         g_assert (gst_caps_is_equal (temp, temp2));
-        gst_caps_free (temp2);
-        gst_caps_free (temp);
+        gst_caps_unref (temp2);
+        gst_caps_unref (temp);
       }
     }
-    gst_caps_free (caps);
+    gst_caps_unref (caps);
   }
   g_print ("\n\nSTATISTICS:\n");
   g_print ("\nOf all caps tried\n");
index fe80d44..9d1053c 100644 (file)
@@ -30,23 +30,23 @@ check_caps (const gchar * set, const gchar * subset)
   /* basics */
   test = gst_caps_subtract (one, one);
   g_assert (gst_caps_is_empty (test));
-  gst_caps_free (test);
+  gst_caps_unref (test);
   test = gst_caps_subtract (two, two);
   g_assert (gst_caps_is_empty (test));
-  gst_caps_free (test);
+  gst_caps_unref (test);
   test = gst_caps_subtract (two, one);
   g_assert (gst_caps_is_empty (test));
-  gst_caps_free (test);
+  gst_caps_unref (test);
   /* now the nice part */
   test = gst_caps_subtract (one, two);
   g_assert (!gst_caps_is_empty (test));
   g_print ("    A - B  =  %s\n", gst_caps_to_string (test));
   test2 = gst_caps_union (test, two);
   g_print ("A - B + B  =  %s\n", gst_caps_to_string (test2));
-  gst_caps_free (test);
+  gst_caps_unref (test);
   test = gst_caps_subtract (test2, one);
   g_assert (gst_caps_is_empty (test));
-  gst_caps_free (test);
+  gst_caps_unref (test);
 }
 
 gint