camerad: don't crash zmq if get interrupt from msgq (#1790)

* not crash zmq if get interrupt from msgq

* also filter eagain
old-commit-hash: 55aee68ca0f3c5ba9fa5b100d21149cad79b732b
This commit is contained in:
ZwX1616
2020-06-26 18:11:36 -07:00
committed by GitHub
parent 12616dca82
commit b954e6e93d
+18 -14
View File
@@ -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);