Fix buffer leakage on camera reconnect

This commit is contained in:
Kamil Trzcinski 2022-10-25 16:37:30 +02:00
parent caafd0da44
commit 6bdb33ff3a

View File

@ -41,15 +41,22 @@ void camera_close(camera_t **camerap)
*camerap = NULL;
for (int i = MAX_DEVICES; i-- > 0; ) {
if (camera->devices[i]) {
device_close(camera->devices[i]);
camera->devices[i] = NULL;
link_t *link = &camera->links[i];
if (link->callbacks.on_buffer) {
link->callbacks.on_buffer(NULL);
link->callbacks.on_buffer = NULL;
}
if (link->callbacks.buf_lock) {
buffer_lock_capture(link->callbacks.buf_lock, NULL);
link->callbacks.buf_lock = NULL;
}
}
for (int i = MAX_DEVICES; i-- > 0; ) {
if (camera->links[i].callbacks.on_buffer) {
camera->links[i].callbacks.on_buffer = NULL;
if (camera->devices[i]) {
device_close(camera->devices[i]);
camera->devices[i] = NULL;
}
}