commit bf353ac97ba6cfa43f9ef657730afd39c4b7cd36
Author: phantomjinx <p.g...@ph...>
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;
}
|