Revision: 2265
http://gtkpod.svn.sourceforge.net/gtkpod/?rev=2265&view=rev
Author: jcsjcs
Date: 2009-02-28 13:19:48 +0000 (Sat, 28 Feb 2009)
Log Message:
-----------
* src/display_coverart.c
src/display_tracks.c
src/display_sorttabs.c:
Use g_list_prepend instead of g_list_append. Thanks to
Javier Kohen for the patches.
Modified Paths:
--------------
gtkpod/trunk/ChangeLog
gtkpod/trunk/src/display_coverart.c
gtkpod/trunk/src/display_sorttabs.c
gtkpod/trunk/src/display_tracks.c
Modified: gtkpod/trunk/ChangeLog
===================================================================
--- gtkpod/trunk/ChangeLog 2009-02-28 10:41:03 UTC (rev 2264)
+++ gtkpod/trunk/ChangeLog 2009-02-28 13:19:48 UTC (rev 2265)
@@ -1,3 +1,11 @@
+2009-02-28 Jorg Schuler <jcsjcs at users.sourceforge.net>
+
+ * src/display_coverart.c
+ src/display_tracks.c
+ src/display_sorttabs.c:
+ Use g_list_prepend instead of g_list_append. Thanks to
+ Javier Kohen for the patches.
+
2009-02-25 Jorg Schuler <jcsjcs at users.sourceforge.net>
* src/display_tracks: streamline display functions. Thanks to
Modified: gtkpod/trunk/src/display_coverart.c
===================================================================
--- gtkpod/trunk/src/display_coverart.c 2009-02-28 10:41:03 UTC (rev 2264)
+++ gtkpod/trunk/src/display_coverart.c 2009-02-28 13:19:48 UTC (rev 2265)
@@ -630,7 +630,7 @@
*/
void coverart_display_update (gboolean clear_track_list)
{
- gint i;
+ gint i, sort;
GList *tracks;
Track *track;
Album_Item *album;
@@ -687,12 +687,12 @@
album->albumname = g_strdup (track->album);
album->artist = g_strdup (track->artist);
album->tracks = NULL;
- album->tracks = g_list_append (album->tracks, track);
+ album->tracks = g_list_prepend (album->tracks, track);
/* Insert the new Album Item into the hash */
g_hash_table_insert (album_hash, album_key, album);
/* Add the key to the list for sorting and other functions */
- album_key_list = g_list_append (album_key_list, album_key);
+ album_key_list = g_list_prepend (album_key_list, album_key);
}
else
{
@@ -700,7 +700,7 @@
* append the track to the end of the
* track list */
g_free (album_key);
- album->tracks = g_list_append (album->tracks, track);
+ album->tracks = g_list_prepend (album->tracks, track);
}
tracks = tracks->next;
@@ -713,7 +713,16 @@
album_key_list = g_list_remove_all (album_key_list, NULL);
/* Sort the tracks to the order set in the preference */
- coverart_sort_images (prefs_get_int("st_sort"));
+ sort = prefs_get_int("st_sort");
+ if (sort != SORT_NONE)
+ {
+ coverart_sort_images (sort);
+ }
+ else
+ {
+ /* restore original order) */
+ album_key_list = g_list_reverse (album_key_list);
+ }
/* Add 4 null tracks to the end of the track list for padding */
for (i = 0; i < IMG_MAIN; ++i)
Modified: gtkpod/trunk/src/display_sorttabs.c
===================================================================
--- gtkpod/trunk/src/display_sorttabs.c 2009-02-28 10:41:03 UTC (rev 2264)
+++ gtkpod/trunk/src/display_sorttabs.c 2009-02-28 13:19:48 UTC (rev 2265)
@@ -1691,8 +1691,6 @@
@display: TRUE: add to track model (i.e. display it) */
void st_add_track (Track *track, gboolean final, gboolean display, guint32
inst)
{
- static gint count = 0;
-
#if DEBUG_ADD_TRACK
printf ("st_add_track: inst: %d, final: %d, display: %d, track: %p\n",
inst, final, display, track);
@@ -1701,7 +1699,7 @@
if (inst == prefs_get_int("sort_tab_num"))
{ /* just add to track model */
if ((track != NULL) && display) tm_add_track_to_track_model (track,
NULL);
- if (final || (++count % 20 == 0))
+ if (final)
gtkpod_tracks_statusbar_update();
}
else if (inst < prefs_get_int("sort_tab_num"))
Modified: gtkpod/trunk/src/display_tracks.c
===================================================================
--- gtkpod/trunk/src/display_tracks.c 2009-02-28 10:41:03 UTC (rev 2264)
+++ gtkpod/trunk/src/display_tracks.c 2009-02-28 13:19:48 UTC (rev 2265)
@@ -1600,6 +1600,8 @@
return(result);
}
+/* Prepends to list, so the list will be reversed. Make sure to
+ reverse the result if you care about the order of the tracks. */
static void
on_tracks_list_foreach ( GtkTreeModel *tm, GtkTreePath *tp,
GtkTreeIter *i, gpointer data)
@@ -1609,7 +1611,7 @@
gtk_tree_model_get(tm, i, READOUT_COL, &tr, -1);
g_return_if_fail (tr);
- l = g_list_append(l, tr);
+ l = g_list_prepend(l, tr);
*((GList**)data) = l;
}
@@ -1626,6 +1628,7 @@
{
gtk_tree_selection_selected_foreach(ts, on_tracks_list_foreach,
&result);
+ result = g_list_reverse(result);
}
return(result);
}
@@ -1655,6 +1658,7 @@
gtk_tree_model_foreach(model, on_all_tracks_list_foreach,
&result);
+ result = g_list_reverse(result);
return result;
}
@@ -1694,9 +1698,6 @@
gint cmp = 0;
ExtraTrackData *etr1, *etr2;
-
- g_return_val_if_fail (track1 && track2, 0);
-
/* string_compare_func is set to either compare_string_fuzzy or
compare_string in tm_sort_column_changed() which is called
once before the comparing begins. */
@@ -1868,16 +1869,6 @@
case TM_NUM_COLUMNS:
break;
}
-
- /* implement stable sorting: if two items are the same, revert to
- the last relative positition */
- if (cmp == 0)
- {
- etr1 = track1->userdata;
- etr2 = track2->userdata;
- g_return_val_if_fail (etr1 && etr2, 0);
- cmp = etr1->sortindex - etr2->sortindex;
- }
return cmp;
}
@@ -1965,13 +1956,24 @@
GtkSortType order;
gint result;
- gtk_tree_model_get (model, a, READOUT_COL, &track1, -1);
- gtk_tree_model_get (model, b, READOUT_COL, &track2, -1);
if(gtk_tree_sortable_get_sort_column_id (GTK_TREE_SORTABLE (model),
&column, &order) == FALSE)
return 0;
+ gtk_tree_model_get (model, a, READOUT_COL, &track1, -1);
+ gtk_tree_model_get (model, b, READOUT_COL, &track2, -1);
+ g_return_val_if_fail (track1 && track2, 0);
+
result = tm_data_compare (track1, track2, column);
+ /* implement stable sorting: if two items are the same, revert to
+ the last relative positition */
+ if (result == 0)
+ {
+ ExtraTrackData *etr1 = track1->userdata;
+ ExtraTrackData *etr2 = track2->userdata;
+ g_return_val_if_fail (etr1 && etr2, 0);
+ result = etr1->sortindex - etr2->sortindex;
+ }
return result;
}
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
gtkpod-cvs2 mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gtkpod-cvs2