mediaplayer: fix race condition with local media and bluetooth a2dp 03/14403/1 eel 5.1.0 eel/5.1.0 eel_5.1.0
authorMatt Ranostay <matt.ranostay@konsulko.com>
Thu, 14 Jun 2018 06:12:06 +0000 (23:12 -0700)
committerMatt Ranostay <matt.ranostay@konsulko.com>
Thu, 14 Jun 2018 07:11:04 +0000 (07:11 +0000)
If media from storage is played and a bluetooth stream starts the play/pause
button will enter an always playing state from the UI when the bluetooth
connection ends.

This patchset fixes this within the MediaPlayer.qml to show the expected
UI results.

Bug-AGL: SPEC-1496
Change-Id: I6ee0dfa2a46d7cf294b2dbf23d2aa54857fb8ffc
Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
app/MediaPlayer.qml

index dc5cdce..25dea2c 100644 (file)
@@ -34,7 +34,7 @@ ApplicationWindow {
         property int position: 0
 
         property string cover_art: ""
-        property string status: ""
+        property string status: "stopped"
 
         function time2str(value) {
             return Qt.formatTime(new Date(value), 'mm:ss')
@@ -105,8 +105,10 @@ ApplicationWindow {
             if (data.Connected == "False")
                 return
 
-            if (!bluetooth.av_connected && data.AVPConnected == "True")
+            if (!bluetooth.av_connected && data.AVPConnected == "True") {
                 mediaplayer.pause()
+                player.status = "stopped"
+            }
 
             bluetooth.connected = data.Connected == "True"
             bluetooth.av_connected = data.AVPConnected == "True"
@@ -306,22 +308,14 @@ ApplicationWindow {
                         }
                         ImageButton {
                             id: play
-                            offImage: './images/AGL_MediaPlayer_Player_Play.svg'
-                            onClicked: {
-                                if (bluetooth.av_connected) {
-                                    bluetooth.set_avrcp_controls("Play")
-                                } else {
-                                    mediaplayer.play()
-                                }
-                            }
                             states: [
                                 State {
-                                    when: player.status == "playing"
+                                    when: !bluetooth.av_connected && player.status == "playing"
                                     PropertyChanges {
                                         target: play
                                         offImage: './images/AGL_MediaPlayer_Player_Pause.svg'
                                         onClicked: {
-                                            player.status = ""
+                                            player.status = "stopped"
                                             mediaplayer.pause()
                                         }
                                     }
@@ -333,8 +327,23 @@ ApplicationWindow {
                                         offImage: './images/AGL_MediaPlayer_Player_Pause.svg'
                                         onClicked: bluetooth.set_avrcp_controls("Pause")
                                     }
+                                },
+                                State {
+                                    when: !bluetooth.av_connected && player.status != "playing"
+                                    PropertyChanges {
+                                        target: play
+                                        offImage: './images/AGL_MediaPlayer_Player_Play.svg'
+                                        onClicked: mediaplayer.play()
+                                    }
+                                },
+                                State {
+                                    when: bluetooth.av_connected && bluetooth.state != "playing"
+                                    PropertyChanges {
+                                        target: play
+                                        offImage: './images/AGL_MediaPlayer_Player_Play.svg'
+                                        onClicked: bluetooth.set_avrcp_controls("Play")
+                                    }
                                 }
-
                             ]
                         }
                         ImageButton {