device_info->device_number = raw_devices[slot].devnum;
device_info->model_name = LIBMTP_Get_Modelname(device);
+ pthread_mutex_init(&device_info->mutex, NULL);
+
mtp_ctx->device_list->device_info_list[empty_slot] = device_info;
mtp_ctx->device_list->device_num++;
return 0;
}
+ struct timeval now;
+ struct timespec ts;
+
+ gettimeofday(&now, NULL);
+ ts.tv_sec = now.tv_sec + 2;
+
+ MTP_LOGI("Wait for 2 seconds to terminate Event Thread.");
+ pthread_mutex_timedlock(&device_info->mutex, &ts);
+ pthread_mutex_unlock(&device_info->mutex);
+ pthread_mutex_destroy(&device_info->mutex);
+ MTP_LOGI("The Event Thread is terminated");
+
LIBMTP_Release_Device(device_info->device);
mtp_daemon_db_delete(device_id, 0, 0, mtp_ctx);
if (device_info == NULL)
return NULL;
+ pthread_mutex_lock(&device_info->mutex);
+
MTP_LOGI("%s, %03d-%03d event loop start", device_info->model_name,
device_info->bus_location, device_info->device_number);
MTP_LOGI("%s, %03d-%03d event loop stop", device_info->model_name,
device_info->bus_location, device_info->device_number);
+ pthread_mutex_unlock(&device_info->mutex);
+
return NULL;
}
if (device_info->model_name == NULL)
device_info->model_name = strdup(tmp_name); //LCOV_EXCL_LINE
+ pthread_mutex_init(&device_info->mutex, NULL);
+
mtp_ctx->device_list->device_info_list[empty_slot] = device_info;
mtp_ctx->device_list->device_num++;
}