free(im->rendered_image);
}
+ mutex_lock(im->fontmap_mutex);
if (im->layout) {
g_object_unref(im->layout);
}
+ mutex_unlock(im->fontmap_mutex);
if (im->ylegend)
free(im->ylegend);
unsigned int i;
char *deffont = getenv("RRD_DEFAULT_FONT");
static PangoFontMap *fontmap = NULL;
+ static mutex_t fontmap_mutex = MUTEX_INITIALIZER;
PangoContext *context;
/* zero the whole structure first */
im->surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 10, 10);
im->cr = cairo_create(im->surface);
+ im->fontmap_mutex = &fontmap_mutex;
for (i = 0; i < DIM(text_prop); i++) {
im->text_prop[i].size = -1;
rrd_set_font_desc(im,i, deffont ? deffont : text_prop[i].font,text_prop[i].size);
}
+ mutex_lock(im->fontmap_mutex);
+
if (fontmap == NULL){
- fontmap = pango_cairo_font_map_get_default();
+ fontmap = pango_cairo_font_map_new();
}
#ifdef HAVE_PANGO_FONT_MAP_CREATE_CONTEXT
(im->font_options, CAIRO_HINT_METRICS_ON);
cairo_font_options_set_antialias(im->font_options, CAIRO_ANTIALIAS_GRAY);
-
+ mutex_unlock(im->fontmap_mutex);
for (i = 0; i < DIM(graph_col); i++)
im->graph_col[i] = graph_col[i];
}
} /* while (1) */
+ mutex_lock(im->fontmap_mutex);
pango_cairo_context_set_font_options(pango_layout_get_context(im->layout), im->font_options);
pango_layout_context_changed(im->layout);
+ mutex_unlock(im->fontmap_mutex);
if (im->primary_axis_format != NULL && im->primary_axis_format[0] != '\0') {