diff options
author | Sebastian Dröge <slomo@circular-chaos.org> | 2013-09-24 16:09:40 +0200 |
---|---|---|
committer | Sebastian Dröge <slomo@circular-chaos.org> | 2013-09-24 16:09:40 +0200 |
commit | 2f89c9b4e85dc40ca7b38ccc6fbd6298ad32e54a (patch) | |
tree | da9e94db59eddeaffa17d735d22ed099350621a4 /libs | |
parent | 4a6883f21d411dc411914054a69aa40d987bf66b (diff) |
Imported Upstream version 1.2.0upstream/1.2.0
Diffstat (limited to 'libs')
-rw-r--r-- | libs/gst/base/gstcollectpads.c | 6 | ||||
-rw-r--r-- | libs/gst/check/gsttestclock.c | 72 |
2 files changed, 59 insertions, 19 deletions
diff --git a/libs/gst/base/gstcollectpads.c b/libs/gst/base/gstcollectpads.c index d24e03b..3d69abd 100644 --- a/libs/gst/base/gstcollectpads.c +++ b/libs/gst/base/gstcollectpads.c @@ -726,7 +726,7 @@ unknown_pad: } /* - * Must be called with STREAM_LOCK. + * Must be called with STREAM_LOCK and OBJECT_LOCK. */ static void gst_collect_pads_set_flushing_unlocked (GstCollectPads * pads, @@ -735,7 +735,7 @@ gst_collect_pads_set_flushing_unlocked (GstCollectPads * pads, GSList *walk = NULL; /* Update the pads flushing flag */ - for (walk = pads->data; walk; walk = g_slist_next (walk)) { + for (walk = pads->priv->pad_list; walk; walk = g_slist_next (walk)) { GstCollectData *cdata = walk->data; if (GST_IS_PAD (cdata->pad)) { @@ -778,7 +778,9 @@ gst_collect_pads_set_flushing (GstCollectPads * pads, gboolean flushing) /* NOTE since this eventually calls _pop, some (STREAM_)LOCK is needed here */ GST_COLLECT_PADS_STREAM_LOCK (pads); + GST_OBJECT_LOCK (pads); gst_collect_pads_set_flushing_unlocked (pads, flushing); + GST_OBJECT_UNLOCK (pads); GST_COLLECT_PADS_STREAM_UNLOCK (pads); } diff --git a/libs/gst/check/gsttestclock.c b/libs/gst/check/gsttestclock.c index e103da8..f9737a6 100644 --- a/libs/gst/check/gsttestclock.c +++ b/libs/gst/check/gsttestclock.c @@ -423,6 +423,9 @@ gst_test_clock_wait (GstClock * clock, "requesting synchronous clock notification at %" GST_TIME_FORMAT, GST_TIME_ARGS (GST_CLOCK_ENTRY_TIME (entry))); + if (GST_CLOCK_ENTRY_STATUS (entry) == GST_CLOCK_UNSCHEDULED) + goto was_unscheduled; + if (gst_test_clock_lookup_entry_context (test_clock, entry) == NULL) gst_test_clock_add_entry (test_clock, entry, jitter); @@ -434,6 +437,15 @@ gst_test_clock_wait (GstClock * clock, GST_OBJECT_UNLOCK (test_clock); return GST_CLOCK_ENTRY_STATUS (entry); + + /* ERRORS */ +was_unscheduled: + { + GST_CAT_DEBUG_OBJECT (GST_CAT_TEST_CLOCK, test_clock, + "entry was unscheduled"); + GST_OBJECT_UNLOCK (test_clock); + return GST_CLOCK_UNSCHEDULED; + } } static GstClockReturn @@ -443,6 +455,9 @@ gst_test_clock_wait_async (GstClock * clock, GstClockEntry * entry) GST_OBJECT_LOCK (test_clock); + if (GST_CLOCK_ENTRY_STATUS (entry) == GST_CLOCK_UNSCHEDULED) + goto was_unscheduled; + GST_CAT_DEBUG_OBJECT (GST_CAT_TEST_CLOCK, test_clock, "requesting asynchronous clock notification at %" GST_TIME_FORMAT, GST_TIME_ARGS (GST_CLOCK_ENTRY_TIME (entry))); @@ -452,6 +467,15 @@ gst_test_clock_wait_async (GstClock * clock, GstClockEntry * entry) GST_OBJECT_UNLOCK (test_clock); return GST_CLOCK_OK; + + /* ERRORS */ +was_unscheduled: + { + GST_CAT_DEBUG_OBJECT (GST_CAT_TEST_CLOCK, test_clock, + "entry was unscheduled"); + GST_OBJECT_UNLOCK (test_clock); + return GST_CLOCK_UNSCHEDULED; + } } static void @@ -621,9 +645,12 @@ gst_test_clock_new_with_start_time (GstClockTime start_time) void gst_test_clock_set_time (GstTestClock * test_clock, GstClockTime new_time) { - GstTestClockPrivate *priv = GST_TEST_CLOCK_GET_PRIVATE (test_clock); + GstTestClockPrivate *priv; + + g_return_if_fail (GST_IS_TEST_CLOCK (test_clock)); + + priv = GST_TEST_CLOCK_GET_PRIVATE (test_clock); - g_assert (GST_IS_TEST_CLOCK (test_clock)); g_assert_cmpuint (new_time, !=, GST_CLOCK_TIME_NONE); GST_OBJECT_LOCK (test_clock); @@ -653,9 +680,12 @@ gst_test_clock_set_time (GstTestClock * test_clock, GstClockTime new_time) void gst_test_clock_advance_time (GstTestClock * test_clock, GstClockTimeDiff delta) { - GstTestClockPrivate *priv = GST_TEST_CLOCK_GET_PRIVATE (test_clock); + GstTestClockPrivate *priv; + + g_return_if_fail (GST_IS_TEST_CLOCK (test_clock)); + + priv = GST_TEST_CLOCK_GET_PRIVATE (test_clock); - g_assert (GST_IS_TEST_CLOCK (test_clock)); g_assert_cmpint (delta, >=, 0); g_assert_cmpuint (delta, <, G_MAXUINT64 - delta); @@ -687,7 +717,7 @@ gst_test_clock_peek_id_count (GstTestClock * test_clock) { guint result; - g_assert (GST_IS_TEST_CLOCK (test_clock)); + g_return_val_if_fail (GST_IS_TEST_CLOCK (test_clock), 0); GST_OBJECT_LOCK (test_clock); result = gst_test_clock_peek_id_count_unlocked (test_clock); @@ -716,7 +746,7 @@ gst_test_clock_has_id (GstTestClock * test_clock, GstClockID id) { gboolean result; - g_assert (GST_IS_TEST_CLOCK (test_clock)); + g_return_val_if_fail (GST_IS_TEST_CLOCK (test_clock), FALSE); g_assert (id != NULL); GST_OBJECT_LOCK (test_clock); @@ -748,7 +778,7 @@ gst_test_clock_peek_next_pending_id (GstTestClock * test_clock, { gboolean result; - g_assert (GST_IS_TEST_CLOCK (test_clock)); + g_return_val_if_fail (GST_IS_TEST_CLOCK (test_clock), FALSE); GST_OBJECT_LOCK (test_clock); result = gst_test_clock_peek_next_pending_id_unlocked (test_clock, @@ -776,17 +806,19 @@ void gst_test_clock_wait_for_next_pending_id (GstTestClock * test_clock, GstClockID * pending_id) { - GstTestClockPrivate *priv = GST_TEST_CLOCK_GET_PRIVATE (test_clock); + GstTestClockPrivate *priv; - g_assert (GST_IS_TEST_CLOCK (test_clock)); + g_return_if_fail (GST_IS_TEST_CLOCK (test_clock)); + + priv = GST_TEST_CLOCK_GET_PRIVATE (test_clock); GST_OBJECT_LOCK (test_clock); while (priv->entry_contexts == NULL) g_cond_wait (&priv->entry_added_cond, GST_OBJECT_GET_LOCK (test_clock)); - g_assert (gst_test_clock_peek_next_pending_id_unlocked (test_clock, - pending_id)); + if (!gst_test_clock_peek_next_pending_id_unlocked (test_clock, pending_id)) + g_assert_not_reached (); GST_OBJECT_UNLOCK (test_clock); } @@ -808,9 +840,11 @@ void gst_test_clock_wait_for_pending_id_count (GstTestClock * test_clock, guint count) { - GstTestClockPrivate *priv = GST_TEST_CLOCK_GET_PRIVATE (test_clock); + GstTestClockPrivate *priv; - g_assert (GST_IS_TEST_CLOCK (test_clock)); + g_return_if_fail (GST_IS_TEST_CLOCK (test_clock)); + + priv = GST_TEST_CLOCK_GET_PRIVATE (test_clock); GST_OBJECT_LOCK (test_clock); @@ -835,12 +869,14 @@ gst_test_clock_wait_for_pending_id_count (GstTestClock * test_clock, GstClockID gst_test_clock_process_next_clock_id (GstTestClock * test_clock) { - GstTestClockPrivate *priv = GST_TEST_CLOCK_GET_PRIVATE (test_clock); + GstTestClockPrivate *priv; GstClockID result = NULL; GstClockEntryContext *ctx = NULL; GList *cur; - g_assert (GST_IS_TEST_CLOCK (test_clock)); + g_return_val_if_fail (GST_IS_TEST_CLOCK (test_clock), NULL); + + priv = GST_TEST_CLOCK_GET_PRIVATE (test_clock); GST_OBJECT_LOCK (test_clock); @@ -899,11 +935,13 @@ gst_test_clock_process_next_clock_id (GstTestClock * test_clock) GstClockTime gst_test_clock_get_next_entry_time (GstTestClock * test_clock) { - GstTestClockPrivate *priv = GST_TEST_CLOCK_GET_PRIVATE (test_clock); + GstTestClockPrivate *priv; GstClockTime result = GST_CLOCK_TIME_NONE; GList *imminent_clock_id; - g_assert (GST_IS_TEST_CLOCK (test_clock)); + g_return_val_if_fail (GST_IS_TEST_CLOCK (test_clock), GST_CLOCK_TIME_NONE); + + priv = GST_TEST_CLOCK_GET_PRIVATE (test_clock); GST_OBJECT_LOCK (test_clock); |