g_mutex_lock(&(cb_info->api_mutex[api]));
- CAM_LOG_INFO("api [%d], timeout [%d sec]", api, time_out);
+ CAM_LOG_INFO("api[%d] timeout[%ds] START:activating[%d]",
+ api, time_out, cb_info->api_activating[api]);
end_time = g_get_monotonic_time() + time_out * G_TIME_SPAN_SECOND;
- while (!cb_info->api_activating[api]) {
+ while (cb_info->api_activating[api] <= 0) {
if (time_out == CAMERA_CB_NO_TIMEOUT) {
g_cond_wait(&(cb_info->api_cond[api]), &(cb_info->api_mutex[api]));
- CAM_LOG_WARNING("api %d returned 0x%x", api, cb_info->api_ret[api]);
+ CAM_LOG_WARNING("api[%d] returned[0x%x]", api, cb_info->api_ret[api]);
} else if (!g_cond_wait_until(&(cb_info->api_cond[api]), &(cb_info->api_mutex[api]), end_time)) {
- CAM_LOG_ERROR("api %d TIMED OUT!", api);
+ CAM_LOG_ERROR("api[%d] TIMED OUT!", api);
ret = CAMERA_ERROR_INVALID_OPERATION;
goto _CB_RETURN_END;
}
goto _CB_RETURN_END;
}
- if (!cb_info->api_activating[api])
- CAM_LOG_WARNING("invalid signal received, wait again...");
+ if (cb_info->api_activating[api] <= 0)
+ CAM_LOG_WARNING("api[%d] invalid signal received, wait again...", api);
}
ret = cb_info->api_ret[api];
- cb_info->api_activating[api] = FALSE;
+
+ if (cb_info->api_activating[api] > 0) {
+ cb_info->api_activating[api]--;
+ CAM_LOG_INFO("api[%d] END:activating[%d]", api, cb_info->api_activating[api]);
+ } else {
+ CAM_LOG_WARNING("api[%d] invalid activating[%d]",
+ api, cb_info->api_activating[api]);
+ }
_CB_RETURN_END:
g_mutex_unlock(&(cb_info->api_mutex[api]));
if (muse_camera_msg_get(ret, cam_msg->recv_msg)) {
if (cb_info->api_waiting[api] > 0) {
cb_info->api_ret[api] = ret;
- cb_info->api_activating[api] = TRUE;
+
+ if (cb_info->api_activating[api] < 0) {
+ CAM_LOG_WARNING("api[%d] invalid activating[%d]",
+ api, cb_info->api_activating[api]);
+
+ cb_info->api_activating[api] = 0;
+ }
+
+ cb_info->api_activating[api]++;
CAM_LOG_DEBUG("t[%d] camera api[%d] - return[0x%x]", type, api, ret);
if (cb_info->api_waiting[api] > 0) {
cb_info->api_ret[api] = ret;
- cb_info->api_activating[api] = TRUE;
+
+ if (cb_info->api_activating[api] < 0) {
+ CAM_LOG_WARNING("api[%d] invalid activating[%d]",
+ api, cb_info->api_activating[api]);
+
+ cb_info->api_activating[api] = 0;
+ }
+
+ cb_info->api_activating[api]++;
g_cond_broadcast(&cb_info->api_cond[api]);
} else {