commit acb4ca013d66069b53e4bac86c52e2d5480417e7
Author: phantomjinx <[email protected]>
Date: Wed May 9 22:29:04 2012 +0100
Improve performance of playlist selection
* For playlists / ipods with many tracks, playlist selection can be very
slow. Turns out this is due to excessive track display signals being
fired while tracks are added.
* Use gtk_list_store_insert_with_values since this triggers fewer signals
than the gtk_list_store_append/gtk_list_store_set couplet
* Turn off sorting then turn back on afterwards since sorting makes adding
very slow!
plugins/track_display/display_tracks.c | 15 ++++++++++++++-
1 files changed, 14 insertions(+), 1 deletions(-)
---
diff --git a/plugins/track_display/display_tracks.c
b/plugins/track_display/display_tracks.c
index da57139..f98f723 100644
--- a/plugins/track_display/display_tracks.c
+++ b/plugins/track_display/display_tracks.c
@@ -2376,15 +2376,28 @@ gboolean tm_add_filelist(gchar *data, GtkTreePath
*path, GtkTreeViewDropPosition
void track_display_set_tracks_cb(GtkPodApp *app, gpointer tks, gpointer data) {
GList *tracks = tks;
+ GtkTreeModel *model = NULL;
+
tm_remove_all_tracks();
+ // Unsort the track view to improve performance
+ model = gtk_tree_view_get_model(track_treeview);
+ gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE (model),
GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID, GTK_SORT_ASCENDING);
+
while (tracks != NULL) { /* add all tracks to model */
Track *track = tracks->data;
- tm_add_track_to_track_model(track, NULL);
+ gtk_list_store_insert_with_values (get_model_as_store(model), NULL,
-1, READOUT_COL, track, -1);
tracks = tracks->next;
}
+ if (model) {
+ int column = prefs_get_int("tm_sortcol");
+ int order = prefs_get_int("tm_sort");
+ if (order != SORT_NONE) {
+ gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE (model),
column, order);
+ }
+ }
}
void track_display_set_playlist_cb(GtkPodApp *app, gpointer pl, gpointer data)
{
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
gtkpod-cvs2 mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gtkpod-cvs2