#ifdef HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
-#include <sys/stat.h>
#ifdef HAVE_UNISTD_H
# include <unistd.h>
# include <io.h>
#endif
+#include <glib.h>
+#include <glib/gstdio.h>
#include <glib-object.h> /* g_object_unref( ) */
#include <librsvg-2/librsvg/rsvg.h>
p_filter->p_sys = p_sys;
/* MUST call this before any RSVG funcs */
- g_type_init ();
+ rsvg_init( );
return VLC_SUCCESS;
}
free( p_sys->psz_template );
free( p_sys );
+ rsvg_term( );
}
/*****************************************************************************
if( p_svg->p_rendition == NULL ) {
svg_RenderPicture( p_filter, p_svg );
- if( ! p_svg )
+ if( ! p_svg->p_rendition )
{
msg_Err( p_filter, "Cannot render SVG" );
return VLC_EGENERIC;
RsvgHandle *p_handle;
GError *error = NULL;
+ p_svg->p_rendition = NULL;
+
p_handle = rsvg_handle_new();
+ if( !p_handle )
+ {
+ msg_Err( p_filter, "Error creating SVG reader: %s", error->message );
+ return;
+ }
+
rsvg_handle_set_size_callback( p_handle, svg_SizeCallback, p_filter, NULL );
- rsvg_handle_write( p_handle,
- ( guchar* )p_svg->psz_text, strlen( p_svg->psz_text ) + 1,
- &error );
- if( error != NULL )
+ if( ! rsvg_handle_write( p_handle,
+ ( guchar* )p_svg->psz_text, strlen( p_svg->psz_text ),
+ &error ) )
{
msg_Err( p_filter, "error while rendering SVG: %s\n", error->message );
+ g_object_unref( G_OBJECT( p_handle ) );
+ return;
+ }
+
+ if( ! rsvg_handle_close( p_handle, &error ) )
+ {
+ msg_Err( p_filter, "error while rendering SVG (close): %s\n", error->message );
+ g_object_unref( G_OBJECT( p_handle ) );
return;
}
- rsvg_handle_close( p_handle, &error );
p_svg->p_rendition = rsvg_handle_get_pixbuf( p_handle );
- rsvg_handle_free( p_handle );
+
+ g_object_unref( G_OBJECT( p_handle ) );
}