@@ -20,16 +20,21 @@ import QtMultimedia 5.6
20import Dash 0.1
20import Dash 0.1
23− readonly property real progress: audio.position / audio.duration
24+ readonly property real progress: priv.audio ? priv.audio.position / priv.audio.duration : 0.0
24− readonly property bool playing: audio.playbackState === Audio.PlayingState
25+ readonly property bool playing: priv.audio ? priv.audio.playbackState === Audio.PlayingState : false
25− readonly property bool paused: audio.playbackState === Audio.PausedState
26+ readonly property bool paused: priv.audio ? priv.audio.playbackState === Audio.PausedState : false
26− readonly property bool stopped: audio.playbackState === Audio.StoppedState
27+ readonly property bool stopped: priv.audio ? priv.audio.playbackState === Audio.StoppedState : true
27− readonly property alias position: audio.position
28+ readonly property int position: priv.audio ? priv.audio.position : 0
28− readonly property url currentSource: audio.playlist.currentItemSource
29+ readonly property url currentSource: priv.audio ? priv.audio.playlist.currentItemSource : ""
30 function playSource(newSource, newPlaylist) {
31 function playSource(newSource, newPlaylist) {
33+ console.info("DashAudioPlayer: creating player");
34+ priv.audio = priv.audioComponent.createObject(root);
32− audio.playlist.clear();
37+ priv.audio.playlist.clear();
33 if (newPlaylist) {
38 if (newPlaylist) {
34 // Look for newSource in newPlaylist
39 // Look for newSource in newPlaylist
35 var sourceIndex = -1;
40 var sourceIndex = -1;
@@ -48,35 +53,53 @@ QtObject {
48 for (var i in newPlaylist) {
53 for (var i in newPlaylist) {
49 urls.push(newPlaylist[i]);
54 urls.push(newPlaylist[i]);
51− audio.playlist.addItems(urls);
56+ priv.audio.playlist.addItems(urls);
52− audio.playlist.currentIndex = sourceIndex;
57+ priv.audio.playlist.currentIndex = sourceIndex;
54− audio.playlist.addItem(newSource);
59+ priv.audio.playlist.addItem(newSource);
55− audio.playlist.currentIndex = 0;
60+ priv.audio.playlist.currentIndex = 0;
60 function stop() {
65 function stop() {
61− audio.stop();
67+ priv.audio.stop();
64 function play() {
71 function play() {
65− audio.play();
73+ priv.audio.play();
68 function pause() {
77 function pause() {
69− audio.pause();
79+ priv.audio.pause();
72− property QtObject audio: Audio {
83+ property QtObject priv: QtObject {
73− id: audio
84+ id: priv
74− objectName: "audio"
85+ property Audio audio: null
86+ property Component audioComponent: Component {
75− playlist: Playlist {
88+ playlist: Playlist {
76− objectName: "playlist"
89+ objectName: "playlist"
91+ /* Remove player in case of error so it gets recreated next time
92+ * we need it. Happens if backend media player restarted, for
93+ * instance. qtmultimedia should probably handle this
94+ * transparently (LP: #1616425).
97+ console.warn("DashAudioPlayer: error event (" +
98+ priv.audio.errorString + "), destroying");
99+ priv.audio.destroy();
79− onErrorStringChanged: console.warn("Dash Audio player error:", errorString)
82 function lengthToString(s) {
105 function lengthToString(s) {