Fixed TSAM-9187 Music Player resumes while recording 66/93566/1
authorbhutani.92 <bhutani.92@samsung.com>
Tue, 25 Oct 2016 04:05:55 +0000 (09:35 +0530)
committerbhutani.92 <bhutani.92@samsung.com>
Tue, 25 Oct 2016 04:05:55 +0000 (09:35 +0530)
Change-Id: Id05620bee7ed4272c3066d4a84f83bd4cf6555a0
Signed-off-by: bhutani.92 <bhutani.92@samsung.com>
src/core/mp-setting-ctrl.c
src/widget/mp-minicontroller.c

index 35cece82075d9458c0fbd22c7ef2f900cb17fac0..be7b69c3df31d617c54e63b1da5196cd4bc24175 100755 (executable)
@@ -520,7 +520,7 @@ mp_setting_set_player_state(int val)
        struct appdata *ad = mp_util_get_appdata();
        MP_CHECK(ad);
 
-       DEBUG_TRACE("%d", ad->freeze_indicator_icon);
+       DEBUG_TRACE("Freeze Indicator Icon : %d", ad->freeze_indicator_icon);
        if (val == MP_PLAY_STATE_PLAYING) {
                ad->freeze_indicator_icon = false;
        }
index dcc569e3e0b635ccbc30f184caa309a963ba813b..881a45182eab7ba81ab5feeee8078c5a22e07cb3 100755 (executable)
@@ -641,19 +641,15 @@ static void _mp_minicontroller_shuffle_btn_clicked_cb(void *data, Evas_Object *o
        _mp_minicontroller_set_shuffle_image(ad, shuffle_state);
 }
 #endif
-static void _mp_minicontroller_play_pause_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       DEBUG_TRACE("play/pause button clicked");
 
+static int _mp_is_current_focus_available(struct appdata *ad)
+{
        sound_stream_focus_change_reason_e changed_by = SOUND_STREAM_FOCUS_CHANGED_BY_MEDIA;
        int ret = SOUND_MANAGER_ERROR_NONE;
        int rec_flag = SOUND_BEHAVIOR_NONE;
        int playback_flag = SOUND_BEHAVIOR_NONE;
        char *additional_info = NULL;
 
-       struct appdata *ad = mp_util_get_appdata();
-       MP_CHECK(ad);
-
        ret = sound_manager_get_current_recording_focus(&changed_by, &rec_flag, &additional_info);
        if (ret != SOUND_MANAGER_ERROR_NONE) {
                ERROR_TRACE("Cannot determine current recording focus");
@@ -661,10 +657,11 @@ static void _mp_minicontroller_play_pause_btn_clicked_cb(void *data, Evas_Object
 
        if (changed_by == SOUND_STREAM_FOCUS_CHANGED_BY_VOICE_RECOGNITION) {
                DEBUG_TRACE("Cannot resume Music Player. Speak Mode is on");
-               return;
+               return -1;
        }
 
        IF_FREE(additional_info);
+
        additional_info = NULL;
        changed_by = SOUND_STREAM_FOCUS_CHANGED_BY_MEDIA;
        ret = sound_manager_get_current_playback_focus(&changed_by, &playback_flag, &additional_info);
@@ -674,11 +671,26 @@ static void _mp_minicontroller_play_pause_btn_clicked_cb(void *data, Evas_Object
 
        if (additional_info && changed_by == SOUND_STREAM_FOCUS_CHANGED_BY_MEDIA && !g_strcmp0(additional_info, "cam_capture")) {
                DEBUG_TRACE("Cannot resume Music Player due to state: %s", additional_info);
-               return;
+               return -1;
        }
 
        if (ad->recorder_state == RECORDER_DEVICE_STATE_RECORDING || ad->recorder_state == RECORDER_DEVICE_STATE_PAUSED) {
-               DEBUG_TRACE("Cannot resume Music Player. Video Recorder is in Use");
+               DEBUG_TRACE("Cannot resume Music Player. Video Recorder is in use");
+               return -1;
+       }
+
+       return 0;
+}
+
+static void _mp_minicontroller_play_pause_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       DEBUG_TRACE("play/pause button clicked");
+
+       struct appdata *ad = mp_util_get_appdata();
+       MP_CHECK(ad);
+
+       if (_mp_is_current_focus_available(ad) != 0) {
+               ERROR_TRACE("Some other application has the focus currently... Returning...");
                return;
        }
 
@@ -712,6 +724,15 @@ static void _mp_minicontroller_ff_rew_btn_pressed_cb(void *data, Evas_Object *ob
 {
        DEBUG_TRACE("button pressed");
        time(&press_time);
+
+       struct appdata *ad = mp_util_get_appdata();
+       MP_CHECK(ad);
+
+       if (_mp_is_current_focus_available(ad) != 0) {
+               ERROR_TRACE("Some other application has the focus currently... Changing state in paused state...");
+               ad->paused_by_user = TRUE;
+       }
+
        char *source = (char *)data;
        if (!g_strcmp0(source, CONTROLLER_FF_SOURCE)) {
                mp_play_control_ff(true, false, false);