diff --git a/plugins/text-freetype2/text-freetype2.c b/plugins/text-freetype2/text-freetype2.c index 176c07158d8f68881b634c65ceb35bda498ba3df..39ab5682f29be595099e6e717728faa3a1829172 100644 --- a/plugins/text-freetype2/text-freetype2.c +++ b/plugins/text-freetype2/text-freetype2.c @@ -360,28 +360,37 @@ static void ft2_source_update(void *data, obs_data_t *settings) if (srcdata->font_face) cache_standard_glyphs(srcdata); -skip_font_load:; + +skip_font_load: if (from_file) { const char *tmp = obs_data_get_string(settings, "text_file"); - if (!tmp || !*tmp) { - blog(LOG_WARNING, - "FT2-text: Failed to open %s for reading", tmp); - goto error; - } - if (srcdata->text_file != NULL && - strcmp(srcdata->text_file, tmp) == 0 && - !vbuf_needs_update) - goto error; + if (!tmp || !*tmp || !os_file_exists(tmp)) { + const char *emptystr = " "; - bfree(srcdata->text_file); + bfree(srcdata->text); + srcdata->text = NULL; - srcdata->text_file = bstrdup(tmp); - if (chat_log_mode) - read_from_end(srcdata, tmp); - else - load_text_from_file(srcdata, tmp); - srcdata->last_checked = os_gettime_ns(); + os_utf8_to_wcs_ptr(emptystr, strlen(emptystr), + &srcdata->text); + blog(LOG_WARNING, "FT2-text: Failed to open %s for " + "reading", tmp); + } + else { + if (srcdata->text_file != NULL && + strcmp(srcdata->text_file, tmp) == 0 && + !vbuf_needs_update) + goto error; + + bfree(srcdata->text_file); + + srcdata->text_file = bstrdup(tmp); + if (chat_log_mode) + read_from_end(srcdata, tmp); + else + load_text_from_file(srcdata, tmp); + srcdata->last_checked = os_gettime_ns(); + } } else { const char *tmp = obs_data_get_string(settings, "text");