Set default{Media) session when No session has been set 25/42125/3
authorinhyeok <i_bc.kim@samsung.com>
Thu, 11 Jun 2015 07:10:55 +0000 (16:10 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Wed, 8 Jul 2015 05:37:51 +0000 (14:37 +0900)
[Version] Release 0.3.11
[profile] Common
[Issue Type] Refactoring

When set/get Media options, if No session has been set, set default session internally.

Change-Id: I10c19eaf62ffdddc74832a1d919b0392be3824c1
Signed-off-by: inhyeok <i_bc.kim@samsung.com>
include/sound_manager.h
include/sound_manager_private.h
packaging/capi-media-sound-manager.spec
src/sound_manager.c
src/sound_manager_private.c

index dc5ef6077b1a05fef6be5e4d7a26887a2235424b..833a10e8ecade71cddb67ef2ad93f4b317aec241 100644 (file)
@@ -776,7 +776,6 @@ int sound_manager_get_session_type (sound_session_type_e *type);
  * @retval #SOUND_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #SOUND_MANAGER_ERROR_INVALID_OPERATION Invalid operation
  * @retval #SOUND_MANAGER_ERROR_POLICY Noncompliance with the sound system policy
- * @pre Call sound_manager_set_session_type(SOUND_SESSION_TYPE_MEDIA) before calling this function.
  * @see sound_manager_set_session_type()
  * @see sound_manager_get_session_type()
  * @see sound_manager_get_media_session_option()
@@ -816,7 +815,6 @@ int sound_manager_get_media_session_option (sound_session_option_for_starting_e
  * @retval #SOUND_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #SOUND_MANAGER_ERROR_INVALID_OPERATION Invalid operation
  * @retval #SOUND_MANAGER_ERROR_POLICY Noncompliance with the sound system policy
- * @pre Call sound_manager_set_session_type(SOUND_SESSION_TYPE_MEDIA) before calling this function.
  * @see sound_manager_set_session_type()
  * @see sound_manager_get_session_type()
  * @see sound_manager_set_media_session_option()
index 04c9384367dad74b60c19c8ad5f55670d2c8cf6e..b6148b2d30f0a5538ebecea82fc40950dc7ec000 100644 (file)
@@ -253,7 +253,7 @@ void _pa_context_state_cb (pa_context *c, void *userdata);
 
 void _pa_stream_state_cb (pa_stream *s, void * userdata);
 
-void _session_interrupt_cb (session_msg_t msg, session_event_t event, void *user_data);
+void __session_interrupt_cb (session_msg_t msg, session_event_t event, void *user_data);
 
 int __set_session_mode (_session_mode_e mode);
 
index e806b71af1b28028dbd2f4ec7cab77af5d18486c..95b0e9bf3da4d4fea59477d610d0c2815d3ad13b 100755 (executable)
@@ -1,6 +1,6 @@
 Name:       capi-media-sound-manager
 Summary:    Sound Manager library
-Version:    0.3.10
+Version:    0.3.11
 Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
index 9fc38f8d6d7a3d77995d369c05b2190ff69d82dd..b08abf7660dc702920abe8b0de8d70eb03a69165 100644 (file)
@@ -597,7 +597,7 @@ int sound_manager_set_session_type (sound_session_type_e type)
                        g_cached_session_mode = -1;
                }
        }
-       ret = mm_session_init_ex(new_session , _session_interrupt_cb, NULL);
+       ret = mm_session_init_ex(new_session , __session_interrupt_cb, NULL);
        if (ret == MM_ERROR_NONE) {
                g_session_interrupt_cb_table.is_registered = 1;
        }
@@ -622,8 +622,14 @@ int sound_manager_get_session_type (sound_session_type_e *type)
        if (type == NULL)
                return __convert_sound_manager_error_code(__func__, MM_ERROR_INVALID_ARGUMENT);
        ret = mm_session_get_current_type(&cur_session);
-       if (ret != 0)
+       if (ret != 0) {
+               LOGW("session hasn't been set, setting default session");
                cur_session = SOUND_SESSION_TYPE_DEFAULT;
+               ret = mm_session_init_ex(cur_session, __session_interrupt_cb, NULL);
+               if (ret == 0) {
+                       g_session_interrupt_cb_table.is_registered = 1;
+               }
+       }
        if ((cur_session > MM_SESSION_TYPE_EMERGENCY) &&
                        (cur_session != MM_SESSION_TYPE_VOIP)) {
                if (g_cached_session != -1)
@@ -675,9 +681,12 @@ int sound_manager_set_media_session_option (sound_session_option_for_starting_e
 
        ret = mm_session_get_current_information(&session, &session_option);
        if (ret != 0 || !g_session_interrupt_cb_table.is_registered) {
-               LOGW("need to set session type first");
-               return __convert_sound_manager_error_code(__func__, ret);
-       } else if (ret == MM_ERROR_NONE && session > MM_SESSION_TYPE_MEDIA) {
+               LOGW("session hasn't been set, setting default session");
+               ret = mm_session_init_ex(MM_SESSION_TYPE_MEDIA, __session_interrupt_cb, NULL);
+               if (ret == 0) {
+                       g_session_interrupt_cb_table.is_registered = 1;
+               }
+       } else if (ret == 0 && session > MM_SESSION_TYPE_MEDIA) {
                if (session == MM_SESSION_TYPE_MEDIA_RECORD) {
                        if (!g_session_interrupt_cb_table.is_registered) {
                                LOGE("Already set by camera/recorder/audio-io(in)/radio API, but need to set session to Media first");
@@ -752,7 +761,10 @@ int sound_manager_get_media_session_option (sound_session_option_for_starting_e
 
        ret = mm_session_get_current_information(&session, &session_options);
        if (ret != 0) {
-               return __convert_sound_manager_error_code(__func__, ret);
+               ret = mm_session_init_ex(MM_SESSION_TYPE_MEDIA, __session_interrupt_cb, NULL);
+               if (ret == 0) {
+                       g_session_interrupt_cb_table.is_registered = 1;
+               }
        } else if (session > SOUND_SESSION_TYPE_MEDIA) {
                if (session == MM_SESSION_TYPE_MEDIA_RECORD) {
                        if (!g_session_interrupt_cb_table.is_registered) {
@@ -794,9 +806,12 @@ int sound_manager_set_media_session_resumption_option (sound_session_option_for_
 
        ret = mm_session_get_current_information(&session, &session_option);
        if (ret != 0 || !g_session_interrupt_cb_table.is_registered) {
-               LOGW("need to set session type first");
-               return __convert_sound_manager_error_code(__func__, ret);
-       } else if (ret == MM_ERROR_NONE && session > MM_SESSION_TYPE_MEDIA) {
+               LOGW("session hasn't been set, setting default session");
+               ret = mm_session_init_ex(MM_SESSION_TYPE_MEDIA, __session_interrupt_cb, NULL);
+               if (ret == 0) {
+                       g_session_interrupt_cb_table.is_registered = 1;
+               }
+       } else if (ret == 0 && session > MM_SESSION_TYPE_MEDIA) {
                if (session == MM_SESSION_TYPE_MEDIA_RECORD) {
                        if (!g_session_interrupt_cb_table.is_registered) {
                                LOGE("Already set by camera/recorder/audio-io(in)/radio API, but need to set session to Media first");
@@ -849,7 +864,11 @@ int sound_manager_get_media_session_resumption_option (sound_session_option_for_
                return __convert_sound_manager_error_code(__func__, MM_ERROR_INVALID_ARGUMENT);
        ret = mm_session_get_current_information(&session, &session_options);
        if (ret != 0) {
-               return __convert_sound_manager_error_code(__func__, ret);
+               LOGW("session hasn't been set, setting default session");
+               ret = mm_session_init_ex(MM_SESSION_TYPE_MEDIA, __session_interrupt_cb, NULL);
+               if (ret == 0) {
+                       g_session_interrupt_cb_table.is_registered = 1;
+               }
        } else if (session > SOUND_SESSION_TYPE_MEDIA) {
                if (session == MM_SESSION_TYPE_MEDIA_RECORD) {
                        if (!g_session_interrupt_cb_table.is_registered) {
@@ -949,7 +968,7 @@ int sound_manager_set_session_interrupted_cb (sound_session_interrupted_cb callb
                return __convert_sound_manager_error_code(__func__, MM_ERROR_POLICY_INTERNAL);
 
        if (g_session_interrupt_cb_table.is_registered == 0) {
-               ret = mm_session_init_ex(SOUND_SESSION_TYPE_DEFAULT /*default*/ , _session_interrupt_cb, NULL);
+               ret = mm_session_init_ex(SOUND_SESSION_TYPE_DEFAULT /*default*/ , __session_interrupt_cb, NULL);
                if (ret != 0)
                        return __convert_sound_manager_error_code(__func__, ret);
                g_session_interrupt_cb_table.is_registered = 1;
index 277567688adbe7587204bba49286a29e5dc47b01..94ff26fd8dca03c78c7eac762bc43835da912ae3 100644 (file)
@@ -811,7 +811,7 @@ int __get_current_volume_type (const char *direction, char **volume_type)
        return ret;
 }
 
-void _session_interrupt_cb (session_msg_t msg, session_event_t event, void *user_data){
+void __session_interrupt_cb (session_msg_t msg, session_event_t event, void *user_data){
        if( g_session_interrupt_cb_table.user_cb ){
                sound_session_interrupted_code_e e = SOUND_SESSION_INTERRUPTED_COMPLETED;
                if( msg == MM_SESSION_MSG_RESUME )