Fix buffer leakage on camera reconnect
This commit is contained in:
parent
caafd0da44
commit
6bdb33ff3a
@ -41,15 +41,22 @@ void camera_close(camera_t **camerap)
|
|||||||
*camerap = NULL;
|
*camerap = NULL;
|
||||||
|
|
||||||
for (int i = MAX_DEVICES; i-- > 0; ) {
|
for (int i = MAX_DEVICES; i-- > 0; ) {
|
||||||
if (camera->devices[i]) {
|
link_t *link = &camera->links[i];
|
||||||
device_close(camera->devices[i]);
|
|
||||||
camera->devices[i] = NULL;
|
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; ) {
|
for (int i = MAX_DEVICES; i-- > 0; ) {
|
||||||
if (camera->links[i].callbacks.on_buffer) {
|
if (camera->devices[i]) {
|
||||||
camera->links[i].callbacks.on_buffer = NULL;
|
device_close(camera->devices[i]);
|
||||||
|
camera->devices[i] = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user