bugfixing in pipeline parsing. Fixed the 2 pipelines that are now added to the testsuite

Original commit message from CVS:
bugfixing in pipeline parsing. Fixed the 2 pipelines that are now added to the testsuite
This commit is contained in:
Benjamin Otte 2003-04-16 21:37:35 +00:00
parent 22a96e5e85
commit 45521ec77a
3 changed files with 64 additions and 33 deletions

View file

@ -23,14 +23,16 @@ gchar *
__gst_parse_strdup (gchar *org) __gst_parse_strdup (gchar *org)
{ {
__strings++; __strings++;
/* g_print ("ALLOCATED: %p %s\n", org, org); */ gchar *ret;
return g_strdup (org); ret = g_strdup (org);
/* g_print ("ALLOCATED STR (%3u): %p %s\n", __strings, ret, ret); */
return ret;
} }
void void
__gst_parse_strfree (gchar *str) __gst_parse_strfree (gchar *str)
{ {
if (str) { if (str) {
/* g_print ("FREEING : %p %s\n", str, str); */ /* g_print ("FREEING STR (%3u): %p %s\n", __strings - 1, str, str); */
g_free (str); g_free (str);
g_return_if_fail (__strings > 0); g_return_if_fail (__strings > 0);
__strings--; __strings--;
@ -38,13 +40,17 @@ __gst_parse_strfree (gchar *str)
} }
link_t *__gst_parse_link_new () link_t *__gst_parse_link_new ()
{ {
link_t *ret;
__links++; __links++;
return g_new0 (link_t, 1); ret = g_new0 (link_t, 1);
/* g_print ("ALLOCATED LINK (%3u): %p\n", __links, ret); */
return ret;
} }
void void
__gst_parse_link_free (link_t *data) __gst_parse_link_free (link_t *data)
{ {
if (data) { if (data) {
/* g_print ("FREEING LINK (%3u): %p\n", __links - 1, data); */
g_free (data); g_free (data);
g_return_if_fail (__links > 0); g_return_if_fail (__links > 0);
__links--; __links--;
@ -53,13 +59,17 @@ __gst_parse_link_free (link_t *data)
chain_t * chain_t *
__gst_parse_chain_new () __gst_parse_chain_new ()
{ {
chain_t *ret;
__chains++; __chains++;
return g_new0 (chain_t, 1); ret = g_new0 (chain_t, 1);
/* g_print ("ALLOCATED CHAIN (%3u): %p\n", __chains, ret); */
return ret;
} }
void void
__gst_parse_chain_free (chain_t *data) __gst_parse_chain_free (chain_t *data)
{ {
if (data) { if (data) {
/* g_print ("FREEING CHAIN (%3u): %p\n", __chains - 1, data); */
g_free (data); g_free (data);
g_return_if_fail (__chains > 0); g_return_if_fail (__chains > 0);
__chains--; __chains--;
@ -593,21 +603,22 @@ chain: element { $$ = gst_parse_chain_new ();
} else if ($1->back) { } else if ($1->back) {
if (!$1->back->sink_name) { if (!$1->back->sink_name) {
$1->back->sink = $2->first; $1->back->sink = $2->first;
} else {
((graph_t *) graph)->links = g_slist_prepend (((graph_t *) graph)->links, $1->back);
$1->back = NULL;
} }
} else if ($2->front) { } else if ($2->front) {
if (!$2->front->src_name) { if (!$2->front->src_name) {
$2->front->src = $1->last; $2->front->src = $1->last;
$1->back = $2->front;
} else {
((graph_t *) graph)->links = g_slist_prepend (((graph_t *) graph)->links, $2->front);
} }
$1->back = $2->front;
} }
if ($1->back) if ($1->back) {
if (!$1->back->sink || !$1->back->src) {
((graph_t *) graph)->links = g_slist_prepend (((graph_t *) graph)->links, $1->back);
$1->back = NULL;
} else {
gst_parse_perform_link ($1->back, (graph_t *) graph); gst_parse_perform_link ($1->back, (graph_t *) graph);
}
}
$1->last = $2->last; $1->last = $2->last;
$1->back = $2->back; $1->back = $2->back;
$1->elements = g_slist_concat ($1->elements, $2->elements); $1->elements = g_slist_concat ($1->elements, $2->elements);
@ -642,7 +653,7 @@ chain: element { $$ = gst_parse_chain_new ();
while (walk) { while (walk) {
link_t *link = (link_t *) walk->data; link_t *link = (link_t *) walk->data;
walk = walk->next; walk = walk->next;
if (!link->sink_name) { if (!link->sink_name && walk) {
ERROR (GST_PARSE_ERROR_LINK, "link without sink element"); ERROR (GST_PARSE_ERROR_LINK, "link without sink element");
gst_parse_free_link (link); gst_parse_free_link (link);
} else if (!link->src_name && !link->src) { } else if (!link->src_name && !link->src) {

View file

@ -80,6 +80,8 @@ static gchar *s;
#define PIPELINE7 "fakesrc num-buffers=4 ! tee name=tee .src%d! fakesink tee.src%d ! fakesink fakesink name =\"foo\" tee.src%d ! foo." #define PIPELINE7 "fakesrc num-buffers=4 ! tee name=tee .src%d! fakesink tee.src%d ! fakesink fakesink name =\"foo\" tee.src%d ! foo."
#define PIPELINE8 "fakesrc num-buffers=4 ! tee name=tee1 .src0,src1 ! .sink0, sink1 aggregator ! fakesink" #define PIPELINE8 "fakesrc num-buffers=4 ! tee name=tee1 .src0,src1 ! .sink0, sink1 aggregator ! fakesink"
#define PIPELINE9 "fakesrc num-buffers=4 ! test. fakesink name=test" #define PIPELINE9 "fakesrc num-buffers=4 ! test. fakesink name=test"
#define PIPELINE10 "( fakesrc num-buffers=\"4\" ! ) identity ! fakesink"
gint gint
main (gint argc, gchar *argv[]) main (gint argc, gchar *argv[])
@ -180,5 +182,13 @@ main (gint argc, gchar *argv[])
TEST_RUN; TEST_RUN;
TEST_OK; TEST_OK;
/**
* checks:
* - failed in grammar.y cvs version 1.17
*/
TEST_START (PIPELINE10);
TEST_RUN;
TEST_OK;
return 0; return 0;
} }

View file

@ -80,6 +80,8 @@ static gchar *s;
#define PIPELINE7 "fakesrc num-buffers=4 ! tee name=tee .src%d! fakesink tee.src%d ! fakesink fakesink name =\"foo\" tee.src%d ! foo." #define PIPELINE7 "fakesrc num-buffers=4 ! tee name=tee .src%d! fakesink tee.src%d ! fakesink fakesink name =\"foo\" tee.src%d ! foo."
#define PIPELINE8 "fakesrc num-buffers=4 ! tee name=tee1 .src0,src1 ! .sink0, sink1 aggregator ! fakesink" #define PIPELINE8 "fakesrc num-buffers=4 ! tee name=tee1 .src0,src1 ! .sink0, sink1 aggregator ! fakesink"
#define PIPELINE9 "fakesrc num-buffers=4 ! test. fakesink name=test" #define PIPELINE9 "fakesrc num-buffers=4 ! test. fakesink name=test"
#define PIPELINE10 "( fakesrc num-buffers=\"4\" ! ) identity ! fakesink"
gint gint
main (gint argc, gchar *argv[]) main (gint argc, gchar *argv[])
@ -180,5 +182,13 @@ main (gint argc, gchar *argv[])
TEST_RUN; TEST_RUN;
TEST_OK; TEST_OK;
/**
* checks:
* - failed in grammar.y cvs version 1.17
*/
TEST_START (PIPELINE10);
TEST_RUN;
TEST_OK;
return 0; return 0;
} }