set_category( CAT_VIDEO )
set_subcategory( SUBCAT_VIDEO_SUBPIC )
- add_file( "freetype-font", DEFAULT_FONT, NULL, FONT_TEXT, FONT_LONGTEXT,
+ add_font( "freetype-font", DEFAULT_FONT, NULL, FONT_TEXT, FONT_LONGTEXT,
false )
add_integer( "freetype-fontsize", 0, NULL, FONTSIZE_TEXT,
int i_default_font_size;
int i_display_height;
#ifdef HAVE_FONTCONFIG
+ char* psz_fontfamily;
bool b_fontconfig_ok;
FcConfig *p_fontconfig;
+ xml_t *p_xml;
#endif
input_attachment_t **pp_font_attachments;
};
#define UCHAR uint32_t
-#define TR_DEFAULT_FONT FC_DEFAULT_FONT
+#define TR_DEFAULT_FONT p_sys->psz_fontfamily
#define TR_FONT_STYLE_PTR ft_style_t *
#include "text_renderer.h"
p_filter->p_sys = p_sys = malloc( sizeof( filter_sys_t ) );
if( !p_sys )
return VLC_ENOMEM;
+ #ifdef HAVE_FONTCONFIG
+ p_sys->psz_fontfamily = NULL;
+ p_sys->p_xml = NULL;
+#endif
p_sys->p_face = 0;
p_sys->p_library = 0;
p_sys->i_font_size = 0;
if( !psz_fontfile )
goto error;
msg_Dbg( p_filter, "Using %s as font from file %s", psz_fontfamily, psz_fontfile );
+ p_sys->psz_fontfamily = strdup( psz_fontfamily );
#else
+ p_sys->psz_fontfamily = strdup( DEFAULT_FONT )
psz_fontfile = psz_fontfamily;
#endif
#ifdef HAVE_FONTCONFIG
FontBuilderDetach( p_filter, p_sys->p_fontbuilder );
+ xml_Delete( p_sys->p_xml );
+ free( p_sys->psz_fontfamily );
#endif
/* FcFini asserts calling the subfunction FcCacheFini()
if( p_fontbuilder )
{
var_AddCallback( p_fontbuilder, "build-done", FontBuilderDone, p_filter );
+ msg_Warn( p_filter, "Building the Fontconfig cache" );
FontBuilderGetFcConfig( p_filter, p_fontbuilder );
}
vlc_mutex_unlock( &fb_lock );
{
int rv = VLC_SUCCESS;
stream_t *p_sub = NULL;
- xml_t *p_xml = NULL;
xml_reader_t *p_xml_reader = NULL;
if( !p_region_in || !p_region_in->psz_html )
true );
if( p_sub )
{
- p_xml = xml_Create( p_filter );
- if( p_xml )
+ if( !p_filter->p_sys->p_xml ) p_filter->p_sys->p_xml = xml_Create( p_filter );
+ if( p_filter->p_sys->p_xml )
{
bool b_karaoke = false;
- p_xml_reader = xml_ReaderCreate( p_xml, p_sub );
+ p_xml_reader = xml_ReaderCreate( p_filter->p_sys->p_xml, p_sub );
if( p_xml_reader )
{
/* Look for Root Node */
{
/* Only text and karaoke tags are supported */
msg_Dbg( p_filter, "Unsupported top-level tag '%s' ignored.", psz_node );
- xml_ReaderDelete( p_xml, p_xml_reader );
+ xml_ReaderDelete( p_filter->p_sys->p_xml, p_xml_reader );
p_xml_reader = NULL;
rv = VLC_EGENERIC;
}
}
FreeLines( p_lines );
- xml_ReaderDelete( p_xml, p_xml_reader );
+ xml_ReaderDelete( p_filter->p_sys->p_xml, p_xml_reader );
}
- xml_Delete( p_xml );
}
stream_Delete( p_sub );
}