From: Daniel Drake No need to check for titlebar updates 100 times every second. I also confirmed that the mainwin_set_info_text() and playlistwin_update_list() are already called in sensible codepaths, so those calls can go as well. Index: audacious-devel/src/audacious/ui_main.c =================================================================== --- audacious-devel.orig/src/audacious/ui_main.c +++ audacious-devel/src/audacious/ui_main.c @@ -163,10 +163,7 @@ static GtkWidget *mainwin_sstop, *mainwi static gint mainwin_timeout_id; -G_LOCK_DEFINE_STATIC(mainwin_title); - static gboolean mainwin_force_redraw = FALSE; -static gchar *mainwin_title_text = NULL; static gboolean mainwin_info_text_locked = FALSE; static int ab_position_a = -1; @@ -651,10 +648,8 @@ make_mainwin_title(const gchar * title) void mainwin_set_song_title(const gchar * title) { - G_LOCK(mainwin_title); - g_free(mainwin_title_text); - mainwin_title_text = make_mainwin_title(title); - G_UNLOCK(mainwin_title); + gchar *mainwin_title_text = make_mainwin_title(title); + gtk_window_set_title(GTK_WINDOW(mainwin), mainwin_title_text); } static void @@ -906,10 +901,7 @@ mainwin_clear_song_info(void) return; /* clear title */ - G_LOCK(mainwin_title); - g_free(mainwin_title_text); - mainwin_title_text = NULL; - G_UNLOCK(mainwin_title); + mainwin_set_song_title(NULL); /* clear sampling parameters */ playback_set_sample_params(0, 0, 0); @@ -3023,17 +3015,6 @@ mainwin_idle_func(gpointer data) draw_equalizer_window(FALSE); draw_playlist_window(FALSE); - if (mainwin_title_text) { - G_LOCK(mainwin_title); - gtk_window_set_title(GTK_WINDOW(mainwin), mainwin_title_text); - g_free(mainwin_title_text); - mainwin_title_text = NULL; - G_UNLOCK(mainwin_title); - - mainwin_set_info_text(); - playlistwin_update_list(playlist_get_active()); - } - /* tristate buttons seek */ if ( seek_state != MAINWIN_SEEK_NIL ) {