commit bf353ac97ba6cfa43f9ef657730afd39c4b7cd36 Author: phantomjinx <p.g.richard...@phantomjinx.co.uk> Date: Sat Jan 28 00:28:33 2012 +0000
Clear up and handle threading issues correctly * main.c * It is recommended practice to have gdk_threads functions surrounding the gtk_main function * normal_sorttab_page.c * media_player.c * display_tracks.c * tidy up some erroneous debug statements * replace g_idle_add with gdk_threads_add_idle plugins/media_player/media_player.c | 4 ++-- plugins/sorttab_display/normal_sorttab_page.c | 6 +----- plugins/track_display/display_tracks.c | 4 ++-- src/main.c | 7 +++++++ 4 files changed, 12 insertions(+), 9 deletions(-) --- diff --git a/plugins/media_player/media_player.c b/plugins/media_player/media_player.c index 457defe..d9fe261 100644 --- a/plugins/media_player/media_player.c +++ b/plugins/media_player/media_player.c @@ -340,10 +340,10 @@ void seek_to_time(gint64 time_seconds) { static int pipeline_bus_watch_cb(GstBus *bus, GstMessage *msg, gpointer data) { switch (GST_MESSAGE_TYPE (msg)) { case GST_MESSAGE_EOS: - g_idle_add(thread_next_song, NULL); + gdk_threads_add_idle(thread_next_song, NULL); break; case GST_MESSAGE_ERROR: { - g_idle_add(thread_stop_song, NULL); + gdk_threads_add_idle(thread_stop_song, NULL); GError *err = NULL; gchar *dbg_info = NULL; diff --git a/plugins/sorttab_display/normal_sorttab_page.c b/plugins/sorttab_display/normal_sorttab_page.c index d4368d2..9dfb338 100644 --- a/plugins/sorttab_display/normal_sorttab_page.c +++ b/plugins/sorttab_display/normal_sorttab_page.c @@ -561,7 +561,7 @@ static void _st_selection_changed(GtkTreeSelection *selection, gpointer user_dat #if DEBUG_CB_INIT printf("st_s_c enter (inst: %p)\n", (gint)user_data); #endif - g_idle_add_full(G_PRIORITY_DEFAULT_IDLE, _st_selection_changed_cb, user_data, NULL); + gdk_threads_add_idle_full(G_PRIORITY_DEFAULT_IDLE, _st_selection_changed_cb, user_data, NULL); #if DEBUG_CB_INIT printf("st_s_c exit (inst: %p)\n", (gint)user_data); #endif @@ -596,8 +596,6 @@ static gboolean _st_is_entry_selected(NormalSortTabPage *self, TabEntry *entry) if (g_list_index(priv->selected_entries, entry) == -1) return FALSE; - g_message("Entry %s selected", entry->name); - return TRUE; } @@ -737,8 +735,6 @@ static TabEntry *_st_get_entry_by_track(NormalSortTabPage *self, Track *track) { entries = g_list_nth(priv->entries, 1); while (entries) { entry = (TabEntry *) entries->data; - g_warning("name %s", entry->name); - g_warning("length %d" , g_list_length(entry->members)); if (entry && entry->members && g_list_find(entry->members, track)) break; /* found! */ diff --git a/plugins/track_display/display_tracks.c b/plugins/track_display/display_tracks.c index ecb4e84..da57139 100644 --- a/plugins/track_display/display_tracks.c +++ b/plugins/track_display/display_tracks.c @@ -1716,7 +1716,7 @@ static void tm_sort_column_changed(GtkTreeSortable *ts, gpointer user_data) { * be resorted. At that point will we updated the * selected playlist with the new track order. */ - g_idle_add(tm_rows_reordered_idle_callback, NULL); + gdk_threads_add_idle(tm_rows_reordered_idle_callback, NULL); } /* stable sorting: index original order */ @@ -2007,7 +2007,7 @@ static gboolean tm_selection_changed_cb(gpointer data) { /* called when the track selection changes */ static void tm_selection_changed(GtkTreeSelection *selection, gpointer data) { - g_idle_add(tm_selection_changed_cb, gtk_tree_selection_get_tree_view(selection)); + gdk_threads_add_idle(tm_selection_changed_cb, gtk_tree_selection_get_tree_view(selection)); } /* Create tracks treeview */ diff --git a/src/main.c b/src/main.c index f9e2552..2197894 100644 --- a/src/main.c +++ b/src/main.c @@ -98,7 +98,14 @@ main (int argc, char *argv[]) srand(time(NULL)); gtkpod_init (argc, argv); + +#ifdef G_THREADS_ENABLED + gdk_threads_enter(); +#endif gtk_main (); +#ifdef G_THREADS_ENABLED + gdk_threads_leave(); +#endif return 0; } ------------------------------------------------------------------------------ Virtualization & Cloud Management Using Capacity Planning Cloud computing makes use of virtualization - but cloud computing also focuses on allowing computing to be delivered as a service. http://www.accelacomm.com/jaw/sfnl/114/51521223/ _______________________________________________ gtkpod-cvs2 mailing list gtkpod-cvs2@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gtkpod-cvs2