Fix interrupted callback bug 99/99199/1
authorGilbok Lee <gilbok.lee@samsung.com>
Tue, 22 Nov 2016 06:55:36 +0000 (15:55 +0900)
committerGilbok Lee <gilbok.lee@samsung.com>
Tue, 22 Nov 2016 06:55:36 +0000 (15:55 +0900)
When mm_radio register sound_focus_watch_callback, mm_radio post wrong code type.

[Version] 0.2.14
[Profile] Mobile, Wearable
[Issue Type] Fix bugs

Change-Id: Idea5a175d26fb347048e4255000de3d9c2e177e4

packaging/libmm-radio.spec
src/include/mm_radio_sound_focus.h
src/mm_radio_priv_hal.c
src/mm_radio_sound_focus.c

index 12f7388..e2b8aed 100755 (executable)
@@ -1,6 +1,6 @@
 Name:       libmm-radio
 Summary:    Multimedia Framework Radio Library
-Version:    0.2.13
+Version:    0.2.14
 Release:    0
 Group:      System/Libraries
 License:    Apache-2.0
index ce8ec8e..64a69d8 100644 (file)
@@ -50,6 +50,6 @@ int mmradio_sound_focus_register(mm_radio_sound_focus *sound_focus, mm_sound_foc
 int mmradio_sound_focus_deregister(mm_radio_sound_focus *sound_focus);
 int mmradio_acquire_sound_focus(mm_radio_sound_focus *sound_focus);
 int mmradio_release_sound_focus(mm_radio_sound_focus *sound_focus);
-void mmradio_get_sound_focus_reason(mm_sound_focus_state_e focus_state, const char *reason_for_change, enum MMMessageInterruptedCode *event_source, int *postMsg);
+void mmradio_get_sound_focus_reason(mm_sound_focus_state_e focus_state, const char *reason_for_change, bool is_watch, enum MMMessageInterruptedCode *event_source, int *postMsg);
 
 #endif /* MM_RADIO_AUDIO_FOCUS_H_ */
index d02de91..a349c39 100644 (file)
@@ -1348,7 +1348,7 @@ static void __mmradio_sound_focus_cb(int id, mm_sound_focus_type_e focus_type,
        MMRADIO_LOG_FENTER();
        MMRADIO_CHECK_INSTANCE_RETURN_VOID(radio);
 
-       mmradio_get_sound_focus_reason(focus_state, reason_for_change, &event_source, &postMsg);
+       mmradio_get_sound_focus_reason(focus_state, reason_for_change, FALSE, &event_source, &postMsg);
        radio->sound_focus.event_src = event_source;
 
        switch (focus_state) {
@@ -1400,7 +1400,7 @@ static void __mmradio_sound_focus_watch_cb(int id, mm_sound_focus_type_e focus_t
        MMRADIO_LOG_FENTER();
        MMRADIO_CHECK_INSTANCE_RETURN_VOID(radio);
 
-       mmradio_get_sound_focus_reason(focus_state, reason_for_change, &event_source, &postMsg);
+       mmradio_get_sound_focus_reason(focus_state, reason_for_change, TRUE, &event_source, &postMsg);
        radio->sound_focus.event_src = event_source;
 
        switch (focus_state) {
index a780fd1..cbfe624 100644 (file)
@@ -310,7 +310,7 @@ int mmradio_release_sound_focus(mm_radio_sound_focus *sound_focus)
 
 #define AUDIO_FOCUS_REASON_MAX 128
 
-void mmradio_get_sound_focus_reason(mm_sound_focus_state_e focus_state, const char *reason_for_change, enum MMMessageInterruptedCode *event_source, int *postMsg)
+void mmradio_get_sound_focus_reason(mm_sound_focus_state_e focus_state, const char *reason_for_change, bool is_watch, enum MMMessageInterruptedCode *event_source, int *postMsg)
 {
        MMRADIO_LOG_FENTER();
        MMRADIO_LOG_ERROR("mmradio_get_sound_focus_reason focus_state : %d reason_for_change :%s\n", focus_state, reason_for_change);
@@ -320,28 +320,56 @@ void mmradio_get_sound_focus_reason(mm_sound_focus_state_e focus_state, const ch
                || (0 == strncmp(reason_for_change, "ringtone-voip", AUDIO_FOCUS_REASON_MAX))
                || (0 == strncmp(reason_for_change, "ringtone-call", AUDIO_FOCUS_REASON_MAX))
                ) {
-               if (focus_state == FOCUS_IS_RELEASED)
-                       *event_source = MM_MSG_CODE_INTERRUPTED_BY_CALL_START;
-               else if (focus_state == FOCUS_IS_ACQUIRED)
-                       *event_source = MM_MSG_CODE_INTERRUPTED_BY_CALL_END;
+               if (focus_state == FOCUS_IS_RELEASED) {
+                       if (is_watch)
+                               *event_source = MM_MSG_CODE_INTERRUPTED_BY_CALL_END;
+                       else
+                               *event_source = MM_MSG_CODE_INTERRUPTED_BY_CALL_START;
+               } else if (focus_state == FOCUS_IS_ACQUIRED) {
+                       if (is_watch)
+                               *event_source = MM_MSG_CODE_INTERRUPTED_BY_CALL_START;
+                       else
+                               *event_source = MM_MSG_CODE_INTERRUPTED_BY_CALL_END;
+               }
                *postMsg = true;
        } else if (0 == strncmp(reason_for_change, "alarm", AUDIO_FOCUS_REASON_MAX)) {
-               if (focus_state == FOCUS_IS_RELEASED)
-                       *event_source = MM_MSG_CODE_INTERRUPTED_BY_ALARM_START;
-               else if (focus_state == FOCUS_IS_ACQUIRED)
-                       *event_source = MM_MSG_CODE_INTERRUPTED_BY_ALARM_END;
+               if (focus_state == FOCUS_IS_RELEASED) {
+                       if (is_watch)
+                               *event_source = MM_MSG_CODE_INTERRUPTED_BY_ALARM_END;
+                       else
+                               *event_source = MM_MSG_CODE_INTERRUPTED_BY_ALARM_START;
+               } else if (focus_state == FOCUS_IS_ACQUIRED) {
+                       if (is_watch)
+                               *event_source = MM_MSG_CODE_INTERRUPTED_BY_ALARM_START;
+                       else
+                               *event_source = MM_MSG_CODE_INTERRUPTED_BY_ALARM_END;
+               }
                *postMsg = true;
        } else if (0 == strncmp(reason_for_change, "notification", AUDIO_FOCUS_REASON_MAX)) {
-               if (focus_state == FOCUS_IS_RELEASED)
-                       *event_source = MM_MSG_CODE_INTERRUPTED_BY_NOTIFICATION_START;
-               else if (focus_state == FOCUS_IS_ACQUIRED)
-                       *event_source = MM_MSG_CODE_INTERRUPTED_BY_NOTIFICATION_END;
+               if (focus_state == FOCUS_IS_RELEASED) {
+                       if (is_watch)
+                               *event_source = MM_MSG_CODE_INTERRUPTED_BY_NOTIFICATION_END;
+                       else
+                               *event_source = MM_MSG_CODE_INTERRUPTED_BY_NOTIFICATION_START;
+               } else if (focus_state == FOCUS_IS_ACQUIRED) {
+                       if (is_watch)
+                               *event_source = MM_MSG_CODE_INTERRUPTED_BY_NOTIFICATION_START;
+                       else
+                               *event_source = MM_MSG_CODE_INTERRUPTED_BY_NOTIFICATION_END;
+               }
                *postMsg = true;
        } else if (0 == strncmp(reason_for_change, "emergency", AUDIO_FOCUS_REASON_MAX)) {
-               if (focus_state == FOCUS_IS_RELEASED)
-                       *event_source = MM_MSG_CODE_INTERRUPTED_BY_EMERGENCY_START;
-               else if (focus_state == FOCUS_IS_ACQUIRED)
-                       *event_source = MM_MSG_CODE_INTERRUPTED_BY_EMERGENCY_END;
+               if (focus_state == FOCUS_IS_RELEASED) {
+                       if (is_watch)
+                               *event_source = MM_MSG_CODE_INTERRUPTED_BY_EMERGENCY_END;
+                       else
+                               *event_source = MM_MSG_CODE_INTERRUPTED_BY_EMERGENCY_START;
+               } else if (focus_state == FOCUS_IS_ACQUIRED) {
+                       if (is_watch)
+                               *event_source = MM_MSG_CODE_INTERRUPTED_BY_EMERGENCY_START;
+                       else
+                               *event_source = MM_MSG_CODE_INTERRUPTED_BY_EMERGENCY_END;
+               }
                *postMsg = false;
        } else if (0 == strncmp(reason_for_change, "media", AUDIO_FOCUS_REASON_MAX)) {
                *event_source = MM_MSG_CODE_INTERRUPTED_BY_MEDIA;