From patchwork Tue Jun 25 16:23:53 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Helen Koike X-Patchwork-Id: 1518 Return-Path: Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [46.235.227.227]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id C265660103 for ; Tue, 25 Jun 2019 18:24:09 +0200 (CEST) Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: koike) with ESMTPSA id 3EF9C263AFA From: Helen Koike To: libcamera-devel@lists.libcamera.org Cc: laurent.pinchart@ideasonboard.com, kernel@collabora.com, Helen Koike Date: Tue, 25 Jun 2019 13:23:53 -0300 Message-Id: <20190625162353.30434-1-helen.koike@collabora.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH] cam: capture: Stop stream when queueRequest fails X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 Jun 2019 16:24:09 -0000 queueRequest is called after starting the stream. If it fails, the stream should be stopped, otherwise it can get a "Device or resource busy" error, due to VIDIOC_REQBUFS ioctls being called after VIDIOC_STREAMON without VIDIOC_STREAMOFF in-between. Signed-off-by: Helen Koike Reviewed-by: Kieran Bingham --- src/cam/capture.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/cam/capture.cpp b/src/cam/capture.cpp index e455612..6b842d7 100644 --- a/src/cam/capture.cpp +++ b/src/cam/capture.cpp @@ -117,6 +117,7 @@ int Capture::capture(EventLoop *loop) ret = camera_->queueRequest(request); if (ret < 0) { std::cerr << "Can't queue request" << std::endl; + camera_->stop(); return ret; } }