static bool load_cached_font_list(struct serializer *s) { bool success = true; int count; success = read_var(s, count); if (!success) return false; da_init(font_list); da_resize(font_list, count); #define do_read(var) \ success = read_var(s, var); \ if (!success) break for (int i = 0; i < count; i++) { struct font_path_info *info = &font_list.array[i]; success = read_str(s, &info->face_and_style); if (!success) break; do_read(info->full_len); do_read(info->face_len); do_read(info->is_bitmap); do_read(info->num_sizes); info->sizes = bmalloc(sizeof(int) * info->num_sizes); success = read_data(s, info->sizes, sizeof(int) * info->num_sizes); if (!success) break; do_read(info->bold); success = read_str(s, &info->path); if (!success) break; do_read(info->italic); do_read(info->index); } #undef do_read if (!success) { free_os_font_list(); return false; } return true; }
void obs_module_unload(void) { free_os_font_list(); FT_Done_FreeType(ft2_lib); }