diff options
Diffstat (limited to 'src/rufl_quit.c')
-rw-r--r-- | src/rufl_quit.c | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/rufl_quit.c b/src/rufl_quit.c new file mode 100644 index 0000000..fc429c0 --- /dev/null +++ b/src/rufl_quit.c @@ -0,0 +1,49 @@ +/* + * This file is part of RUfl + * Licensed under the MIT License, + * http://www.opensource.org/licenses/mit-license + * Copyright 2006 James Bursa <james@semichrome.net> + */ + +#include <stdlib.h> +#include "oslib/font.h" +#include "rufl_internal.h" + + +/** + * Free all resources used by the library. + */ + +void rufl_quit(void) +{ + unsigned int i; + + if (!rufl_font_list) + return; + + for (i = 0; i != rufl_font_list_entries; i++) { + free(rufl_font_list[i].identifier); + free(rufl_font_list[i].charset); + } + free(rufl_font_list); + rufl_font_list = 0; + + for (i = 0; i != rufl_family_list_entries; i++) + free((void *) rufl_family_list[i]); + free(rufl_family_list); + free(rufl_family_map); + rufl_family_list = 0; + + for (i = 0; i != rufl_CACHE_SIZE; i++) { + if (rufl_cache[i].font != rufl_CACHE_NONE) { + xfont_lose_font(rufl_cache[i].f); + rufl_cache[i].font = rufl_CACHE_NONE; + } + } + + free(rufl_family_menu); + rufl_family_menu = 0; + + free(rufl_substitution_table); + rufl_substitution_table = 0; +} |