static RhythmDBEntry * rb_linear_play_order_loop_get_previous (RBPlayOrder *porder) { RhythmDBQueryModel *model; RhythmDBEntry *entry; RhythmDBEntry *prev = NULL; g_return_val_if_fail (porder != NULL, NULL); g_return_val_if_fail (RB_IS_LINEAR_PLAY_ORDER_LOOP (porder), NULL); model = rb_play_order_get_query_model (porder); if (model == NULL) return NULL; g_object_get (porder, "playing-entry", &entry, NULL); if (entry != NULL) { prev = rhythmdb_query_model_get_previous_from_entry (model, entry); rhythmdb_entry_unref (entry); } if (prev == NULL) { /* loop to last entry */ GtkTreeIter iter; gint num_entries = gtk_tree_model_iter_n_children (GTK_TREE_MODEL (model), NULL); if (!gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (model), &iter, NULL, num_entries-1)) return NULL; prev = rhythmdb_query_model_iter_to_entry (model, &iter); } return prev; }
static RhythmDBEntry * rb_linear_play_order_get_previous (RBPlayOrder *porder) { RhythmDBQueryModel *model; RhythmDBEntry *entry, *prev; g_return_val_if_fail (porder != NULL, NULL); g_return_val_if_fail (RB_IS_LINEAR_PLAY_ORDER (porder), NULL); model = rb_play_order_get_query_model (porder); if (model == NULL) return NULL; entry = rb_play_order_get_playing_entry (porder); if (entry == NULL) return NULL; prev = rhythmdb_query_model_get_previous_from_entry (model, entry); rhythmdb_entry_unref (entry); return prev; }