From: Eunhye Choi Date: Wed, 8 Jan 2020 08:20:59 +0000 (+0900) Subject: queue2: handle overwriting the current range correctly X-Git-Tag: submit/tizen_5.5/20200108.110124^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fheads%2Ftizen_5.5;p=platform%2Fupstream%2Fgstreamer.git queue2: handle overwriting the current range correctly - resolve the range handle issue side issue of below upstream patch. https://gitlab.freedesktop.org/gstreamer/gstreamer/commit/b3802f7a9e7988901367196dd3dc45cf4053d850 and the new patch is under reviewing. https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/208 Change-Id: Id368b546cb6fd40b29681c4111037c2913d9cd80 (cherry picked from commit 214d0b087667889188534f5d3190bf547cebffbf) --- diff --git a/plugins/elements/gstqueue2.c b/plugins/elements/gstqueue2.c index d2722fd911..8a599767a3 100644 --- a/plugins/elements/gstqueue2.c +++ b/plugins/elements/gstqueue2.c @@ -2064,8 +2064,10 @@ gst_queue2_create_write (GstQueue2 * queue, GstBuffer * buffer) guint64 range_data_start, range_data_end; GstQueue2Range *range_to_destroy = NULL; +#ifndef TIZEN_FEATURE_QUEUE2_MODIFICATION if (range == queue->current) goto next_range; +#endif range_data_start = range->rb_offset; range_data_end = range->rb_writing_pos; @@ -2089,7 +2091,11 @@ gst_queue2_create_write (GstQueue2 * queue, GstBuffer * buffer) goto next_range; if (new_writing_pos > range_data_start) { +#ifdef TIZEN_FEATURE_QUEUE2_MODIFICATION + if (new_writing_pos >= range_data_end && range != queue->current) { +#else if (new_writing_pos >= range_data_end) { +#endif GST_DEBUG_OBJECT (queue, "Removing range: offset %" G_GUINT64_FORMAT ", wpos %" G_GUINT64_FORMAT, range->offset, range->writing_pos); @@ -2114,7 +2120,12 @@ gst_queue2_create_write (GstQueue2 * queue, GstBuffer * buffer) if (new_wpos_virt <= range_data_start) goto next_range; +#ifdef TIZEN_FEATURE_QUEUE2_MODIFICATION + if (new_wpos_virt > rb_size && new_writing_pos >= range_data_end + && range != queue->current) { +#else if (new_wpos_virt > rb_size && new_writing_pos >= range_data_end) { +#endif GST_DEBUG_OBJECT (queue, "Removing range: offset %" G_GUINT64_FORMAT ", wpos %" G_GUINT64_FORMAT, range->offset, range->writing_pos);