[gnome-music] Lock switching to next song until it is not ready.
- From: Vadim Rutkovsky <vrutkovsky src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-music] Lock switching to next song until it is not ready.
- Date: Tue, 11 Jun 2013 14:13:35 +0000 (UTC)
commit 982e24d8459dc93ed0cb0dcaa09b07d56e7c249f
Author: Vadim Rutkovsky <vrutkovs redhat com>
Date: Tue Jun 11 16:11:53 2013 +0200
Lock switching to next song until it is not ready.
Also don't update player.uri in loadNextTrack() and make sure we're starting playback correctly when a
new song is loaded
src/player.js | 20 +++++++++-----------
src/widgets.js | 1 -
2 files changed, 9 insertions(+), 12 deletions(-)
---
diff --git a/src/player.js b/src/player.js
index b10c6d2..4f3634a 100644
--- a/src/player.js
+++ b/src/player.js
@@ -67,7 +67,9 @@ const Player = new Lang.Class({
this.bus.connect("message::state-changed", Lang.bind(this, function(bus, message) {
if (message.parse_state_changed()[1] == Gst.State.NULL){
- this.loadNextTrack();
+ if (!this.load_next_track_lock) {
+ this.loadNextTrack();
+ }
}
}));
this.bus.connect("message::error", Lang.bind(this, function(bus, message) {
@@ -119,21 +121,16 @@ const Player = new Lang.Class({
},
loadNextTrack: function(){
- if (this.timeout) {
- GLib.source_remove(this.timeout);
- }
+ this.load_next_track_lock = true;
if (!this.playlist || !this.currentTrack || !this.playlist.iter_next(this.currentTrack))
this.currentTrack=null;
else {
- this.load( this.playlist.get_value( this.currentTrack, this.playlistField));
- this.progressScale.set_value(0);
- this.player.set_state(Gst.State.PLAYING);
- this.onProgressScaleChangeValue(this.progressScale);
- this.timeout = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 1000, Lang.bind(this,
this._updatePositionCallback));
+ this.load( this.playlist.get_value( this.currentTrack, this.playlistField), false);
+ this.play();
}
},
- load: function(media) {
+ load: function(media, update_url=true) {
this._setDuration(media.get_duration());
this.songTotalTimeLabel.set_label(this.secondsToString (media.get_duration()));
this.progressScale.sensitive = true;
@@ -180,8 +177,9 @@ const Player = new Lang.Class({
}
let url = media.get_url();
- if (url != this.player.current_uri) {
+ if ((update_url) && (url != this.player.current_uri)) {
this.player.uri = url;
+ this.load_next_track_lock = false;
}
// Store next available url
diff --git a/src/widgets.js b/src/widgets.js
index df59ec7..9039487 100644
--- a/src/widgets.js
+++ b/src/widgets.js
@@ -126,7 +126,6 @@ const AlbumWidget = new Lang.Class({
function(widget, id, path) {
let iter = this.model.get_iter(path)[1];
if (this.model.get_value(iter, 7) != errorIconName) {
- this.player.stop();
if (this.iterToClean && this.player.playlistId == this.album){
let item = this.model.get_value(this.iterToClean, 5);
this.model.set_value(this.iterToClean, 0, item.get_title());
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]