From 34c7cabe2c674a7739e471468e6380f95ba2f426 Mon Sep 17 00:00:00 2001 From: Michael Grzeschik Date: Wed, 23 Jun 2010 11:47:43 +0200 Subject: [PATCH] v4l2sink: destroy buffer pool when changing state to NULL In the case we change the State from READY_TO_NULL the buffers in the pool still hold an open dup file descriptor to the device, therefore the device release function will not be called and the device will probably answer with -EBUSY when we reopen it in the next NULL_TO_READY transition. Signed-off-by: Michael Grzeschik See bug #622500 and #612244. --- sys/v4l2/gstv4l2sink.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys/v4l2/gstv4l2sink.c b/sys/v4l2/gstv4l2sink.c index 64cdadcaa5..679f7e2903 100644 --- a/sys/v4l2/gstv4l2sink.c +++ b/sys/v4l2/gstv4l2sink.c @@ -461,6 +461,8 @@ gst_v4l2sink_change_state (GstElement * element, GstStateChange transition) } break; case GST_STATE_CHANGE_READY_TO_NULL: + gst_v4l2_buffer_pool_destroy (v4l2sink->pool); + v4l2sink->pool = NULL; /* close the device */ if (!gst_v4l2_object_stop (v4l2sink->v4l2object)) return GST_STATE_CHANGE_FAILURE;