Remove unnecessary global list of subscribed signal 30/113830/3 accepted/tizen/3.0/common/20170214.180613 accepted/tizen/3.0/ivi/20170214.042615 accepted/tizen/3.0/mobile/20170214.042528 accepted/tizen/3.0/tv/20170214.042545 accepted/tizen/3.0/wearable/20170214.042601 submit/tizen_3.0/20170213.103000
authorSeungbae Shin <seungbae.shin@samsung.com>
Thu, 9 Feb 2017 04:51:27 +0000 (13:51 +0900)
committerSeungbae Shin <seungbae.shin@samsung.com>
Mon, 13 Feb 2017 09:43:26 +0000 (18:43 +0900)
[Version] 0.10.92
[Profile] Common
[Issue Type] Clean up

Change-Id: Id5a72c723e8cc3f438c08d3bc9b855cb56832c63

include/mm_sound.h
mm_sound.c
packaging/libmm-sound.spec

index 6c78b0f..9c07aca 100644 (file)
@@ -1005,12 +1005,12 @@ typedef enum {
        MM_SOUND_SIGNAL_MAX,
 } mm_sound_signal_name_t;
 
-typedef void (*mm_sound_signal_callback) (mm_sound_signal_name_t signal, int value, void *user_data);
-int mm_sound_subscribe_signal(mm_sound_signal_name_t signal, unsigned int *subscribe_id, mm_sound_signal_callback callback, void *user_data);
-int mm_sound_subscribe_signal_for_daemon(mm_sound_signal_name_t signal, int client_pid, unsigned int *subscribe_id, mm_sound_signal_callback callback, void *user_data);
+typedef void (*mm_sound_signal_callback) (mm_sound_signal_name_t signal_type, int value, void *user_data);
+int mm_sound_subscribe_signal(mm_sound_signal_name_t signal_type, unsigned int *subscribe_id, mm_sound_signal_callback callback, void *user_data);
+int mm_sound_subscribe_signal_for_daemon(mm_sound_signal_name_t signal_type, int client_pid, unsigned int *subscribe_id, mm_sound_signal_callback callback, void *user_data);
 void mm_sound_unsubscribe_signal(unsigned int subscribe_id);
-int mm_sound_send_signal(mm_sound_signal_name_t signal, int value);
-int mm_sound_get_signal_value(mm_sound_signal_name_t signal, int *value);
+int mm_sound_send_signal(mm_sound_signal_name_t signal_type, int value);
+int mm_sound_get_signal_value(mm_sound_signal_name_t signal_type, int *value);
 int mm_sound_is_stream_on_device(int stream_id, MMSoundDevice_t device_h, bool *is_on);
 
 /**
index ca13ad2..f3b5825 100644 (file)
 
 #include <gio/gio.h>
 
-static GList *g_subscribe_cb_list = NULL;
 static pthread_mutex_t g_subscribe_cb_list_mutex = PTHREAD_MUTEX_INITIALIZER;
 
 #define MM_SOUND_DBUS_BUS_NAME_PREPIX  "org.tizen.MMSound"
 #define MM_SOUND_DBUS_OBJECT_PATH  "/org/tizen/MMSound"
 #define MM_SOUND_DBUS_INTERFACE    "org.tizen.mmsound"
 
-GDBusConnection *g_dbus_conn_mmsound;
-
-int g_dbus_signal_values[MM_SOUND_SIGNAL_MAX] = {0,};
-
-const char* dbus_signal_name_str[] = {
+static GDBusConnection *g_dbus_conn_mmsound;
+static int g_dbus_signal_values[MM_SOUND_SIGNAL_MAX] = {0,};
+static const char* dbus_signal_name_str[] = {
        "ReleaseInternalFocus",
 };
 
@@ -562,19 +559,20 @@ static void signal_callback(GDBusConnection *conn,
 }
 
 EXPORT_API
-int mm_sound_subscribe_signal(mm_sound_signal_name_t signal, unsigned int *subscribe_id, mm_sound_signal_callback callback, void *user_data)
+int mm_sound_subscribe_signal(mm_sound_signal_name_t signal_type, unsigned int *subscribe_id,
+                                                       mm_sound_signal_callback callback, void *user_data)
 {
        int ret = MM_ERROR_NONE;
        GError *err = NULL;
-
+       guint subs_id;
        subscribe_cb_t *subscribe_cb = NULL;
 
        debug_fenter();
 
        MMSOUND_ENTER_CRITICAL_SECTION_WITH_RETURN(&g_subscribe_cb_list_mutex, MM_ERROR_SOUND_INTERNAL);
 
-       if (signal < 0 || signal >= MM_SOUND_SIGNAL_MAX || !subscribe_id) {
-               debug_error ("invalid argument, signal(%d), subscribe_id(0x%p)", signal, subscribe_id);
+       if (signal_type < 0 || signal_type >= MM_SOUND_SIGNAL_MAX || !subscribe_id) {
+               debug_error ("invalid argument, signal(%d), subscribe_id(%p)", signal_type, subscribe_id);
                ret = MM_ERROR_INVALID_ARGUMENT;
                goto error;
        }
@@ -585,6 +583,9 @@ int mm_sound_subscribe_signal(mm_sound_signal_name_t signal, unsigned int *subsc
                goto error;
        }
        memset(subscribe_cb, 0, sizeof(subscribe_cb_t));
+       subscribe_cb->signal_type = signal_type;
+       subscribe_cb->callback = callback;
+       subscribe_cb->user_data = user_data;
 
        g_dbus_conn_mmsound = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &err);
        if (!g_dbus_conn_mmsound && err) {
@@ -593,30 +594,18 @@ int mm_sound_subscribe_signal(mm_sound_signal_name_t signal, unsigned int *subsc
                ret = MM_ERROR_SOUND_INTERNAL;
                goto error;
        }
-
-       subscribe_cb->signal_type = signal;
-       subscribe_cb->callback = callback;
-       subscribe_cb->user_data = user_data;
-
-       *subscribe_id = g_dbus_connection_signal_subscribe(g_dbus_conn_mmsound,
-                       NULL, MM_SOUND_DBUS_INTERFACE, dbus_signal_name_str[signal], MM_SOUND_DBUS_OBJECT_PATH, NULL, 0,
-                       signal_callback, subscribe_cb, NULL);
-       if (*subscribe_id == 0) {
-               debug_error ("g_dbus_connection_signal_subscribe() error (%d)", *subscribe_id);
-               ret = MM_ERROR_SOUND_INTERNAL;
-               goto sig_error;
-       }
-
-       subscribe_cb->id = *subscribe_id;
-
-       g_subscribe_cb_list = g_list_append(g_subscribe_cb_list, subscribe_cb);
-       if (g_subscribe_cb_list) {
-               debug_log("new subscribe_cb(0x%x)[user_callback(0x%x), subscribe_id(%u)] is added\n", subscribe_cb, subscribe_cb->callback, subscribe_cb->id);
-       } else {
-               debug_error("g_list_append failed\n");
+       subs_id = g_dbus_connection_signal_subscribe(g_dbus_conn_mmsound, NULL, MM_SOUND_DBUS_INTERFACE,
+                                                                                                       dbus_signal_name_str[signal_type], MM_SOUND_DBUS_OBJECT_PATH,
+                                                                                                       NULL, G_DBUS_SIGNAL_FLAGS_NONE, signal_callback,
+                                                                                                       subscribe_cb, free);
+       if (subs_id == 0) {
+               debug_error ("g_dbus_connection_signal_subscribe() error (%d)", subs_id);
                ret = MM_ERROR_SOUND_INTERNAL;
+               g_object_unref(g_dbus_conn_mmsound);
                goto error;
        }
+       subscribe_cb->id = subs_id;
+       *subscribe_id = subs_id;
 
        MMSOUND_LEAVE_CRITICAL_SECTION(&g_subscribe_cb_list_mutex);
 
@@ -624,33 +613,31 @@ int mm_sound_subscribe_signal(mm_sound_signal_name_t signal, unsigned int *subsc
 
        return ret;
 
-sig_error:
-       g_dbus_connection_signal_unsubscribe(g_dbus_conn_mmsound, *subscribe_id);
-       g_object_unref(g_dbus_conn_mmsound);
-
 error:
        if (subscribe_cb)
-               free (subscribe_cb);
+               free(subscribe_cb);
 
        MMSOUND_LEAVE_CRITICAL_SECTION(&g_subscribe_cb_list_mutex);
 
        return ret;
 }
 
+/* ToDo : Almost same as mm_sound_subscribe_signal, need to be merged */
 EXPORT_API
-int mm_sound_subscribe_signal_for_daemon(mm_sound_signal_name_t signal, int client_pid, unsigned int *subscribe_id, mm_sound_signal_callback callback, void *user_data)
+int mm_sound_subscribe_signal_for_daemon(mm_sound_signal_name_t signal_type, int client_pid, unsigned int *subscribe_id,
+                                                                               mm_sound_signal_callback callback, void *user_data)
 {
        int ret = MM_ERROR_NONE;
        GError *err = NULL;
-
+       guint subs_id;
        subscribe_cb_t *subscribe_cb = NULL;
 
        debug_fenter();
 
        MMSOUND_ENTER_CRITICAL_SECTION_WITH_RETURN(&g_subscribe_cb_list_mutex, MM_ERROR_SOUND_INTERNAL);
 
-       if (signal < 0 || signal >= MM_SOUND_SIGNAL_MAX || !client_pid || !subscribe_id) {
-               debug_error ("invalid argument, signal(%d), client_pid(%d), subscribe_id(0x%p)", signal, client_pid, subscribe_id);
+       if (signal_type < 0 || signal_type >= MM_SOUND_SIGNAL_MAX || !client_pid || !subscribe_id) {
+               debug_error ("invalid argument, signal(%d), client_pid(%d), subscribe_id(%p)", signal_type, client_pid, subscribe_id);
                ret = MM_ERROR_INVALID_ARGUMENT;
                goto error;
        }
@@ -661,6 +648,10 @@ int mm_sound_subscribe_signal_for_daemon(mm_sound_signal_name_t signal, int clie
                goto error;
        }
        memset(subscribe_cb, 0, sizeof(subscribe_cb_t));
+       subscribe_cb->signal_type = signal_type;
+       subscribe_cb->callback = callback;
+       subscribe_cb->user_data = user_data;
+       subscribe_cb->client_pid = client_pid;
 
        g_dbus_conn_mmsound = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &err);
        if (!g_dbus_conn_mmsound && err) {
@@ -669,31 +660,18 @@ int mm_sound_subscribe_signal_for_daemon(mm_sound_signal_name_t signal, int clie
                ret = MM_ERROR_SOUND_INTERNAL;
                goto error;
        }
-
-       subscribe_cb->signal_type = signal;
-       subscribe_cb->callback = callback;
-       subscribe_cb->user_data = user_data;
-       subscribe_cb->client_pid = client_pid;
-
-       *subscribe_id = g_dbus_connection_signal_subscribe(g_dbus_conn_mmsound,
-                       NULL, MM_SOUND_DBUS_INTERFACE, dbus_signal_name_str[signal], MM_SOUND_DBUS_OBJECT_PATH, NULL, 0,
-                       signal_callback, subscribe_cb, NULL);
-       if (*subscribe_id == 0) {
-               debug_error ("g_dbus_connection_signal_subscribe() error (%d)", *subscribe_id);
-               ret = MM_ERROR_SOUND_INTERNAL;
-               goto sig_error;
-       }
-
-       subscribe_cb->id = *subscribe_id;
-
-       g_subscribe_cb_list = g_list_append(g_subscribe_cb_list, subscribe_cb);
-       if (g_subscribe_cb_list) {
-               debug_log("new subscribe_cb(0x%x)[user_callback(0x%x), subscribe_id(%u)] is added\n", subscribe_cb, subscribe_cb->callback, subscribe_cb->id);
-       } else {
-               debug_error("g_list_append failed\n");
+       subs_id = g_dbus_connection_signal_subscribe(g_dbus_conn_mmsound, NULL, MM_SOUND_DBUS_INTERFACE,
+                                                                                                       dbus_signal_name_str[signal_type], MM_SOUND_DBUS_OBJECT_PATH,
+                                                                                                       NULL, G_DBUS_SIGNAL_FLAGS_NONE, signal_callback,
+                                                                                                       subscribe_cb, free);
+       if (subs_id == 0) {
+               debug_error ("g_dbus_connection_signal_subscribe() error (%d)", subs_id);
                ret = MM_ERROR_SOUND_INTERNAL;
+               g_object_unref(g_dbus_conn_mmsound);
                goto error;
        }
+       subscribe_cb->id = subs_id;
+       *subscribe_id = subs_id;
 
        MMSOUND_LEAVE_CRITICAL_SECTION(&g_subscribe_cb_list_mutex);
 
@@ -701,13 +679,9 @@ int mm_sound_subscribe_signal_for_daemon(mm_sound_signal_name_t signal, int clie
 
        return ret;
 
-sig_error:
-       g_dbus_connection_signal_unsubscribe(g_dbus_conn_mmsound, *subscribe_id);
-       g_object_unref(g_dbus_conn_mmsound);
-
 error:
        if (subscribe_cb)
-               free (subscribe_cb);
+               free(subscribe_cb);
 
        MMSOUND_LEAVE_CRITICAL_SECTION(&g_subscribe_cb_list_mutex);
 
@@ -717,7 +691,6 @@ error:
 EXPORT_API
 void mm_sound_unsubscribe_signal(unsigned int subscribe_id)
 {
-       GList *list = NULL;
        subscribe_cb_t *subscribe_cb = NULL;
 
        debug_fenter();
@@ -727,14 +700,6 @@ void mm_sound_unsubscribe_signal(unsigned int subscribe_id)
        if (g_dbus_conn_mmsound && subscribe_id) {
                g_dbus_connection_signal_unsubscribe(g_dbus_conn_mmsound, subscribe_id);
                g_object_unref(g_dbus_conn_mmsound);
-               for (list = g_subscribe_cb_list; list != NULL; list = list->next) {
-                       subscribe_cb = (subscribe_cb_t *)list->data;
-                       if (subscribe_cb && (subscribe_cb->id == subscribe_id)) {
-                               g_subscribe_cb_list = g_list_remove(g_subscribe_cb_list, subscribe_cb);
-                               debug_log("subscribe_cb(0x%x) is removed\n", subscribe_cb);
-                               free (subscribe_cb);
-                       }
-               }
        }
 
        MMSOUND_LEAVE_CRITICAL_SECTION(&g_subscribe_cb_list_mutex);
@@ -743,7 +708,7 @@ void mm_sound_unsubscribe_signal(unsigned int subscribe_id)
 }
 
 EXPORT_API
-int mm_sound_send_signal(mm_sound_signal_name_t signal, int value)
+int mm_sound_send_signal(mm_sound_signal_name_t signal_type, int value)
 {
        int ret = MM_ERROR_NONE;
        GError *err = NULL;
@@ -754,8 +719,8 @@ int mm_sound_send_signal(mm_sound_signal_name_t signal, int value)
 
        MMSOUND_ENTER_CRITICAL_SECTION_WITH_RETURN(&g_subscribe_cb_list_mutex, MM_ERROR_SOUND_INTERNAL);
 
-       if (signal < 0 || signal >= MM_SOUND_SIGNAL_MAX) {
-               debug_error ("invalid argument, signal(%d)", signal);
+       if (signal_type < 0 || signal_type >= MM_SOUND_SIGNAL_MAX) {
+               debug_error ("invalid argument, signal(%d)", signal_type);
                ret = MM_ERROR_INVALID_ARGUMENT;
                goto error;
        }
@@ -767,8 +732,8 @@ int mm_sound_send_signal(mm_sound_signal_name_t signal, int value)
                goto error;
        }
 
-       g_dbus_signal_values[signal] = value;
-       if (signal == MM_SOUND_SIGNAL_RELEASE_INTERNAL_FOCUS) {
+       g_dbus_signal_values[signal_type] = value;
+       if (signal_type == MM_SOUND_SIGNAL_RELEASE_INTERNAL_FOCUS) {
                /* Trigger the signal callback when it comes from the same process.
                * |<-- pid (16bits) -->|<-- value (16bits) -->|,
                * FYI, #define PID_MAX_DEFAULT (CONFIG_BASE_SMALL ? 0x1000 : 0x8000). */
@@ -777,7 +742,7 @@ int mm_sound_send_signal(mm_sound_signal_name_t signal, int value)
                        debug_error ("failed to _mm_session_util_write_information for MM_SESSION_TYPE_REPLACED_BY_STREAM");
        }
        dbus_ret = g_dbus_connection_emit_signal (conn,
-                               NULL, MM_SOUND_DBUS_OBJECT_PATH, MM_SOUND_DBUS_INTERFACE, dbus_signal_name_str[signal],
+                               NULL, MM_SOUND_DBUS_OBJECT_PATH, MM_SOUND_DBUS_INTERFACE, dbus_signal_name_str[signal_type],
                                g_variant_new ("(i)", value),
                                &err);
        if (!dbus_ret && err) {
@@ -794,7 +759,7 @@ int mm_sound_send_signal(mm_sound_signal_name_t signal, int value)
        }
 
        g_object_unref(conn);
-       debug_msg ("sending signal[%s], value[%d] success", dbus_signal_name_str[signal], value);
+       debug_msg ("sending signal[%s], value[%d] success", dbus_signal_name_str[signal_type], value);
 
        MMSOUND_LEAVE_CRITICAL_SECTION(&g_subscribe_cb_list_mutex);
 
@@ -814,7 +779,7 @@ error:
 }
 
 EXPORT_API
-int mm_sound_get_signal_value(mm_sound_signal_name_t signal, int *value)
+int mm_sound_get_signal_value(mm_sound_signal_name_t signal_type, int *value)
 {
        int ret = MM_ERROR_NONE;
 
@@ -822,7 +787,7 @@ int mm_sound_get_signal_value(mm_sound_signal_name_t signal, int *value)
 
        MMSOUND_ENTER_CRITICAL_SECTION_WITH_RETURN(&g_subscribe_cb_list_mutex, MM_ERROR_SOUND_INTERNAL);
 
-       *value = g_dbus_signal_values[signal];
+       *value = g_dbus_signal_values[signal_type];
 
        MMSOUND_LEAVE_CRITICAL_SECTION(&g_subscribe_cb_list_mutex);
 
index b74c039..c916c18 100644 (file)
@@ -1,6 +1,6 @@
 Name:       libmm-sound
 Summary:    MMSound Package contains client lib and sound_server binary
-Version:    0.10.91
+Version:    0.10.92
 Release:    0
 Group:      System/Libraries
 License:    Apache-2.0