rhythmbox r6141 - in trunk: . shell
- From: jmatthew svn gnome org
- To: svn-commits-list gnome org
- Subject: rhythmbox r6141 - in trunk: . shell
- Date: Thu, 29 Jan 2009 11:24:02 +0000 (UTC)
Author: jmatthew
Date: Thu Jan 29 11:24:01 2009
New Revision: 6141
URL: http://svn.gnome.org/viewvc/rhythmbox?rev=6141&view=rev
Log:
2009-01-29 Jonathan Matthew <jonathan d14n org>
* shell/rb-shell-player.c: (rb_shell_player_handle_eos_unlocked):
Compare the entry against our own idea of what's playing, not what the
play order thinks.
(rb_shell_player_do_next_internal):
Don't advance past the end of the regular play order if allow_stop
is FALSE; always advance the queue play order, though. Fixes #569386.
Modified:
trunk/ChangeLog
trunk/shell/rb-shell-player.c
Modified: trunk/shell/rb-shell-player.c
==============================================================================
--- trunk/shell/rb-shell-player.c (original)
+++ trunk/shell/rb-shell-player.c Thu Jan 29 11:24:01 2009
@@ -776,7 +776,6 @@
static void
rb_shell_player_handle_eos_unlocked (RBShellPlayer *player, RhythmDBEntry *entry, gboolean allow_stop)
{
- RhythmDBEntry *playing_entry;
RBSource *source;
gboolean update_stats;
gboolean dragging;
@@ -788,9 +787,8 @@
return;
}
- playing_entry = rb_shell_player_get_playing_entry (player);
- if (entry != NULL ) {
- if (playing_entry != entry) {
+ if (entry != NULL) {
+ if (player->priv->playing_entry != entry) {
rb_debug ("EOS'd entry is not the current playing entry; ignoring");
return;
}
@@ -887,10 +885,6 @@
player->priv->db,
entry);
}
-
- if (entry != NULL) {
- rhythmdb_entry_unref (entry);
- }
}
static void
@@ -2119,8 +2113,8 @@
g_object_get (player->priv->current_playing_source, "play-order", &porder, NULL);
if (porder != NULL) {
entry = rb_play_order_get_next (porder);
- rb_play_order_go_next (porder);
if (entry != NULL) {
+ rb_play_order_go_next (porder);
new_source = player->priv->current_playing_source;
}
g_object_unref (porder);
@@ -2146,7 +2140,11 @@
/* if that didn't help, advance the play order */
if (entry == NULL) {
entry = rb_play_order_get_next (porder);
- rb_play_order_go_next (porder);
+ if (entry != NULL) {
+ rb_debug ("got new entry %s from play order",
+ rhythmdb_entry_get_string (entry, RHYTHMDB_PROP_LOCATION));
+ rb_play_order_go_next (porder);
+ }
}
if (entry != NULL)
@@ -2163,13 +2161,17 @@
RhythmDBEntry *queue_entry;
queue_entry = rb_play_order_get_next (player->priv->queue_play_order);
+ rb_play_order_go_next (player->priv->queue_play_order);
if (queue_entry != NULL) {
+ rb_debug ("got new entry %s from queue play order",
+ rhythmdb_entry_get_string (entry, RHYTHMDB_PROP_LOCATION));
if (entry != NULL) {
rhythmdb_entry_unref (entry);
}
entry = queue_entry;
new_source = RB_SOURCE (player->priv->queue_source);
- rb_play_order_go_next (player->priv->queue_play_order);
+ } else {
+ rb_debug ("didn't get a new entry from queue play order");
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]