#define MAX_WAIT_COUNT 100
#define DEFAULT_REQ_ID "DEF_REQ_ID"
+static void _mc_ipc_signal_unsubscribe(GDBusConnection *connection, guint handler);
+
/* This checks if service daemon is running */
static int __make_service_connection(mc_priv_type_e priv_type)
{
MC_SAFE_FREE(key);
}
+static void __mc_destroy_listener(gpointer data)
+{
+ mc_ipc_listener_s *listener = (mc_ipc_listener_s *)data;
+ if (listener) {
+ mc_debug("listener[%s] will be unregistered.", listener->key);
+ _mc_ipc_signal_unsubscribe(listener->dbus_conn, listener->handler);
+ MC_SAFE_FREE(listener->interface_name);
+ MC_SAFE_FREE(listener->signal_name);
+ MC_SAFE_G_FREE(listener->key);
+ MC_SAFE_FREE(listener);
+ }
+}
+
static gboolean _mc_ipc_is_listener_duplicated(GList *listener_list, const char *key)
{
unsigned int i = 0;
int mc_ipc_unregister_all_listener(GList **listener_list)
{
- int i = 0;
- int list_len = 0;
-
mc_retvm_if(listener_list == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "listener_list is NULL");
- list_len = g_list_length(*listener_list) - 1;
-
- for (i = list_len; i >= 0; i--) {
- mc_ipc_listener_s *listener = (mc_ipc_listener_s *)g_list_nth_data(*listener_list, i);
- if (listener) {
- mc_debug("listener[%s] is unregistered. listener_cnt[%d]", listener->key, g_list_length(*listener_list));
- _mc_ipc_signal_unsubscribe(listener->dbus_conn, listener->handler);
- MC_SAFE_FREE(listener->interface_name);
- MC_SAFE_FREE(listener->signal_name);
- MC_SAFE_G_FREE(listener->key);
- (*listener_list) = g_list_remove(*listener_list, listener);
- MC_SAFE_FREE(listener);
- }
- }
+ g_list_free_full(*listener_list, __mc_destroy_listener);
+ *listener_list = NULL;
return MEDIA_CONTROLLER_ERROR_NONE;
}