diff options
| -rw-r--r-- | drivers/staging/media/davinci_vpfe/vpfe_video.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/drivers/staging/media/davinci_vpfe/vpfe_video.c b/drivers/staging/media/davinci_vpfe/vpfe_video.c index 8c101cbbee97..acc8184c46cd 100644 --- a/drivers/staging/media/davinci_vpfe/vpfe_video.c +++ b/drivers/staging/media/davinci_vpfe/vpfe_video.c | |||
| @@ -1247,9 +1247,18 @@ static int vpfe_stop_streaming(struct vb2_queue *vq) | |||
| 1247 | struct vpfe_fh *fh = vb2_get_drv_priv(vq); | 1247 | struct vpfe_fh *fh = vb2_get_drv_priv(vq); |
| 1248 | struct vpfe_video_device *video = fh->video; | 1248 | struct vpfe_video_device *video = fh->video; |
| 1249 | 1249 | ||
| 1250 | if (!vb2_is_streaming(vq)) | ||
| 1251 | return 0; | ||
| 1252 | /* release all active buffers */ | 1250 | /* release all active buffers */ |
| 1251 | if (video->cur_frm == video->next_frm) { | ||
| 1252 | vb2_buffer_done(&video->cur_frm->vb, VB2_BUF_STATE_ERROR); | ||
| 1253 | } else { | ||
| 1254 | if (video->cur_frm != NULL) | ||
| 1255 | vb2_buffer_done(&video->cur_frm->vb, | ||
| 1256 | VB2_BUF_STATE_ERROR); | ||
| 1257 | if (video->next_frm != NULL) | ||
| 1258 | vb2_buffer_done(&video->next_frm->vb, | ||
| 1259 | VB2_BUF_STATE_ERROR); | ||
| 1260 | } | ||
| 1261 | |||
| 1253 | while (!list_empty(&video->dma_queue)) { | 1262 | while (!list_empty(&video->dma_queue)) { |
| 1254 | video->next_frm = list_entry(video->dma_queue.next, | 1263 | video->next_frm = list_entry(video->dma_queue.next, |
| 1255 | struct vpfe_cap_buffer, list); | 1264 | struct vpfe_cap_buffer, list); |
