# HG changeset patch # User Jussi Judin # Date 1198570514 21600 # Node ID 5395c85a8724d8f5d60588deccc1ab48d872cc80 # Parent 349e659d34ca79f236005799408cc5446575673f Make flacng plugin to clean up after itself (Bugzilla #19) diff -r 349e659d34ca -r 5395c85a8724 src/flacng/plugin.c --- a/src/flacng/plugin.c Tue Dec 25 02:14:39 2007 -0600 +++ b/src/flacng/plugin.c Tue Dec 25 02:15:14 2007 -0600 @@ -32,6 +32,7 @@ InputPlugin flac_ip = { .description = "FLACng Audio Plugin", .init = flac_init, + .cleanup = flac_cleanup, .about = flac_aboutbox, .is_our_file = flac_is_our_file, .play_file = flac_play_file, @@ -152,6 +153,23 @@ /* --- */ +void flac_cleanup(void) +{ + _ENTER; + + FLAC__stream_decoder_delete(main_decoder); + clean_callback_info(main_info); + + FLAC__stream_decoder_delete(test_decoder); + clean_callback_info(test_info); + + plugin_initialized = FALSE; + + _LEAVE; +} + +/* --- */ + gboolean flac_is_our_fd(gchar* filename, VFSFile* fd) { _ENTER; diff -r 349e659d34ca -r 5395c85a8724 src/flacng/plugin.h --- a/src/flacng/plugin.h Tue Dec 25 02:14:39 2007 -0600 +++ b/src/flacng/plugin.h Tue Dec 25 02:15:14 2007 -0600 @@ -2,6 +2,7 @@ #define _PLUGIN_H void flac_init(void); +void flac_cleanup(void); void flac_aboutbox(void); gboolean flac_is_our_file(gchar* filename); gboolean flac_is_our_fd(gchar* filename, VFSFile* fd); diff -r 349e659d34ca -r 5395c85a8724 src/flacng/tools.c --- a/src/flacng/tools.c Tue Dec 25 02:14:39 2007 -0600 +++ b/src/flacng/tools.c Tue Dec 25 02:15:14 2007 -0600 @@ -75,6 +75,15 @@ /* --- */ +void clean_callback_info(callback_info* info) +{ + g_mutex_free(info->mutex); + free(info->output_buffer); + free(info); +} + +/* --- */ + void reset_info(callback_info* info, gboolean close_fd) { _ENTER; diff -r 349e659d34ca -r 5395c85a8724 src/flacng/tools.h --- a/src/flacng/tools.h Tue Dec 25 02:14:39 2007 -0600 +++ b/src/flacng/tools.h Tue Dec 25 02:15:14 2007 -0600 @@ -40,6 +40,7 @@ } while(0) callback_info* init_callback_info(gchar* name); +void clean_callback_info(callback_info* info); void reset_info(callback_info* info, gboolean close_fd); gchar* get_title(const gchar* filename, callback_info* info); Tuple *get_tuple(const gchar *filename, callback_info* info);