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

Reply via email to