From: Han-Wen Nienhuys Date: Tue, 16 Jan 2007 22:44:34 +0000 (+0100) Subject: plug small pango font memory leak. X-Git-Tag: release/2.11.12-1~18 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=788bff9573d132238d81962aa806497a86fe0ab7;p=lilypond.git plug small pango font memory leak. --- diff --git a/lily/all-font-metrics.cc b/lily/all-font-metrics.cc index 0d7fdd822b..f8da4b2ecd 100644 --- a/lily/all-font-metrics.cc +++ b/lily/all-font-metrics.cc @@ -65,15 +65,10 @@ All_font_metrics::All_font_metrics (All_font_metrics const &) #if HAVE_PANGO_FT2 Pango_font * -All_font_metrics::find_pango_font (PangoFontDescription *description, - Real magnification, +All_font_metrics::find_pango_font (PangoFontDescription const *description, Real output_scale ) { - pango_font_description_set_size (description, - gint (magnification * - pango_font_description_get_size (description))); - gchar *pango_fn = pango_font_description_to_filename (description); SCM key = ly_symbol2scm (pango_fn); diff --git a/lily/grob-smob.cc b/lily/grob-smob.cc index 44c16e149f..1011d47fdc 100644 --- a/lily/grob-smob.cc +++ b/lily/grob-smob.cc @@ -9,6 +9,7 @@ #include "grob.hh" #include "paper-score.hh" +#include "warn.hh" #include "ly-smobs.icc" @@ -19,6 +20,8 @@ IMPLEMENT_TYPE_P (Grob, "ly:grob?"); SCM Grob::mark_smob (SCM ses) { + ASSERT_LIVE_IS_ALLOWED(); + Grob *s = (Grob *) SCM_CELL_WORD_1 (ses); scm_gc_mark (s->immutable_property_alist_); diff --git a/lily/include/all-font-metrics.hh b/lily/include/all-font-metrics.hh index edf50f301f..073b839d9a 100644 --- a/lily/include/all-font-metrics.hh +++ b/lily/include/all-font-metrics.hh @@ -43,11 +43,8 @@ public: All_font_metrics (string search_path); ~All_font_metrics (); -#if HAVE_PANGO_FT2 - Pango_font *find_pango_font (PangoFontDescription *description, - Real magnification, + Pango_font *find_pango_font (PangoFontDescription const *description, Real scale); -#endif Font_metric *find_font (string name); Open_type_font *find_otf (string name); diff --git a/lily/include/pango-font.hh b/lily/include/pango-font.hh index 013f350463..c0d6ff3368 100644 --- a/lily/include/pango-font.hh +++ b/lily/include/pango-font.hh @@ -31,7 +31,7 @@ class Pango_font : public Font_metric public: SCM physical_font_tab () const; Pango_font (PangoFT2FontMap *, - PangoFontDescription *, + PangoFontDescription const *, Real); ~Pango_font (); diff --git a/lily/pango-font.cc b/lily/pango-font.cc index adca7c5b70..f91eafb984 100644 --- a/lily/pango-font.cc +++ b/lily/pango-font.cc @@ -28,15 +28,15 @@ #include "stencil.hh" Pango_font::Pango_font (PangoFT2FontMap *fontmap, - PangoFontDescription *description, + PangoFontDescription const *description, Real output_scale) { (void) fontmap; + physical_font_tab_ = scm_c_make_hash_table (11); PangoDirection pango_dir = PANGO_DIRECTION_LTR; context_ = pango_ft2_get_context (PANGO_RESOLUTION, PANGO_RESOLUTION); - // context_ = pango_ft2_font_map_create_context (fontmap); pango_description_ = pango_font_description_copy (description); attribute_list_ = pango_attr_list_new (); diff --git a/lily/paper-def.cc b/lily/paper-def.cc index 3a1cafbb19..e9a56ae0e1 100644 --- a/lily/paper-def.cc +++ b/lily/paper-def.cc @@ -80,10 +80,17 @@ find_pango_font (Output_def *layout, SCM descr, Real factor) PangoFontDescription *description = pango_font_description_from_string (scm_i_string_chars (descr)); + + pango_font_description_set_size (description, + gint (factor * + pango_font_description_get_size (description))); + + Font_metric *fm = all_fonts_global->find_pango_font (description, - factor, output_scale (layout)); + pango_font_description_free (description); + sizes = scm_acons (size_key, fm->self_scm (), sizes); scm_hash_set_x (table, descr, sizes);