return -1;
}
-static int __mc_list_remove_item(GList **list, int index)
-{
- GList *found = NULL;
-
- mc_retvm_if(list == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid list");
- mc_retvm_if(index < 0 || index >= (int)g_list_length(*list), MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid index");
-
- mc_info("index : %d", index);
-
- found = g_list_nth(*list, index);
-
- if (!found) {
- mc_error("[No-Error] already removed.");
- return MEDIA_CONTROLLER_ERROR_NONE;
- }
-
- *list = g_list_remove_link(*list, found);
- g_list_free_full(found, __mc_destroy_connected_apps);
-
- return MEDIA_CONTROLLER_ERROR_NONE;
-}
-
static void __mc_service_init(mc_service_t **data)
{
mc_service_t *_service_data = g_new0(mc_service_t, 1);
return MEDIA_CONTROLLER_ERROR_NONE;
}
-static int __mc_service_remove_connection(GList **connected_list, mc_comm_msg_s *request_msg)
+static gint __find_func(gconstpointer a, gconstpointer b)
{
- mc_debug_fenter();
+ mc_app_data_set_t *_app_data = (mc_app_data_set_t *)a;
+ mc_comm_msg_s *request_msg = (mc_comm_msg_s *)b;
- int idx = __mc_list_get_index(*connected_list, request_msg->pid, request_msg->priv_type);
- mc_retvm_if(idx == -1, MEDIA_CONTROLLER_ERROR_NONE, "node is null, it has been already disconnected!");
+ if ((_app_data->pid == request_msg->pid) && (_app_data->priv_type == request_msg->priv_type))
+ return 0;
- if (MEDIA_CONTROLLER_ERROR_NONE != __mc_list_remove_item(connected_list, idx))
- mc_error("Fail to remove connection from list");
+ return -1;
+}
- g_connection_cnt--;
- mc_error("[No-error] decreased connection count [%d]", g_connection_cnt);
+static void __mc_service_remove_connection(GList **connected_list, mc_comm_msg_s *request_msg)
+{
+ GList *item_found = NULL;
- return MEDIA_CONTROLLER_ERROR_NONE;
+ mc_debug_fenter();
+
+ item_found = g_list_find_custom(*connected_list, (gpointer)request_msg, __find_func);
+ mc_retm_if(!item_found, "Already disconnected");
+
+ *connected_list = g_list_remove_link(*connected_list, item_found);
+ g_list_free_full(item_found, __mc_destroy_connected_apps);
+
+ mc_error("[No-error] decreased connection count [%d]", --g_connection_cnt);
}
static int __mc_service_add_cmd_to_send(GList **connected_list, mc_comm_msg_s *request_msg)
break;
case MC_MSG_SERVER_DISCONNECTION:
- send_msg = __mc_service_remove_connection(&(_service_data->connected_apps), request_msg);
- if (send_msg == MEDIA_CONTROLLER_ERROR_NONE)
- send_msg = mc_db_remove_application(request_msg->uid, request_msg->msg, request_msg->priv_type);
+ __mc_service_remove_connection(&(_service_data->connected_apps), request_msg);
+ send_msg = mc_db_remove_application(request_msg->uid, request_msg->msg, request_msg->priv_type);
break;
default: