|
|
@@ -50,24 +50,34 @@ static struct obs_source_info freetype2_source_info = {
|
|
|
.get_properties = ft2_source_properties,
|
|
|
};
|
|
|
|
|
|
-bool obs_module_load()
|
|
|
+static bool plugin_initialized = false;
|
|
|
+
|
|
|
+static void init_plugin(void)
|
|
|
{
|
|
|
- char *config_dir = obs_module_config_path(NULL);
|
|
|
- if (config_dir) {
|
|
|
- os_mkdirs(config_dir);
|
|
|
- bfree(config_dir);
|
|
|
- }
|
|
|
+ if (plugin_initialized)
|
|
|
+ return;
|
|
|
|
|
|
FT_Init_FreeType(&ft2_lib);
|
|
|
|
|
|
if (ft2_lib == NULL) {
|
|
|
blog(LOG_WARNING, "FT2-text: Failed to initialize FT2.");
|
|
|
- return false;
|
|
|
+ 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);
|
|
|
+ if (config_dir) {
|
|
|
+ os_mkdirs(config_dir);
|
|
|
+ bfree(config_dir);
|
|
|
+ }
|
|
|
+
|
|
|
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);
|