camerad: don't crash zmq if get interrupt from msgq (#1790)
* not crash zmq if get interrupt from msgq * also filter eagainpull/1791/head
parent
97b494e043
commit
55aee68ca0
|
@ -2028,24 +2028,28 @@ static void* ops_thread(void* arg) {
|
|||
assert(err == 0);
|
||||
|
||||
err = zmq_msg_recv(&msg, sockraw, 0);
|
||||
assert(err >= 0);
|
||||
if (err >= 0) {
|
||||
CameraMsg cmsg;
|
||||
if (zmq_msg_size(&msg) == sizeof(cmsg)) {
|
||||
memcpy(&cmsg, zmq_msg_data(&msg), zmq_msg_size(&msg));
|
||||
|
||||
CameraMsg cmsg;
|
||||
if (zmq_msg_size(&msg) == sizeof(cmsg)) {
|
||||
memcpy(&cmsg, zmq_msg_data(&msg), zmq_msg_size(&msg));
|
||||
//LOGD("cameraops %d", cmsg.type);
|
||||
|
||||
//LOGD("cameraops %d", cmsg.type);
|
||||
|
||||
if (cmsg.type == CAMERA_MSG_AUTOEXPOSE) {
|
||||
if (cmsg.camera_num == 0) {
|
||||
do_autoexposure(&s->rear, cmsg.grey_frac);
|
||||
do_autofocus(&s->rear);
|
||||
} else {
|
||||
do_autoexposure(&s->front, cmsg.grey_frac);
|
||||
if (cmsg.type == CAMERA_MSG_AUTOEXPOSE) {
|
||||
if (cmsg.camera_num == 0) {
|
||||
do_autoexposure(&s->rear, cmsg.grey_frac);
|
||||
do_autofocus(&s->rear);
|
||||
} else {
|
||||
do_autoexposure(&s->front, cmsg.grey_frac);
|
||||
}
|
||||
} else if (cmsg.type == -1) {
|
||||
break;
|
||||
}
|
||||
} else if (cmsg.type == -1) {
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
// skip if zmq is interrupted by msgq
|
||||
int err_no = zmq_errno();
|
||||
assert(err_no == EINTR || err_no == EAGAIN);
|
||||
}
|
||||
|
||||
zmq_msg_close(&msg);
|
||||
|
|
Loading…
Reference in New Issue