]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - glsdk/gstreamer0-10.git/blob - tests/old/testsuite/refcounting/element.c
Merged from INCSCHED on 200505251!!!
[glsdk/gstreamer0-10.git] / tests / old / testsuite / refcounting / element.c
1 #include <gst/gst.h>
3 #define ITERS 100000
4 #include <stdlib.h>
5 #include "mem.h"
7 int
8 main (int argc, gchar *argv[])
9 {
10   GstElement *element;
11   long usage1;
12   gint i, iters;
14   gst_init (&argc, &argv);
16   if (argc == 2)
17     iters = atoi (argv[1]);
18   else
19     iters = ITERS;
21   g_print ("starting test\n");
22   usage1 = vmsize();
24   element = gst_element_new ();
25   gst_object_unref (GST_OBJECT (element));
26   g_print ("create/unref new element %ld\n", vmsize()-usage1);
28   for (i=0; i<iters;i++) {
29     element = gst_element_new ();
30     gst_object_unref (GST_OBJECT (element));
31   }
32   g_print ("create/unref %d elements %ld\n", iters, vmsize()-usage1);
34   element = gst_element_new ();
35   g_assert (GST_OBJECT_FLOATING (element));
36   gst_object_ref (GST_OBJECT (element));
37   gst_object_sink (GST_OBJECT (element));
38   g_assert (!GST_OBJECT_FLOATING (element));
39   gst_object_unref (GST_OBJECT (element));
40   g_print ("create/ref/sink/unref new element %ld\n", vmsize()-usage1);
43   for (i=0; i<iters;i++) {
44     element = gst_element_new ();
45     gst_object_ref (GST_OBJECT (element));
46     gst_object_sink (GST_OBJECT (element));
47     gst_object_unref (GST_OBJECT (element));
48   }
49   g_print ("create/ref/sink/unref %d elements %ld\n", iters, vmsize()-usage1);
51   element = gst_element_new ();
52   g_assert (!GST_OBJECT_DESTROYED (element));
53   gst_object_destroy (GST_OBJECT (element));
54   g_assert (GST_OBJECT_DESTROYED (element));
55   gst_object_unref (GST_OBJECT (element));
56   g_print ("create/destroy/unref new element %ld\n", vmsize()-usage1);
57   
58   for (i=0; i<iters;i++) {
59     element = gst_element_new ();
60     gst_object_destroy (GST_OBJECT (element));
61     gst_object_unref (GST_OBJECT (element));
62   }
63   g_print ("create/destroy/unref %d element %ld\n", iters, vmsize()-usage1);
65   element = gst_element_new ();
66   gst_object_ref (GST_OBJECT (element));
67   gst_object_unref (GST_OBJECT (element));
68   gst_object_unref (GST_OBJECT (element));
69   g_print ("create/ref/unref/unref new element %ld\n", vmsize()-usage1);
70   
71   for (i=0; i<iters;i++) {
72     element = gst_element_new ();
73     gst_object_ref (GST_OBJECT (element));
74     gst_object_unref (GST_OBJECT (element));
75     gst_object_unref (GST_OBJECT (element));
76   }
77   g_print ("create/ref/unref/unref %d element %ld\n", iters, vmsize()-usage1);
79   element = gst_element_new ();
80   gst_object_ref (GST_OBJECT (element));
81   gst_object_destroy (GST_OBJECT (element));
82   gst_object_unref (GST_OBJECT (element));
83   gst_object_unref (GST_OBJECT (element));
84   g_print ("craete/ref/destroy/unref/unref new element %ld\n", vmsize()-usage1);
85   
86   for (i=0; i<iters;i++) {
87     element = gst_element_new ();
88     gst_object_ref (GST_OBJECT (element));
89     gst_object_destroy (GST_OBJECT (element));
90     gst_object_unref (GST_OBJECT (element));
91     gst_object_unref (GST_OBJECT (element));
92   }
93   g_print ("craete/ref/destroy/unref/unref %d elements %ld\n", iters, vmsize()-usage1);
95   for (i=0; i<iters;i++) {
96     element = gst_element_new ();
97     gst_object_ref (GST_OBJECT (element));
98     gst_element_set_name (element, "testing123");
99     gst_object_destroy (GST_OBJECT (element));
100     gst_element_set_name (element, "testing123");
101     gst_object_unref (GST_OBJECT (element));
102     gst_object_unref (GST_OBJECT (element));
103   }
104   g_print ("craete/ref/destroy/unref/unref %d elements with name %ld\n", iters, vmsize()-usage1);
106   element = gst_element_new ();
107   for (i=0; i<iters;i++) {
108     gst_element_set_name (element, "testing");
109   }
110   gst_object_unref (GST_OBJECT (element));
111   g_print ("set name %d times %ld\n", iters, vmsize()-usage1);
113   g_print ("leaked: %ld\n", vmsize()-usage1);
115   return (vmsize()-usage1 ? -1 : 0);