summaryrefslogtreecommitdiff
path: root/src/xine-engine
diff options
context:
space:
mode:
authorDarren Salt <linux@youmustbejoking.demon.co.uk>2009-01-11 19:51:03 +0000
committerDarren Salt <linux@youmustbejoking.demon.co.uk>2009-01-11 19:51:03 +0000
commit470fbadf6630c13d0c9a7adc0e0bb7aa4e4b0bed (patch)
tree0a4b99ab95203898d4714e273dcb0dc7bb5cd482 /src/xine-engine
parent9ee07c228e2887be26017a5b19df3dadfc01a9bb (diff)
parent1b86d0b5362a7b3f317b85696f9fc35d8bc0e7c4 (diff)
downloadxine-lib-470fbadf6630c13d0c9a7adc0e0bb7aa4e4b0bed.tar.gz
xine-lib-470fbadf6630c13d0c9a7adc0e0bb7aa4e4b0bed.tar.bz2
Merge from 1.1.
--HG-- rename : src/libmpeg2/motion_comp.c => src/video_dec/libmpeg2/motion_comp.c
Diffstat (limited to 'src/xine-engine')
-rw-r--r--src/xine-engine/osd.c35
1 files changed, 22 insertions, 13 deletions
diff --git a/src/xine-engine/osd.c b/src/xine-engine/osd.c
index 1d3754d42..aaeb2538f 100644
--- a/src/xine-engine/osd.c
+++ b/src/xine-engine/osd.c
@@ -215,6 +215,20 @@ struct osd_ft2context_s {
FT_Face face;
int size;
};
+
+static void osd_free_ft2 (osd_object_t *osd)
+{
+ if( osd->ft2 ) {
+ if ( osd->ft2->face )
+ FT_Done_Face (osd->ft2->face);
+ if ( osd->ft2->library )
+ FT_Done_FreeType(osd->ft2->library);
+ free( osd->ft2 );
+ osd->ft2 = NULL;
+ }
+}
+#else
+static inline void osd_free_ft2 (osd_object_t *osd __attr_unused) {}
#endif
/*
@@ -1032,6 +1046,11 @@ static int osd_set_font_freetype2( osd_object_t *osd, const char *fontname, int
return 0;
}
}
+
+ if (osd->ft2->face) {
+ FT_Done_Face (osd->ft2->face);
+ osd->ft2->face = NULL;
+ }
do { /* while 0 */
#ifdef HAVE_FONTCONFIG
@@ -1041,16 +1060,14 @@ static int osd_set_font_freetype2( osd_object_t *osd, const char *fontname, int
if ( osd_lookup_xdg(osd, fontname) )
break;
- free(osd->ft2);
- osd->ft2 = NULL;
+ osd_free_ft2 (osd);
return 0;
} while(0);
if (FT_Set_Pixel_Sizes(osd->ft2->face, 0, size)) {
xprintf(osd->renderer->stream->xine, XINE_VERBOSITY_LOG,
_("osd: error setting font size (no scalable font?)\n"));
- free(osd->ft2);
- osd->ft2 = NULL;
+ osd_free_ft2 (osd);
return 0;
}
@@ -1626,15 +1643,7 @@ static void osd_free_object (osd_object_t *osd_to_close) {
if ( osd == osd_to_close ) {
free( osd->area );
-#ifdef HAVE_FT2
- if( osd->ft2 ) {
- if ( osd->ft2->library )
- FT_Done_FreeType(osd->ft2->library);
-
- free( osd->ft2 );
- }
-#endif
-
+ osd_free_ft2 (osd);
osd_free_encoding(osd);
if( last )