From: Erik W. <ome...@us...> - 2003-01-20 22:03:00
|
CVS Root: /cvsroot/gstreamer Module: gstreamer Changes by: omegahacker Date: Mon Jan 20 2003 14:02:59 PST Log message: moved recursive exit to the front of the call, to make it easier to add prevchain removal Modified files: gst/schedulers : gstbasicscheduler.c Links: http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/schedulers/gstbasicscheduler.c.diff?r1=1.65&r2=1.66 ====Begin Diffs==== Index: gstbasicscheduler.c =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/schedulers/gstbasicscheduler.c,v retrieving revision 1.65 retrieving revision 1.66 diff -u -d -r1.65 -r1.66 --- gstbasicscheduler.c 20 Jan 2003 21:23:19 -0000 1.65 +++ gstbasicscheduler.c 20 Jan 2003 22:02:46 -0000 1.66 @@ -941,8 +941,15 @@ GList *pads; GstPad *pad; GstElement *peerelement; + GstSchedulerChain *prevchain; - /* add the element to the chain */ + /* check to see if it's in a chain already */ + prevchain = gst_basic_scheduler_find_chain (chain->sched, element); + /* if it's already in another chain, we're done */ + if (prevchain != NULL) + return; + + /* add it to this one */ gst_basic_scheduler_chain_add_element (chain, element); GST_DEBUG (GST_CAT_SCHEDULING, "recursing on element \"%s\"", GST_ELEMENT_NAME (element)); @@ -959,12 +966,9 @@ GST_DEBUG (GST_CAT_SCHEDULING, "has peer %s:%s", GST_DEBUG_PAD_NAME (GST_PAD_PEER (pad))); peerelement = GST_PAD_PARENT (GST_PAD_PEER (pad)); if (GST_ELEMENT_SCHED (GST_PAD_PARENT (pad)) == GST_ELEMENT_SCHED (peerelement)) { - GST_DEBUG (GST_CAT_SCHEDULING, "peer \"%s\" is valid for same chain", + GST_DEBUG (GST_CAT_SCHEDULING, "peer \"%s\" is valid for same chain", GST_ELEMENT_NAME (peerelement)); - /* if it's not already in a chain, add it to this one */ - if (gst_basic_scheduler_find_chain (chain->sched, peerelement) == NULL) { - gst_basic_scheduler_chain_recursive_add (chain, peerelement); - } + gst_basic_scheduler_chain_recursive_add (chain, peerelement); } } } |