text-freetype2: Defer loading of plugin until source created

Helps significantly boost initialization time.
This commit is contained in:
jp9000
2016-11-14 16:45:29 -08:00
parent eaa32c20be
commit 53eb817d43

View File

@@ -50,6 +50,26 @@ static struct obs_source_info freetype2_source_info = {
.get_properties = ft2_source_properties,
};
static bool plugin_initialized = false;
static void init_plugin(void)
{
if (plugin_initialized)
return;
FT_Init_FreeType(&ft2_lib);
if (ft2_lib == NULL) {
blog(LOG_WARNING, "FT2-text: Failed to initialize FT2.");
return;
}
if (!load_cached_os_font_list())
load_os_font_list();
plugin_initialized = true;
}
bool obs_module_load()
{
char *config_dir = obs_module_config_path(NULL);
@@ -58,16 +78,6 @@ bool obs_module_load()
bfree(config_dir);
}
FT_Init_FreeType(&ft2_lib);
if (ft2_lib == NULL) {
blog(LOG_WARNING, "FT2-text: Failed to initialize FT2.");
return false;
}
if (!load_cached_os_font_list())
load_os_font_list();
obs_register_source(&freetype2_source_info);
return true;
@@ -75,8 +85,10 @@ bool obs_module_load()
void obs_module_unload(void)
{
free_os_font_list();
FT_Done_FreeType(ft2_lib);
if (plugin_initialized) {
free_os_font_list();
FT_Done_FreeType(ft2_lib);
}
}
static const char *ft2_source_get_name(void *unused)
@@ -442,6 +454,8 @@ static void *ft2_source_create(obs_data_t *settings, obs_source_t *source)
obs_data_t *font_obj = obs_data_create();
srcdata->src = source;
init_plugin();
srcdata->font_size = 32;
obs_data_set_default_string(font_obj, "face", DEFAULT_FACE);