diff options
Diffstat (limited to 'pango/pangocairo-fcfontmap.c')
-rw-r--r-- | pango/pangocairo-fcfontmap.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/pango/pangocairo-fcfontmap.c b/pango/pangocairo-fcfontmap.c index c2b410ee..69fe4929 100644 --- a/pango/pangocairo-fcfontmap.c +++ b/pango/pangocairo-fcfontmap.c @@ -33,15 +33,29 @@ struct _PangoCairoFcFontMapClass PangoFcFontMapClass parent_class; }; +static guint +pango_cairo_fc_font_map_get_serial (PangoFontMap *fontmap) +{ + PangoCairoFcFontMap *cffontmap = (PangoCairoFcFontMap *) (fontmap); + + return cffontmap->serial; +} + static void pango_cairo_fc_font_map_set_resolution (PangoCairoFontMap *cfontmap, double dpi) { PangoCairoFcFontMap *cffontmap = (PangoCairoFcFontMap *) (cfontmap); - cffontmap->dpi = dpi; + if (dpi != cffontmap->dpi) + { + cffontmap->serial++; + if (cffontmap->serial == 0) + cffontmap->serial++; + cffontmap->dpi = dpi; - pango_fc_font_map_cache_clear ((PangoFcFontMap *) (cfontmap)); + pango_fc_font_map_cache_clear ((PangoFcFontMap *) (cfontmap)); + } } static double @@ -162,10 +176,13 @@ static void pango_cairo_fc_font_map_class_init (PangoCairoFcFontMapClass *class) { GObjectClass *gobject_class = G_OBJECT_CLASS (class); + PangoFontMapClass *fontmap_class = PANGO_FONT_MAP_CLASS (class); PangoFcFontMapClass *fcfontmap_class = PANGO_FC_FONT_MAP_CLASS (class); gobject_class->finalize = pango_cairo_fc_font_map_finalize; + fontmap_class->get_serial = pango_cairo_fc_font_map_get_serial; + fcfontmap_class->fontset_key_substitute = pango_cairo_fc_font_map_fontset_key_substitute; fcfontmap_class->get_resolution = pango_cairo_fc_font_map_get_resolution_fc; @@ -188,6 +205,7 @@ pango_cairo_fc_font_map_init (PangoCairoFcFontMap *cffontmap) if (error != FT_Err_Ok) g_critical ("pango_cairo_font_map_init: Could not initialize freetype"); + cffontmap->serial = 1; cffontmap->dpi = 96.0; } |