From 93f39a984398e9f4d187b66eb272ec0bf48845e0 Mon Sep 17 00:00:00 2001 From: Leandro Pereira Date: Sun, 3 Jan 2010 17:19:07 -0200 Subject: Add a module deinitialization function, so modules can deallocate memory on unload. --- hardinfo2/computer.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'hardinfo2/computer.c') diff --git a/hardinfo2/computer.c b/hardinfo2/computer.c index 98936598..bbab7060 100644 --- a/hardinfo2/computer.c +++ b/hardinfo2/computer.c @@ -581,6 +581,50 @@ gchar **hi_module_get_dependencies(void) return deps; } +void hi_module_deinit(void) +{ + DEBUG("cleaning up module"); + + if (computer->os) { + g_free(computer->os->kernel); + g_free(computer->os->libc); + g_free(computer->os->distrocode); + g_free(computer->os->distro); + g_free(computer->os->hostname); + g_free(computer->os->language); + g_free(computer->os->homedir); + g_free(computer->os->kernel_version); + g_free(computer->os->languages); + g_free(computer->os->desktop); + g_free(computer->os->username); + g_free(computer->os->boots); + g_free(computer->os); + } + + if (computer->display) { + g_free(computer->display->ogl_vendor); + g_free(computer->display->ogl_renderer); + g_free(computer->display->ogl_version); + g_free(computer->display->display_name); + g_free(computer->display->vendor); + g_free(computer->display->version); + g_free(computer->display->extensions); + g_free(computer->display->monitors); + g_free(computer->display); + } + + if (computer->alsa) { + g_slist_free(computer->alsa->cards); + g_free(computer->alsa); + } + + g_free(computer->date_time); + g_free(computer); + + h_hash_table_remove_all(moreinfo); + g_hash_table_destroy(moreinfo); +} + void hi_module_init(void) { computer = g_new0(Computer, 1); @@ -600,3 +644,4 @@ ModuleAbout *hi_module_get_about(void) return ma; } + -- cgit v1.2.3