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) {
+ REC_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_signal(&cb_info->api_cond[api]);
} else {
if (muse_recorder_msg_get(ret, rec_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) {
+ REC_LOG_WARNING("api[%d] invalid activating[%d]",
+ api, cb_info->api_activating[api]);
+
+ cb_info->api_activating[api] = 0;
+ }
+
+ cb_info->api_activating[api]++;
REC_LOG_DEBUG("recorder api[%d] - return[0x%x]", api, ret);
g_mutex_lock(&(cb_info->api_mutex[api]));
- REC_LOG_INFO("api[%d], timeout[%d]sec", api, time_out);
+ REC_LOG_INFO("api[%d], timeout[%d]sec, 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 == RECORDER_CB_NO_TIMEOUT) {
g_cond_wait(&(cb_info->api_cond[api]), &(cb_info->api_mutex[api]));
REC_LOG_WARNING("api[%d] returned[0x%x]", api, cb_info->api_ret[api]);
goto _CB_RETURN_END;
}
- if (!cb_info->api_activating[api])
- REC_LOG_WARNING("invalid signal received, wait again...");
+ if (cb_info->api_activating[api] <= 0)
+ REC_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]--;
+ REC_LOG_INFO("api[%d] END:activating[%d]", api, cb_info->api_activating[api]);
+ } else {
+ REC_LOG_WARNING("api[%d] invalid activating[%d]",
+ api, cb_info->api_activating[api]);
+ }
_CB_RETURN_END:
g_mutex_unlock(&(cb_info->api_mutex[api]));