cam: free allocated buffers when done capturing

The allocated buffers needs to be freed once the application is done
with them.

Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
Niklas Söderlund 2019-02-19 17:03:16 +01:00
parent 2090f8fdd8
commit 24cb563853

View file

@ -160,7 +160,8 @@ static int capture()
Request *request = camera->createRequest(); Request *request = camera->createRequest();
if (!request) { if (!request) {
std::cerr << "Can't create request" << std::endl; std::cerr << "Can't create request" << std::endl;
return -ENOMEM; ret = -ENOMEM;
goto out;
} }
std::map<Stream *, Buffer *> map; std::map<Stream *, Buffer *> map;
@ -168,13 +169,13 @@ static int capture()
ret = request->setBuffers(map); ret = request->setBuffers(map);
if (ret < 0) { if (ret < 0) {
std::cerr << "Can't set buffers for request" << std::endl; std::cerr << "Can't set buffers for request" << std::endl;
return ret; goto out;
} }
ret = camera->queueRequest(request); ret = camera->queueRequest(request);
if (ret < 0) { if (ret < 0) {
std::cerr << "Can't queue request" << std::endl; std::cerr << "Can't queue request" << std::endl;
return ret; goto out;
} }
} }
@ -184,6 +185,9 @@ static int capture()
ret = loop->exec(); ret = loop->exec();
camera->stop(); camera->stop();
out:
camera->freeBuffers();
return ret; return ret;
} }