From patchwork Sat Jul 13 17:23:36 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 1682 Return-Path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 4ABD66175B for ; Sat, 13 Jul 2019 19:24:26 +0200 (CEST) Received: from pendragon.ideasonboard.com (softbank126209254147.bbtec.net [126.209.254.147]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 214C52B2 for ; Sat, 13 Jul 2019 19:24:24 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1563038666; bh=8keGl6+P+yeUQhUtgdMlPQu/yfmfkIQHGfk+bzLPOb4=; h=From:To:Subject:Date:In-Reply-To:References:From; b=RHpWHMFvBjR9O8LIbR5chNoOAd3sOd8xzaqn0hoTHpblUYRPnaveoeCFdIVQgruz8 UnqlLH5n5eKz5KTr7YemZ7KnGF6VnAlYjXzTS9AjFIYo9zJMUC2rHlLF7qMCAceGvL jXKoRtyygxBfv6X+brXbSznSk8RJMliuux7H6H7o= From: Laurent Pinchart To: libcamera-devel@lists.libcamera.org Date: Sat, 13 Jul 2019 20:23:36 +0300 Message-Id: <20190713172351.25452-2-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190713172351.25452-1-laurent.pinchart@ideasonboard.com> References: <20190713172351.25452-1-laurent.pinchart@ideasonboard.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v2 01/16] libcamera: camera: Don't move buffers away from request at completion 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: Sat, 13 Jul 2019 17:24:26 -0000 For a historical reason that isn't fully understood, the request completion handler in the Camera class moves all buffers away from the request's buffer map to a local variable before emitting the request completion signal. There's no reason to do so, and it makes it impossible for requests to access buffers in their destructor. Fix it. Signed-off-by: Laurent Pinchart Reviewed-by: Niklas Söderlund --- src/libcamera/camera.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp index 592dfd39eacc..094f1b63b7f1 100644 --- a/src/libcamera/camera.cpp +++ b/src/libcamera/camera.cpp @@ -894,8 +894,7 @@ int Camera::stop() */ void Camera::requestComplete(Request *request) { - std::map buffers(std::move(request->bufferMap_)); - requestCompleted.emit(request, buffers); + requestCompleted.emit(request, request->bufferMap_); delete request; }