- The loop to find listener over the GList are replaced to 'g_list_find_custom()'.
- The 'g_list_length()' is not fast because GList does not keep track of the number of items.
To reduce the 'g_list_length()' call, using index for a loop over the list are replaced
to using iterator.
To visit all elements in the list, use a loop over the list:
GList *l;
for (l = list; l != NULL; l = l->next)
{
// do something with l->data
}
reference: https://developer.gnome.org/glib/stable/glib-Doubly-Linked-Lists.html
Change-Id: Ic916d5ef9157b3c7574631b975351507f860fcb5
static int __mc_client_unregister_filter_listener(media_controller_client_s *mc_client, GList **filter_list, const char *server_name, const char *signal_name)
{
int ret = MEDIA_CONTROLLER_ERROR_NONE;
- GList *element = NULL;
- char *_server_name = NULL;
- unsigned int idx, filter_cnt = 0;
+ GList *found_item = NULL, *iter = NULL;
mc_retvm_if(filter_list == NULL, MEDIA_CONTROLLER_ERROR_NONE, "[No-Error] No filter list to unset");
mc_retvm_if(!MC_STRING_VALID(signal_name), MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid signal_name");
- filter_cnt = g_list_length(*filter_list);
- mc_debug("signal [%s] cnt [%d]", signal_name, filter_cnt);
+ mc_debug("signal [%s] cnt [%d]", signal_name, g_list_length(*filter_list));
if (MC_STRING_VALID(server_name)) {
/* Unregister filter */
mc_error("Fail mc_ipc_unregister_filter_listener");
/* Remove from filter_list */
- element = g_list_find_custom(*filter_list, server_name, __compare_filter);
- if (element) {
- (*filter_list) = g_list_remove_link(*filter_list, element);
- g_list_free_full(element, g_free);
- }
+ found_item = g_list_find_custom(*filter_list, server_name, __compare_filter);
+ mc_retvm_if(!found_item, MEDIA_CONTROLLER_ERROR_NONE, "[No-Error] Listener already unregistered");
+
+ (*filter_list) = g_list_remove_link(*filter_list, found_item);
+ g_list_free_full(found_item, g_free);
mc_debug("filter[%s.%s] is unregistered. Remaining filters: [%d]", server_name, signal_name, g_list_length(*filter_list));
} else {
/* Unregister all filters */
- for (idx = 0; idx < filter_cnt; idx++) {
- _server_name = g_list_nth_data(*filter_list, idx);
- mc_debug("[%d][%s]", idx, _server_name);
+ for (iter = *filter_list; iter; iter = iter->next) {
+ mc_debug("filter[%s.%s]", (char *)(iter->data), signal_name);
- ret = mc_ipc_unregister_filter_listener(&mc_client->listeners, _server_name, signal_name);
+ ret = mc_ipc_unregister_filter_listener(&mc_client->listeners, (char *)(iter->data), signal_name);
if (ret != MEDIA_CONTROLLER_ERROR_NONE)
mc_error("Fail mc_ipc_unregister_filter_listener");
}
{
int ret = MEDIA_CONTROLLER_ERROR_NONE;
media_controller_client_s *mc_client = (media_controller_client_s *)client;
- int idx = 0;
- char *server_name = NULL;
- GList *filter_list = NULL;
- int filter_cnt = 0;
+ GList *iter = NULL;
mc_retvm_if(mc_client == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL");
mc_retvm_if(callback == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "callback is NULL");
mc_retvm_if(!_mc_util_is_valid_subscription_type(subscription_type) , MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid subscription_type");
- filter_list = mc_client->updated_cb[subscription_type].filter_list;
- mc_retvm_if(filter_list == NULL, MEDIA_CONTROLLER_ERROR_NONE, "No filter list for the subscription_type [%d]", subscription_type);
+ mc_retvm_if(!mc_client->updated_cb[subscription_type].filter_list, MEDIA_CONTROLLER_ERROR_NONE,
+ "No filter list for the subscription_type [%d]", subscription_type);
- filter_cnt = g_list_length(filter_list);
-
- for (idx = 0; idx < filter_cnt; idx++) {
- server_name = g_strdup((char*)g_list_nth_data(filter_list, idx));
- if (MC_STRING_VALID(server_name)) {
- if (callback(server_name, user_data) == false) {
- MC_SAFE_FREE(server_name);
- break;
- }
- }
- MC_SAFE_FREE(server_name);
+ for (iter = mc_client->updated_cb[subscription_type].filter_list; iter; iter = iter->next) {
+ if (!MC_STRING_VALID(iter->data))
+ continue;
+ if (!callback(iter->data, user_data))
+ break;
}
return ret;
gpointer user_data)
{
GList **listener_list = (GList **)user_data;
+ GList *found_item = NULL;
mc_ipc_listener_s *listener = NULL;
- unsigned int i = 0;
+ char *key = NULL;
mc_debug("__mc_ipc_signal_cb Received :");
gchar *request_id = NULL;
g_variant_get(parameters, "(&s&s)", &request_id, &message);
- mc_retm_if(message == NULL, "message is NULL");
+ mc_retm_if(!message, "message is NULL");
+ mc_retm_if(!user_data, "user_data is NULL");
if ((request_id != NULL) && (!g_strcmp0(request_id, DEFAULT_REQ_ID)))
request_id = NULL;
- char *key = __make_key_for_map(interface_name, signal_name);
- mc_retm_if(key == NULL, "key is NULL");
+ key = __make_key_for_map(interface_name, signal_name);
+ mc_retm_if(!key, "key is NULL");
- unsigned int listener_cnt = g_list_length(*listener_list);
- for (i = 0; i < listener_cnt; i++) {
- listener = (mc_ipc_listener_s *)g_list_nth_data(*listener_list, i);
- if (listener && !g_strcmp0(listener->key, key)) {
- mc_secure_debug("Received : [%s] (req_id = %s) from %s.%s", message, request_id, listener->interface_name, listener->signal_name);
- listener->callback(listener->interface_name, listener->signal_name, message, request_id, listener->user_data);
- break;
- }
+ found_item = g_list_find_custom(*listener_list, key, __find_listener_by_key);
+ if (!found_item) {
+ mc_secure_error("listener[%s] not found", key);
+ MC_SAFE_FREE(key);
+ return;
}
+ listener = found_item->data;
+ mc_secure_debug("Received : [%s] (req_id = %s) from %s.%s", message, request_id, listener->interface_name, listener->signal_name);
+ listener->callback(listener->interface_name, listener->signal_name, message, request_id, listener->user_data);
+
MC_SAFE_FREE(key);
}
static gboolean _mc_ipc_is_listener_duplicated(GList *listener_list, const char *key)
{
- unsigned int i = 0;
+ GList *found_item = NULL;
mc_retvm_if(!MC_STRING_VALID(key), TRUE, "Invalid Key");
- for (i = 0; i < g_list_length(listener_list); i++) {
- mc_ipc_listener_s *listener = (mc_ipc_listener_s *)g_list_nth_data((listener_list), i);
- mc_retvm_if(listener && !g_strcmp0(listener->key, key), TRUE, "listener[%s] is duplicated ", key);
- }
+ found_item = g_list_find_custom(listener_list, key, __find_listener_by_key);
+ mc_retvm_if(found_item, TRUE, "listener[%s] is duplicated ", key);
return FALSE;
}
int mc_ipc_unregister_listener(GList **listener_list, const char *interface_name, const char *signal_name)
{
- GList *element = NULL;
+ GList *found_item = NULL;
char *key = NULL;
mc_retvm_if(!listener_list, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "listener_list is NULL");
key = __make_key_for_map(interface_name, signal_name);
mc_retvm_if(!key, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "fail to get key");
- element = g_list_find_custom(*listener_list, (gconstpointer)key, __find_listener_by_key);
- if (element) {
- (*listener_list) = g_list_remove_link(*listener_list, element);
- __mc_destroy_listener(element->data);
- g_list_free (element);
-
- mc_debug("listener[%s.%s] is unregistered. listener_cnt[%d]", interface_name, signal_name, g_list_length(*listener_list));
+ found_item = g_list_find_custom(*listener_list, (gconstpointer)key, __find_listener_by_key);
+ if (found_item) {
+ (*listener_list) = g_list_remove_link(*listener_list, found_item);
+ __mc_destroy_listener(found_item->data);
+ g_list_free(found_item);
}
+ mc_debug("listener[%s.%s] is unregistered. listener_cnt[%d]", interface_name, signal_name, g_list_length(*listener_list));
+
MC_SAFE_G_FREE(key);
return MEDIA_CONTROLLER_ERROR_NONE;
{
int ret = MEDIA_CONTROLLER_ERROR_NONE;
media_controller_search_s *mc_search = (media_controller_search_s *)search;
- int length = 0;
mc_retvm_if(mc_search == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "search is NULL");
mc_retvm_if(((content_type < MC_CONTENT_TYPE_IMAGE) || (content_type > MC_CONTENT_TYPE_UNDECIDED)), MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "content_type is invalid [%d]", content_type);
mc_retvm_if(((category < MC_SEARCH_NO_CATEGORY) || (category > MC_SEARCH_TPO)), MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "category is invalid [%d]", category);
mc_retvm_if(!MC_STRING_VALID(search_keyword) && (category != MC_SEARCH_NO_CATEGORY), MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid search_keyword");
- length = g_list_length(mc_search->search_list);
- mc_retvm_if(length > 20, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "So many search items");
+ mc_retvm_if(g_list_length(mc_search->search_list) > 20, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Too many search items");
mc_search_item_s *search_item = (mc_search_item_s*)calloc(1, sizeof(mc_search_item_s));
mc_retvm_if(search_item == NULL, MEDIA_CONTROLLER_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
{
media_controller_search_s *mc_search = (media_controller_search_s *)search;
mc_search_item_s *search_item = NULL;
- int length = 0;
- int idx = 0;
+ GList *iter = NULL;
mc_retvm_if(mc_search == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid search");
mc_retvm_if(callback == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid callback");
- length = g_list_length(mc_search->search_list);
+ mc_debug("mc_search_foreach_condition length [%d]", g_list_length(mc_search->search_list));
- mc_debug("mc_search_foreach_condition length [%d]", length);
-
- for (idx = 0; idx < length; idx++) {
- search_item = (mc_search_item_s*)g_list_nth_data(mc_search->search_list, idx);
- if (search_item != NULL) {
- if (callback(search_item->content_type, search_item->category, search_item->search_keyword, search_item->data, user_data) == false) {
- break;
- }
- }
+ for (iter = mc_search->search_list; iter; iter = iter->next) {
+ search_item = (mc_search_item_s*)iter->data;
+ if (!search_item)
+ continue;
+ if (!callback(search_item->content_type, search_item->category, search_item->search_keyword, search_item->data, user_data))
+ break;
}
return MEDIA_CONTROLLER_ERROR_NONE;
media_controller_search_s *_src = (media_controller_search_s *)src;
mc_search_h _dst = NULL;
mc_search_item_s *search_item = NULL;
- int length = 0;
- int idx = 0;
+ GList *iter = NULL;
mc_retvm_if(_src == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid src");
mc_retvm_if(dst == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid dst");
ret = mc_search_create(&_dst);
mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail to mc_search_create()");
- length = g_list_length(_src->search_list);
-
- for (idx = 0; idx < length; idx++) {
- search_item = (mc_search_item_s*)g_list_nth_data(_src->search_list, idx);
- if (search_item == NULL) {
- mc_error("Invalid item [%d]", idx);
+ for (iter = _src->search_list; iter; iter = iter->next) {
+ search_item = (mc_search_item_s*)iter->data;
+ if (!search_item) {
+ mc_error("Invalid item [%p]", iter->data);
ret = MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER;
mc_search_destroy(_dst);
break;
__release_playlist_item(item);
}
+static gint __compare_playlist_index(gconstpointer data, gconstpointer user_data)
+{
+ mc_playlist_item_s *item = (mc_playlist_item_s *)data;
+
+ mc_retvm_if(!item, -1, "empty element");
+
+ return (gint)g_strcmp0(item->index, (const char *)user_data);
+}
+
static int __get_bundle_data(GList *playlist, bundle_raw **bundle_data, int *bundle_size)
{
int ret = MEDIA_CONTROLLER_ERROR_NONE;
bundle *bundle = NULL;
mc_playlist_item_s *item = NULL;
char *meta = NULL;
- int idx = 0;
- int length = 0;
+ GList *iter = NULL;
bundle_raw *raw_data = NULL;
int size_r = 0;
mc_retvm_if(!bundle_data, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid bundle_data");
mc_retvm_if(!bundle_size, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid bundle_size");
- length = g_list_length(playlist);
- mc_retvm_if(!length, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid playlist length");
-
bundle = bundle_create();
mc_retvm_if(!bundle, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "fail to bundle_create");
- for (idx = 0; idx < length; idx++) {
- item = (mc_playlist_item_s*)g_list_nth_data(playlist, idx);
-
- if (item && item->index && item->metadata) {
- meta = g_strdup_printf("%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
- item->metadata->title, MC_STRING_DELIMITER,
- item->metadata->artist, MC_STRING_DELIMITER,
- item->metadata->album, MC_STRING_DELIMITER,
- item->metadata->author, MC_STRING_DELIMITER,
- item->metadata->genre, MC_STRING_DELIMITER,
- item->metadata->duration, MC_STRING_DELIMITER,
- item->metadata->date, MC_STRING_DELIMITER,
- item->metadata->copyright, MC_STRING_DELIMITER,
- item->metadata->description, MC_STRING_DELIMITER,
- item->metadata->track_num, MC_STRING_DELIMITER,
- item->metadata->picture, MC_STRING_DELIMITER,
- item->metadata->season, MC_STRING_DELIMITER,
- item->metadata->episode, MC_STRING_DELIMITER,
- item->metadata->resolution);
-
- if (meta) {
- ret = bundle_add_str(bundle, item->index, meta);
- MC_SAFE_G_FREE(meta);
- if (ret != BUNDLE_ERROR_NONE)
- mc_error("fail to bundle_add_str[%d]", idx);
- }
- } else {
+ for (iter = playlist; iter; iter = iter->next) {
+ item = (mc_playlist_item_s*)iter->data;
+
+ if (!item || !item->index || !item->metadata) {
mc_error("wrong playlist item");
+ continue;
+ }
+
+ meta = g_strdup_printf("%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
+ item->metadata->title, MC_STRING_DELIMITER,
+ item->metadata->artist, MC_STRING_DELIMITER,
+ item->metadata->album, MC_STRING_DELIMITER,
+ item->metadata->author, MC_STRING_DELIMITER,
+ item->metadata->genre, MC_STRING_DELIMITER,
+ item->metadata->duration, MC_STRING_DELIMITER,
+ item->metadata->date, MC_STRING_DELIMITER,
+ item->metadata->copyright, MC_STRING_DELIMITER,
+ item->metadata->description, MC_STRING_DELIMITER,
+ item->metadata->track_num, MC_STRING_DELIMITER,
+ item->metadata->picture, MC_STRING_DELIMITER,
+ item->metadata->season, MC_STRING_DELIMITER,
+ item->metadata->episode, MC_STRING_DELIMITER,
+ item->metadata->resolution);
+
+ if (meta) {
+ ret = bundle_add_str(bundle, item->index, meta);
+ MC_SAFE_G_FREE(meta);
+ if (ret != BUNDLE_ERROR_NONE)
+ mc_error("fail to bundle_add_str[%p]", iter->data);
}
}
int ret = MEDIA_CONTROLLER_ERROR_NONE;
mc_playlist_s *_playlist = (mc_playlist_s*)playlist;
mc_playlist_item_s *_playlist_item = NULL;
- int length = 0;
- int idx = 0;
- gboolean found = FALSE;
+ GList *found_item = NULL;
mc_retvm_if(_playlist == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid playlist");
mc_retvm_if(!MC_STRING_VALID(index), MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid index");
- if (_playlist->item_list != NULL) {
- length = g_list_length(_playlist->item_list);
-
- mc_retvm_if((length > MAX_PLAYLIST_LEN), MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Exceeding max playlist item [%d]", MAX_PLAYLIST_LEN);
-
- for (idx = 0; idx < length; idx++) {
- mc_playlist_item_s *_item = NULL;
- _item = (mc_playlist_item_s*)g_list_nth_data(_playlist->item_list, idx);
- if (_item != NULL) {
- if (g_strcmp0(_item->index, index) == 0) {
- _playlist_item = _item;
- found = TRUE;
- break;
- }
- }
- }
- }
+ mc_retvm_if((g_list_length(_playlist->item_list) > MAX_PLAYLIST_LEN), MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Exceeding max playlist item [%d]", MAX_PLAYLIST_LEN);
- if (!found) {
+ found_item = g_list_find_custom(_playlist->item_list, __compare_playlist_index, (void *)index);
+ if (!found_item) {
_playlist_item = (mc_playlist_item_s*)calloc(1, sizeof(mc_playlist_item_s));
mc_retvm_if(_playlist_item == NULL, MEDIA_CONTROLLER_ERROR_OUT_OF_MEMORY, "memory alloc fail");
_playlist_item->index = g_strdup(index);
} else {
+ _playlist_item = (mc_playlist_item_s *)found_item->data;
mc_retvm_if(_playlist_item->metadata == NULL, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid playlist item");
}
ret = _mc_metadata_set((mc_playlist_h)_playlist_item->metadata, attribute, value);
if (ret != MEDIA_CONTROLLER_ERROR_NONE) {
- if (!found)
+ if (!found_item)
__release_playlist_item(_playlist_item);
return ret;
}
- if (!found)
+ if (!found_item)
_playlist->item_list = g_list_append(_playlist->item_list, _playlist_item);
return ret;
mc_app_data_set_t *_app_data = (mc_app_data_set_t *)data;
mc_comm_msg_s *_user_data = (mc_comm_msg_s *)user_data;
+ mc_retm_if(!_app_data, "Invalid data");
+ mc_retm_if(!_user_data, "Invalid user_data");
+
if (_app_data->pid == _user_data->pid)
_app_data->cmds_to_send = g_list_append(_app_data->cmds_to_send, g_strdup(_user_data->msg));
}
static void __mc_remove_cmd_to_send(gpointer data, gpointer user_data)
{
-
mc_app_data_set_t *_app_data = (mc_app_data_set_t *)data;
mc_list_user_data *_user_data = (mc_list_user_data *)user_data;
- mc_comm_msg_s *_message = NULL;
- unsigned int i = 0;
- unsigned int length_of_list = 0;
- char *value = NULL;
-
- mc_retm_if(!data, "Invalid data");
- mc_retm_if(!user_data, "Invalid user_data");
+ GList *iter = NULL;
- _message = (mc_comm_msg_s *)_user_data->message;
- mc_retm_if(_message->msg_size == 0, "Invalid msg_size");
- mc_retm_if(!MC_STRING_VALID(_message->msg), "Invalid msg");
+ mc_retm_if(!_app_data, "Invalid data");
+ mc_retm_if(!_user_data, "Invalid user_data");
+ mc_retm_if(!_user_data->message, "Invalid message");
+ mc_retm_if(!_user_data->message->msg_size, "Invalid msg_size");
+ mc_retm_if(!MC_STRING_VALID(_user_data->message->msg), "Invalid msg");
mc_retm_if(!_app_data->cmds_to_send, "Nothing to remove");
- length_of_list = g_list_length(_app_data->cmds_to_send);
-
- for (i = 0; i < length_of_list; i++) {
- value = (char *)g_list_nth_data(_app_data->cmds_to_send, i);
+ for (iter = _app_data->cmds_to_send; iter; iter = iter->next) {
+ if (!iter->data)
+ continue;
- if (g_strcmp0(value, _message->msg) == 0) {
- _app_data->cmds_to_send = g_list_remove(_app_data->cmds_to_send, value);
- MC_SAFE_FREE(value);
+ if (!g_strcmp0(iter->data, _user_data->message->msg)) {
+ _app_data->cmds_to_send = g_list_remove_link(_app_data->cmds_to_send, iter);
+ g_list_free_full(iter, g_free);
_user_data->result++;
- break;
}
}
}
static int _mc_service_app_dead_handler(int pid, void *data)
{
mc_service_t *_service_data = (mc_service_t *)data;
- unsigned int length_of_list = 0;
- int i = 0;
+ GList *iter = NULL;
+ mc_app_data_set_t *_app_data = NULL;
mc_secure_debug("Received app_dead signal (pid : %d)", pid);
- mc_retvm_if((_service_data == NULL), AUL_R_ERROR, "data is null!");
- mc_retvm_if((_service_data->connected_apps == NULL), AUL_R_OK, "No connected application!");
+ mc_retvm_if(!_service_data, AUL_R_ERROR, "data is null!");
+ mc_retvm_if(!_service_data->connected_apps, AUL_R_OK, "No connected application!");
- length_of_list = g_list_length(_service_data->connected_apps);
- for (i = (int)(length_of_list - 1); i >= 0; i--) {
- mc_app_data_set_t *_app_data = NULL;
+ for (iter = _service_data->connected_apps; iter; iter = iter->next) {
+ _app_data = (mc_app_data_set_t *)iter->data;
- _app_data = g_list_nth_data(_service_data->connected_apps, i);
- if (!_app_data)
+ if ((!_app_data) || (_app_data->pid != pid))
continue;
- if (_app_data->pid == pid) {
- mc_secure_debug("app_dead(appid) : %s", _app_data->app_id);
-
- /* Delete and update information of dead application on database */
- if (MEDIA_CONTROLLER_ERROR_NONE != mc_db_remove_application(_app_data->uid, _app_data->app_id, _app_data->priv_type))
- mc_secure_error("Fail to remove dead application");
+ mc_secure_debug("app_dead(appid) : %s", _app_data->app_id);
- /* Sends notification for deactivated server via dbus */
- if (_app_data->priv_type == MC_PRIV_TYPE_SERVER) {
- if (MEDIA_CONTROLLER_ERROR_NONE != __mc_notify_server_updated(_app_data->app_id, MC_SERVER_STATE_DEACTIVATE))
- mc_secure_error("Fail to notify deactivated server");
- }
+ /* Delete and update information of dead application on database */
+ if (MEDIA_CONTROLLER_ERROR_NONE != mc_db_remove_application(_app_data->uid, _app_data->app_id, _app_data->priv_type))
+ mc_secure_error("Fail to remove dead application");
- if (MEDIA_CONTROLLER_ERROR_NONE == __mc_list_remove_item(&_service_data->connected_apps, i)) {
- g_connection_cnt--;
- mc_secure_error("[No-error] decreased connection count [%d]", g_connection_cnt);
- }
+ /* Sends notification for deactivated server via dbus */
+ if (_app_data->priv_type == MC_PRIV_TYPE_SERVER) {
+ if (MEDIA_CONTROLLER_ERROR_NONE != __mc_notify_server_updated(_app_data->app_id, MC_SERVER_STATE_DEACTIVATE))
+ mc_secure_error("Fail to notify deactivated server");
}
+
+ _app_data->cmds_to_send = g_list_remove_link(_app_data->cmds_to_send, iter);
+ g_list_free_full(iter, __mc_destroy_connected_apps);
+ mc_secure_error("[No-error] decreased connection count [%d]", --g_connection_cnt);
}
return AUL_R_OK;
const char *playlist_name_2 = "test_2";
unsigned int idx = 0;
GList *playlist_list = NULL;
+ GList *iter = NULL;
char *season = NULL;
char *episode = NULL;
char *resolution = NULL;
if (ret != MEDIA_CONTROLLER_ERROR_NONE)
mc_error("Fail to mc_playlist_foreach_playlist [%d]", ret);
- for (idx = 0; idx < g_list_length(playlist_list); idx++) {
+ for (iter = playlist_list; iter; iter = iter->next) {
mc_playlist_h playlist = NULL;
char *playlist_name = NULL;
- playlist = (mc_playlist_h)g_list_nth_data(playlist_list, idx);
+ playlist = (mc_playlist_h)iter->data;
ret = mc_playlist_get_name(playlist, &playlist_name);
if (ret != MEDIA_CONTROLLER_ERROR_NONE)
mc_error("Fail to mc_playlist_get_name [%d]", ret);