Revise focus watch callback 11/41111/2
authorSangchul Lee <sc11.lee@samsung.com>
Thu, 7 May 2015 07:58:05 +0000 (16:58 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Wed, 8 Jul 2015 05:37:50 +0000 (14:37 +0900)
Change-Id: I06ffeef72c0a30f63d7aa657b67169c9ce473973

include/sound_manager_private.h
packaging/capi-media-sound-manager.spec
src/sound_manager.c
src/sound_manager_private.c

index 789eda5d91282f5d251029ee1a916b04df24794f..d1e32aaea6f41da39cc2c26029f0da8db176214c 100644 (file)
@@ -143,6 +143,7 @@ typedef struct {
 }_volume_changed_info_s;
 
 typedef struct {
+       int index;
        void *user_data;
        sound_stream_focus_state_watch_cb user_cb;
 }_focus_watch_info_s;
@@ -176,7 +177,7 @@ do { \
 
 void _focus_state_change_callback (int index, mm_sound_focus_type_e focus_type, mm_sound_focus_state_e state, const char *reason_for_change, const char *additional_info, void *user_data);
 
-void _focus_watch_callback (mm_sound_focus_type_e focus_type, mm_sound_focus_state_e state, const char *reason_for_change, const char *additional_info, void *user_data);
+void _focus_watch_callback (int id, mm_sound_focus_type_e focus_type, mm_sound_focus_state_e state, const char *reason_for_change, const char *additional_info, void *user_data);
 
 int __convert_sound_manager_error_code (const char *func, int code);
 
index 06f3ea50fa5f26b78263d78b1cddaa069904720d..28e19999625809fd8486804085b452567ff3cd1e 100755 (executable)
@@ -1,6 +1,6 @@
 Name:       capi-media-sound-manager
 Summary:    Sound Manager library
-Version:    0.3.5
+Version:    0.3.6
 Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
index d702cf5b9f37e133bbfeb941491933136035509e..5128ca172137c3d24b6a1d94db02dd183a3468c5 100644 (file)
@@ -19,7 +19,7 @@
 
 _session_interrupt_info_s g_session_interrupt_cb_table = {0, NULL, NULL};
 _volume_changed_info_s g_volume_changed_cb_table = {NULL, NULL};
-_focus_watch_info_s g_focus_watch_cb_table = {NULL, NULL};
+_focus_watch_info_s g_focus_watch_cb_table = {-1, NULL, NULL};
 _device_connected_info_s g_device_connected_cb_table = {NULL, NULL};
 _device_changed_info_s g_device_info_changed_cb_table = {NULL, NULL};
 
@@ -457,14 +457,16 @@ int sound_manager_get_focus_state (sound_stream_info_h stream_info, sound_stream
 int sound_manager_set_focus_state_watch_cb (sound_stream_focus_mask_e focus_mask, sound_stream_focus_state_watch_cb callback, void *user_data)
 {
        int ret = MM_ERROR_NONE;
+       int id = -1;
 
        LOGI(">> enter");
 
        SM_NULL_ARG_CHECK(callback);
 
        if (!g_focus_watch_cb_table.user_cb) {
-               ret = mm_sound_set_focus_watch_callback((mm_sound_focus_type_e)focus_mask, _focus_watch_callback, user_data);
+               ret = mm_sound_set_focus_watch_callback((mm_sound_focus_type_e)focus_mask, _focus_watch_callback, user_data, &id);
                if (ret == MM_ERROR_NONE) {
+                       g_focus_watch_cb_table.index = id;
                        g_focus_watch_cb_table.user_cb = callback;
                        g_focus_watch_cb_table.user_data = user_data;
                }
@@ -484,8 +486,9 @@ int sound_manager_unset_focus_state_watch_cb (void)
        LOGI(">> enter");
 
        if (g_focus_watch_cb_table.user_cb) {
-               ret = mm_sound_unset_focus_watch_callback();
+               ret = mm_sound_unset_focus_watch_callback(g_focus_watch_cb_table.index);
                if (ret == MM_ERROR_NONE) {
+                       g_focus_watch_cb_table.index = -1;
                        g_focus_watch_cb_table.user_cb = NULL;
                        g_focus_watch_cb_table.user_data = NULL;
                } else {
index 492dabc129b74dc527bd504687eafd02ffce9b9d..b47eea03c4a280564f58c2e5eba59418f337db01 100644 (file)
@@ -414,7 +414,7 @@ void _focus_state_change_callback (int index, mm_sound_focus_type_e focus_type,
        return;
 }
 
-void _focus_watch_callback (mm_sound_focus_type_e focus_type, mm_sound_focus_state_e state, const char *reason_for_change, const char *additional_info, void *user_data)
+void _focus_watch_callback (int index, mm_sound_focus_type_e focus_type, mm_sound_focus_state_e state, const char *reason_for_change, const char *additional_info, void *user_data)
 {
        int ret = MM_ERROR_NONE;
        sound_stream_focus_change_reason_e change_reason = SOUND_STREAM_FOCUS_CHANGED_BY_MEDIA;