From: <wi...@fr...> - 2005-10-07 15:22:52
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: wingo Date: Fri Oct 07 2005 08:22:50 PDT Log message: 2005-10-07 Andy Wingo <wi...@po...> * check/elements/fakesrc.c (test_no_preroll): New check, checks that setting a live fakesrc to PAUSED returns NO_PREROLL both times. * gst/base/gstbasesrc.c (gst_base_src_change_state): Allow a NO_PREROLL from gst_element_change_state to fall through. Modified files: . : ChangeLog check/elements : fakesrc.c gst/base : gstbasesrc.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.1631&r2=1.1632 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/check/elements/fakesrc.c.diff?r1=1.4&r2=1.5 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/base/gstbasesrc.c.diff?r1=1.55&r2=1.56 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.1631 retrieving revision 1.1632 diff -u -d -r1.1631 -r1.1632 --- ChangeLog 7 Oct 2005 12:52:15 -0000 1.1631 +++ ChangeLog 7 Oct 2005 15:22:37 -0000 1.1632 @@ -1,3 +1,12 @@ +2005-10-07 Andy Wingo <wi...@po...> + + * check/elements/fakesrc.c (test_no_preroll): New check, checks + that setting a live fakesrc to PAUSED returns NO_PREROLL both + times. + * gst/base/gstbasesrc.c (gst_base_src_change_state): Allow a + NO_PREROLL from gst_element_change_state to fall through. 2005-10-07 Wim Taymans <wi...@fl...> * gst/gstghostpad.c: (gst_ghost_pad_get_internal), Index: fakesrc.c RCS file: /cvs/gstreamer/gstreamer/check/elements/fakesrc.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- fakesrc.c 2 Sep 2005 15:41:55 -0000 1.4 +++ fakesrc.c 7 Oct 2005 15:22:38 -0000 1.5 @@ -203,6 +203,30 @@ GST_END_TEST; +GST_START_TEST (test_no_preroll) +{ + GstElement *src; + GstStateChangeReturn ret; + src = setup_fakesrc (); + g_object_set (G_OBJECT (src), "is-live", TRUE, NULL); + ret = gst_element_set_state (src, GST_STATE_PAUSED); + fail_unless (ret == GST_STATE_CHANGE_NO_PREROLL, + "error going to paused the first time"); + "error going to paused the second time"); + /* cleanup */ + cleanup_fakesrc (src); +} +GST_END_TEST; Suite * fakesrc_suite (void) @@ -215,6 +239,7 @@ tcase_add_test (tc_chain, test_sizetype_empty); tcase_add_test (tc_chain, test_sizetype_fixed); tcase_add_test (tc_chain, test_sizetype_random); + tcase_add_test (tc_chain, test_no_preroll); return s; } Index: gstbasesrc.c RCS file: /cvs/gstreamer/gstreamer/gst/base/gstbasesrc.c,v retrieving revision 1.55 retrieving revision 1.56 diff -u -d -r1.55 -r1.56 --- gstbasesrc.c 2 Oct 2005 18:57:07 -0000 1.55 +++ gstbasesrc.c 7 Oct 2005 15:22:38 -0000 1.56 @@ -1066,8 +1066,8 @@ gst_base_src_change_state (GstElement * element, GstStateChange transition) { GstBaseSrc *basesrc; - GstStateChangeReturn result = GST_STATE_CHANGE_SUCCESS; - GstStateChangeReturn presult; + GstStateChangeReturn result; + gboolean no_preroll = FALSE; basesrc = GST_BASE_SRC (element); @@ -1078,7 +1078,7 @@ case GST_STATE_CHANGE_READY_TO_PAUSED: GST_LIVE_LOCK (element); if (basesrc->is_live) { - result = GST_STATE_CHANGE_NO_PREROLL; + no_preroll = TRUE; basesrc->live_running = FALSE; } GST_LIVE_UNLOCK (element); @@ -1095,7 +1095,7 @@ break; } - if ((presult = + if ((result = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition)) == GST_STATE_CHANGE_FAILURE) goto failure; @@ -1104,7 +1104,7 @@ case GST_STATE_CHANGE_PLAYING_TO_PAUSED: @@ -1119,12 +1119,15 @@ - return result; + if (no_preroll && result == GST_STATE_CHANGE_SUCCESS) + return GST_STATE_CHANGE_NO_PREROLL; + else + return result; /* ERRORS */ failure: { gst_base_src_stop (basesrc); - return presult; |