Mercurial > audlegacy
diff src/audacious/playlist.c @ 3360:8430c3911856 trunk
playlist_get_info_func works in a different thread, so trying to do UI updates from it eventually leads to UI freeze; fixed to schedule those updates in the main loop instead of doing them directly
author | Giacomo Lozito <james@develia.org> |
---|---|
date | Sat, 18 Aug 2007 00:31:51 +0200 |
parents | 01a241d35146 |
children | 880eea081363 |
line wrap: on
line diff
--- a/src/audacious/playlist.c Fri Aug 17 18:52:46 2007 +0900 +++ b/src/audacious/playlist.c Sat Aug 18 00:31:51 2007 +0200 @@ -2504,6 +2504,14 @@ return result; } +static gboolean +playlist_request_win_update(gpointer unused) +{ + Playlist *playlist = playlist_get_active(); + playlistwin_update_list(playlist); + return FALSE; /* to be called only once */ +} + static gpointer playlist_get_info_func(gpointer arg) { @@ -2600,7 +2608,9 @@ } if (update_playlistwin) { - playlistwin_update_list(playlist); + /* we are in a different thread, so we can't do UI updates directly; + instead, schedule a playlist update in the main loop --giacomo */ + g_idle_add_full(G_PRIORITY_HIGH_IDLE, playlist_request_win_update, NULL, NULL); update_playlistwin = FALSE; }