Mercurial > audlegacy
diff src/audacious/playback.c @ 4109:2d6fd3f630f0
Adds playback_free() function to fix memory leak in playback_stop(). (Bugzilla #42)
| author | Jussi Judin <jjudin+audacious@iki.fi> |
|---|---|
| date | Tue, 25 Dec 2007 00:53:33 -0600 |
| parents | 05e6d9db003c |
| children | 2d4b4f13d10d |
line wrap: on
line diff
--- a/src/audacious/playback.c Tue Dec 25 00:46:07 2007 -0600 +++ b/src/audacious/playback.c Tue Dec 25 00:53:33 2007 -0600 @@ -311,13 +311,7 @@ free_vis_data(); ip_data.paused = FALSE; - if (playback->pb_ready_mutex) - g_mutex_free(playback->pb_ready_mutex); - if (playback->pb_ready_cond) - g_cond_free(playback->pb_ready_cond); - - g_free(playback->filename); - g_slice_free(InputPlayback, playback); + playback_free(playback); set_current_input_playback(NULL); #ifdef USE_DBUS mpris_emit_status_change(mpris, MPRIS_STATUS_STOP); @@ -396,6 +390,27 @@ return playback; } +/** + * Destroys InputPlayback. + * + * Playback comes from playback_new() function but there can be also + * other sources for allocated playback data (like filename and title) + * and this tries to deallocate all that data. + */ +void playback_free(InputPlayback *playback) +{ + g_free(playback->filename); + g_free(playback->title); + + g_mutex_free(playback->pb_ready_mutex); + g_cond_free(playback->pb_ready_cond); + + g_mutex_free(playback->pb_change_mutex); + g_cond_free(playback->pb_change_cond); + + g_slice_free(InputPlayback, playback); +} + void playback_run(InputPlayback *playback) {
