/* Call with streamlock held, or when streaming threads are down */
static void
+#ifdef TIZEN_FEATURE_V4L2_TBM_SUPPORT
+gst_v4l2_buffer_pool_streamoff (GstV4l2BufferPool * pool, gboolean is_locked)
+#else
gst_v4l2_buffer_pool_streamoff (GstV4l2BufferPool * pool)
+#endif
{
GstBufferPoolClass *pclass = GST_BUFFER_POOL_CLASS (parent_class);
GstV4l2Object *obj = pool->obj;
if (obj->tbm_output && !V4L2_TYPE_IS_OUTPUT(pool->obj->type)) {
g_mutex_lock (&pool->buffer_lock);
- GST_INFO_OBJECT (pool, "live buffer[%d]", pool->live_buffer_count);
+ GST_INFO_OBJECT (pool, "live buffer[%d], is_locked[%d]",
+ pool->live_buffer_count, is_locked);
if (pool->live_buffer_count > 0) {
end_time = g_get_monotonic_time () + G_TIME_SPAN_SECOND;
- GST_OBJECT_UNLOCK (pool);
+ if (is_locked)
+ GST_OBJECT_UNLOCK (pool);
do {
GST_WARNING_OBJECT (pool, "wait for live buffer[%d]", pool->live_buffer_count);
pool->live_buffer_count);
} while (pool->live_buffer_count > 0);
- GST_OBJECT_LOCK (pool);
+ if (is_locked)
+ GST_OBJECT_LOCK (pool);
}
g_mutex_unlock (&pool->buffer_lock);
}
if (!pool->orphaned)
+#ifdef TIZEN_FEATURE_V4L2_TBM_SUPPORT
+ gst_v4l2_buffer_pool_streamoff (pool, FALSE);
+#else
gst_v4l2_buffer_pool_streamoff (pool);
+#endif
ret = GST_BUFFER_POOL_CLASS (parent_class)->stop (bpool);
* workaround of not being able to use the pool hidden activation lock. */
GST_OBJECT_LOCK (pool);
+#ifdef TIZEN_FEATURE_V4L2_TBM_SUPPORT
+ gst_v4l2_buffer_pool_streamoff (pool, TRUE);
+#else
gst_v4l2_buffer_pool_streamoff (pool);
+#endif
ret = gst_v4l2_allocator_orphan (pool->vallocator);
if (ret)
pool->orphaned = TRUE;
GstV4l2BufferPool *pool = GST_V4L2_BUFFER_POOL (bpool);
gboolean ret = TRUE;
+#ifdef TIZEN_FEATURE_V4L2_TBM_SUPPORT
+ gst_v4l2_buffer_pool_streamoff (pool, FALSE);
+#else
gst_v4l2_buffer_pool_streamoff (pool);
+#endif
if (!V4L2_TYPE_IS_OUTPUT (pool->obj->type))
ret = gst_v4l2_buffer_pool_streamon (pool);