Fix svace issue 65/115465/1 accepted/tizen/common/20170220.144227 accepted/tizen/ivi/20170220.223152 accepted/tizen/ivi/20170221.225324 accepted/tizen/mobile/20170220.223128 accepted/tizen/mobile/20170221.225248 accepted/tizen/wearable/20170221.225308 submit/tizen/20170220.060310 submit/tizen/20170221.000745
authorsinikang <sinikang@samsung.com>
Mon, 20 Feb 2017 05:49:07 +0000 (14:49 +0900)
committersinikang <sinikang@samsung.com>
Mon, 20 Feb 2017 05:49:07 +0000 (14:49 +0900)
Change-Id: Ida3dad50d78d40c01a289c83b590ace2a5ccbcb0

module/src/callmgr-audio.c
packaging/call-manager.spec

index 76c1dc1cabd9b820bfcfa9d6f08881cfaad06670..ad4f2bdd91024e54be0adb56a3957feb252e37b1 100644 (file)
@@ -363,18 +363,26 @@ int _callmgr_audio_destroy_call_sound_session(callmgr_audio_handle_h audio_handl
        return 0;
 }
 
-static int __callmgr_audio_get_sound_device(sound_device_type_e device_type, sound_device_h *sound_device)
+static int __callmgr_audio_get_sound_device(sound_device_type_e device_type, sound_device_list_h device_list, sound_device_h *sound_device)
 {
-       sound_device_list_h device_list = NULL;
+//     sound_device_list_h device_list = NULL;
        sound_device_h  device = NULL;
        sound_device_type_e o_device_type;
        int ret = -1;
 
+/* move to _callmgr_audio_set_audio_route() for free device list after using device_list info*/
+#if 0
        ret = sound_manager_get_device_list(SOUND_DEVICE_ALL_MASK, &device_list);
        if (ret != SOUND_MANAGER_ERROR_NONE) {
                err("sound_manager_get_device_list() failed. [%d][%s]", ret, get_error_message(ret));
                return -1;
        }
+#else
+       if (device_list == NULL) {
+               err("device_list is NULL!");
+               return -1;
+       }
+#endif
 
        while (1) {
                ret = sound_manager_get_next_device(device_list, &device);
@@ -386,7 +394,7 @@ static int __callmgr_audio_get_sound_device(sound_device_type_e device_type, sou
                        }
                } else {
                        err("sound_manager_get_next_device() failed with err[%d]", ret);
-                       sound_manager_free_device_list(device_list);
+                       //sound_manager_free_device_list(device_list);
                        return -1;
                }
        }
@@ -527,6 +535,7 @@ static int __callmgr_audio_set_audio_control_state(callmgr_audio_handle_h audio_
 int _callmgr_audio_set_audio_route(callmgr_audio_handle_h audio_handle, callmgr_audio_route_e route)
 {
        int ret = -1;
+       sound_device_list_h device_list = NULL;
        sound_device_h sound_device = NULL;
        sound_device_type_e device_type;
 
@@ -570,40 +579,72 @@ int _callmgr_audio_set_audio_route(callmgr_audio_handle_h audio_handle, callmgr_
                if ((audio_handle->current_route == SOUND_DEVICE_BUILTIN_SPEAKER)
                                || (audio_handle->current_route == SOUND_DEVICE_BUILTIN_RECEIVER)) {
                        dbg("Remove Built-in mic device");
-                       __callmgr_audio_get_sound_device(SOUND_DEVICE_BUILTIN_MIC, &sound_device);
+
+                       ret = sound_manager_get_device_list(SOUND_DEVICE_ALL_MASK, &device_list);
+                       if (ret != SOUND_MANAGER_ERROR_NONE) {
+                               err("sound_manager_get_device_list() failed. [%d][%s]", ret, get_error_message(ret));
+                               return -1;
+                       }
+
+                       __callmgr_audio_get_sound_device(SOUND_DEVICE_BUILTIN_MIC, device_list, &sound_device);
                        ret = sound_manager_remove_device_for_stream_routing(audio_handle->sound_stream_handle, sound_device);
                        if (ret != SOUND_MANAGER_ERROR_NONE)
                                err("sound_manager_remove_device_for_stream_routing() failed:[%d]", ret);
+
+                       sound_manager_free_device_list(device_list);
+                       device_list = NULL;
+
                }
 
                dbg("Remove current device [%s]", __callmgr_audio_convert_device_type_to_string(audio_handle->current_route));
-               __callmgr_audio_get_sound_device(audio_handle->current_route, &sound_device);
+
+               ret = sound_manager_get_device_list(SOUND_DEVICE_ALL_MASK, &device_list);
+               if (ret != SOUND_MANAGER_ERROR_NONE) {
+                       err("sound_manager_get_device_list() failed. [%d][%s]", ret, get_error_message(ret));
+                       return -1;
+               }
+               __callmgr_audio_get_sound_device(audio_handle->current_route, device_list, &sound_device);
                ret = sound_manager_remove_device_for_stream_routing(audio_handle->sound_stream_handle, sound_device);
                if (ret != SOUND_MANAGER_ERROR_NONE) {
                        err("sound_manager_remove_device_for_stream_routing() failed:[%d]", ret);
                }
                audio_handle->current_route = -1;
+
+               sound_manager_free_device_list(device_list);
+               device_list = NULL;
+
        }
 
        dbg("Add new device [%s]", __callmgr_audio_convert_device_type_to_string(device_type));
-       __callmgr_audio_get_sound_device(device_type, &sound_device);
+
+       ret = sound_manager_get_device_list(SOUND_DEVICE_ALL_MASK, &device_list);
+       if (ret != SOUND_MANAGER_ERROR_NONE) {
+               err("sound_manager_get_device_list() failed. [%d][%s]", ret, get_error_message(ret));
+               return -1;
+       }
+
+       __callmgr_audio_get_sound_device(device_type, device_list, &sound_device);
        __callmgr_audio_set_audio_control_state(audio_handle, sound_device);
        ret = sound_manager_add_device_for_stream_routing(audio_handle->sound_stream_handle, sound_device);
        if (ret != SOUND_MANAGER_ERROR_NONE) {
                err("sound_manager_add_device_for_stream_routing() failed:[%d]", ret);
+               sound_manager_free_device_list(device_list);
                return -1;
        }
 
        if ((route == CALLMGR_AUDIO_ROUTE_SPEAKER_E) || (route == CALLMGR_AUDIO_ROUTE_RECEIVER_E)) {
                dbg("Add Built-in mic device");
-               __callmgr_audio_get_sound_device(SOUND_DEVICE_BUILTIN_MIC, &sound_device);
+               __callmgr_audio_get_sound_device(SOUND_DEVICE_BUILTIN_MIC, device_list, &sound_device);
                ret = sound_manager_add_device_for_stream_routing(audio_handle->sound_stream_handle, sound_device);
                if (ret != SOUND_MANAGER_ERROR_NONE) {
                        err("sound_manager_add_device_for_stream_routing() failed:[%d]", ret);
+                       sound_manager_free_device_list(device_list);
                        return -1;
                }
        }
 
+       sound_manager_free_device_list(device_list);
+
        ret = sound_manager_apply_stream_routing(audio_handle->sound_stream_handle);
        if (ret != SOUND_MANAGER_ERROR_NONE) {
                err("sound_manager_apply_stream_routing() failed:[%d]", ret);
index c60ee1a9b0c992164bddd8194ef3b2fc3037de80..83f0dff8ad81f0bde7874d6e7a7b3aec28b98259 100644 (file)
@@ -1,6 +1,6 @@
 %define major 0
 %define minor 2
-%define patchlevel 6
+%define patchlevel 7
 %define ext_feature 0
 
 Name:           call-manager