textoverlay: add a hack to init the pango engine

Layout a single char to pre-create all resources.
This commit is contained in:
Stefan Kost 2011-03-04 14:52:28 +02:00
parent fae2e1bc2d
commit fee3266056

View file

@ -519,6 +519,7 @@ gst_text_overlay_class_init (GstTextOverlayClass * klass)
g_param_spec_boolean ("vertical-render", "vertical render", g_param_spec_boolean ("vertical-render", "vertical render",
"Vertical Render.", DEFAULT_PROP_VERTICAL_RENDER, "Vertical Render.", DEFAULT_PROP_VERTICAL_RENDER,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
} }
static void static void
@ -642,6 +643,23 @@ gst_text_overlay_init (GstTextOverlay * overlay, GstTextOverlayClass * klass)
overlay->text_linked = FALSE; overlay->text_linked = FALSE;
overlay->cond = g_cond_new (); overlay->cond = g_cond_new ();
gst_segment_init (&overlay->segment, GST_FORMAT_TIME); gst_segment_init (&overlay->segment, GST_FORMAT_TIME);
/* FIXME: this is a hack to initialize the pango engine
* see http://bugzilla.gnome.org/show_bug.cgi?id=412678
* and http://bugzilla.gnome.org/show_bug.cgi?id=642960
*/
{
PangoRectangle ink_rect, logical_rect;
static gsize init_cookie = 0;
if (g_once_init_enter (&init_cookie)) {
pango_layout_set_width (overlay->layout, -1);
pango_layout_set_markup (overlay->layout, " ", 1);
pango_layout_get_pixel_extents (overlay->layout, &ink_rect,
&logical_rect);
g_once_init_leave (&init_cookie, (gsize) 1);
}
}
} }
static void static void