diff options
-rw-r--r-- | ChangeLog | 16 | ||||
-rw-r--r-- | ChangeLog.pre-1-0 | 16 | ||||
-rw-r--r-- | ChangeLog.pre-1-10 | 16 | ||||
-rw-r--r-- | ChangeLog.pre-1-2 | 16 | ||||
-rw-r--r-- | ChangeLog.pre-1-4 | 16 | ||||
-rw-r--r-- | ChangeLog.pre-1-6 | 16 | ||||
-rw-r--r-- | ChangeLog.pre-1-8 | 16 | ||||
-rw-r--r-- | pango/Makefile.am | 4 | ||||
-rw-r--r-- | pango/pango-context.c | 1 | ||||
-rw-r--r-- | pango/pangox-fontmap.c | 21 | ||||
-rw-r--r-- | pango/pangox.c | 9 | ||||
-rw-r--r-- | pango/pangox.h | 17 |
12 files changed, 152 insertions, 12 deletions
@@ -1,3 +1,19 @@ +Sat May 27 22:05:53 2000 Owen Taylor <otaylor@redhat.com> + + * pango/Makefile.am (pangoinclude_HEADERS): Install + pango-fontmap.h. + + * pango/pangox-fontcache.c pango/pangox.h: Add a simple + cache from XLFD => font struct. + + * pango/pango-fontmap.c: Use this when loading and unloading + fonts. + +Sat May 27 21:57:03 2000 Owen Taylor <otaylor@redhat.com> + + * pango/pango-context.c (pango_context_add_font_map): + Ref font map. + Sat May 27 21:06:13 2000 Owen Taylor <otaylor@redhat.com> * modules/thai/thai.c modules/basic/basic: diff --git a/ChangeLog.pre-1-0 b/ChangeLog.pre-1-0 index 8d920c1e..2a3eb02d 100644 --- a/ChangeLog.pre-1-0 +++ b/ChangeLog.pre-1-0 @@ -1,3 +1,19 @@ +Sat May 27 22:05:53 2000 Owen Taylor <otaylor@redhat.com> + + * pango/Makefile.am (pangoinclude_HEADERS): Install + pango-fontmap.h. + + * pango/pangox-fontcache.c pango/pangox.h: Add a simple + cache from XLFD => font struct. + + * pango/pango-fontmap.c: Use this when loading and unloading + fonts. + +Sat May 27 21:57:03 2000 Owen Taylor <otaylor@redhat.com> + + * pango/pango-context.c (pango_context_add_font_map): + Ref font map. + Sat May 27 21:06:13 2000 Owen Taylor <otaylor@redhat.com> * modules/thai/thai.c modules/basic/basic: diff --git a/ChangeLog.pre-1-10 b/ChangeLog.pre-1-10 index 8d920c1e..2a3eb02d 100644 --- a/ChangeLog.pre-1-10 +++ b/ChangeLog.pre-1-10 @@ -1,3 +1,19 @@ +Sat May 27 22:05:53 2000 Owen Taylor <otaylor@redhat.com> + + * pango/Makefile.am (pangoinclude_HEADERS): Install + pango-fontmap.h. + + * pango/pangox-fontcache.c pango/pangox.h: Add a simple + cache from XLFD => font struct. + + * pango/pango-fontmap.c: Use this when loading and unloading + fonts. + +Sat May 27 21:57:03 2000 Owen Taylor <otaylor@redhat.com> + + * pango/pango-context.c (pango_context_add_font_map): + Ref font map. + Sat May 27 21:06:13 2000 Owen Taylor <otaylor@redhat.com> * modules/thai/thai.c modules/basic/basic: diff --git a/ChangeLog.pre-1-2 b/ChangeLog.pre-1-2 index 8d920c1e..2a3eb02d 100644 --- a/ChangeLog.pre-1-2 +++ b/ChangeLog.pre-1-2 @@ -1,3 +1,19 @@ +Sat May 27 22:05:53 2000 Owen Taylor <otaylor@redhat.com> + + * pango/Makefile.am (pangoinclude_HEADERS): Install + pango-fontmap.h. + + * pango/pangox-fontcache.c pango/pangox.h: Add a simple + cache from XLFD => font struct. + + * pango/pango-fontmap.c: Use this when loading and unloading + fonts. + +Sat May 27 21:57:03 2000 Owen Taylor <otaylor@redhat.com> + + * pango/pango-context.c (pango_context_add_font_map): + Ref font map. + Sat May 27 21:06:13 2000 Owen Taylor <otaylor@redhat.com> * modules/thai/thai.c modules/basic/basic: diff --git a/ChangeLog.pre-1-4 b/ChangeLog.pre-1-4 index 8d920c1e..2a3eb02d 100644 --- a/ChangeLog.pre-1-4 +++ b/ChangeLog.pre-1-4 @@ -1,3 +1,19 @@ +Sat May 27 22:05:53 2000 Owen Taylor <otaylor@redhat.com> + + * pango/Makefile.am (pangoinclude_HEADERS): Install + pango-fontmap.h. + + * pango/pangox-fontcache.c pango/pangox.h: Add a simple + cache from XLFD => font struct. + + * pango/pango-fontmap.c: Use this when loading and unloading + fonts. + +Sat May 27 21:57:03 2000 Owen Taylor <otaylor@redhat.com> + + * pango/pango-context.c (pango_context_add_font_map): + Ref font map. + Sat May 27 21:06:13 2000 Owen Taylor <otaylor@redhat.com> * modules/thai/thai.c modules/basic/basic: diff --git a/ChangeLog.pre-1-6 b/ChangeLog.pre-1-6 index 8d920c1e..2a3eb02d 100644 --- a/ChangeLog.pre-1-6 +++ b/ChangeLog.pre-1-6 @@ -1,3 +1,19 @@ +Sat May 27 22:05:53 2000 Owen Taylor <otaylor@redhat.com> + + * pango/Makefile.am (pangoinclude_HEADERS): Install + pango-fontmap.h. + + * pango/pangox-fontcache.c pango/pangox.h: Add a simple + cache from XLFD => font struct. + + * pango/pango-fontmap.c: Use this when loading and unloading + fonts. + +Sat May 27 21:57:03 2000 Owen Taylor <otaylor@redhat.com> + + * pango/pango-context.c (pango_context_add_font_map): + Ref font map. + Sat May 27 21:06:13 2000 Owen Taylor <otaylor@redhat.com> * modules/thai/thai.c modules/basic/basic: diff --git a/ChangeLog.pre-1-8 b/ChangeLog.pre-1-8 index 8d920c1e..2a3eb02d 100644 --- a/ChangeLog.pre-1-8 +++ b/ChangeLog.pre-1-8 @@ -1,3 +1,19 @@ +Sat May 27 22:05:53 2000 Owen Taylor <otaylor@redhat.com> + + * pango/Makefile.am (pangoinclude_HEADERS): Install + pango-fontmap.h. + + * pango/pangox-fontcache.c pango/pangox.h: Add a simple + cache from XLFD => font struct. + + * pango/pango-fontmap.c: Use this when loading and unloading + fonts. + +Sat May 27 21:57:03 2000 Owen Taylor <otaylor@redhat.com> + + * pango/pango-context.c (pango_context_add_font_map): + Ref font map. + Sat May 27 21:06:13 2000 Owen Taylor <otaylor@redhat.com> * modules/thai/thai.c modules/basic/basic: diff --git a/pango/Makefile.am b/pango/Makefile.am index 74518397..b865ae58 100644 --- a/pango/Makefile.am +++ b/pango/Makefile.am @@ -26,7 +26,8 @@ libpango_la_SOURCES = \ libpangox_la_SOURCES = \ pangox.c \ - pangox-fontmap.c + pangox-fontcache.c \ + pangox-fontmap.c # We use the -release flag for now until the API settles # down at which point we'll either use the GTK+ versioning @@ -46,6 +47,7 @@ pangoinclude_HEADERS = \ pango-coverage.h \ pango-engine.h \ pango-font.h \ + pango-fontmap.h \ pango-glyph.h \ pango-item.h \ pango-layout.h \ diff --git a/pango/pango-context.c b/pango/pango-context.c index e34262b1..04325402 100644 --- a/pango/pango-context.c +++ b/pango/pango-context.c @@ -131,6 +131,7 @@ pango_context_add_font_map (PangoContext *context, g_return_if_fail (context != NULL); g_return_if_fail (font_map != NULL); + g_object_ref (G_OBJECT (font_map)); context->font_maps = g_slist_append (context->font_maps, font_map); } diff --git a/pango/pangox-fontmap.c b/pango/pangox-fontmap.c index 4b4f0463..125aada5 100644 --- a/pango/pangox-fontmap.c +++ b/pango/pangox-fontmap.c @@ -71,6 +71,8 @@ struct _PangoXFontMap Display *display; + PangoXFontCache *font_cache; + GHashTable *families; GHashTable *size_infos; @@ -235,7 +237,6 @@ pango_x_font_map_for_display (Display *display) if (xfontmap->display == display) { - g_object_ref (G_OBJECT (xfontmap)); return PANGO_FONT_MAP (xfontmap); } } @@ -243,6 +244,7 @@ pango_x_font_map_for_display (Display *display) xfontmap = (PangoXFontMap *)g_type_create_instance (PANGO_TYPE_X_FONT_MAP); xfontmap->display = display; + xfontmap->font_cache = pango_x_font_cache_new (display); /* Get a maximum of MAX_FONTS fontnames from the X server. Use "-*" as the pattern rather than "-*-*-*-*-*-*-*-*-*-*-*-*-*-*" since @@ -263,6 +265,7 @@ pango_x_font_map_for_display (Display *display) pango_x_font_map_read_aliases (xfontmap); + g_object_ref (G_OBJECT (xfontmap)); fontmaps = g_list_prepend (fontmaps, xfontmap); /* This is a little screwed up, since different screens on the same display @@ -271,14 +274,17 @@ pango_x_font_map_for_display (Display *display) screen = DefaultScreen (xfontmap->display); xfontmap->resolution = (PANGO_SCALE * 72.27 / 25.4) * ((double) DisplayWidthMM (xfontmap->display, screen) / DisplayWidth (xfontmap->display, screen)); - - g_object_ref (G_OBJECT (xfontmap)); return PANGO_FONT_MAP (xfontmap); } static void pango_x_font_map_finalize (GObject *object) { + PangoXFontMap *xfontmap = PANGO_X_FONT_MAP (object); + + pango_x_font_cache_free (xfontmap->font_cache); + /* FIXME: Lots more here */ + fontmaps = g_list_remove (fontmaps, object); } @@ -1385,3 +1391,12 @@ pango_x_font_entry_remove (PangoXFontEntry *entry, { entry->cached_fonts = g_slist_remove (entry->cached_fonts, font); } + +PangoXFontCache * +pango_x_font_map_get_font_cache (PangoFontMap *font_map) +{ + g_return_val_if_fail (font_map != NULL, NULL); + g_return_val_if_fail (PANGO_IS_X_FONT_MAP (font_map), NULL); + + return PANGO_X_FONT_MAP (font_map)->font_cache; +} diff --git a/pango/pangox.c b/pango/pangox.c index c08d26aa..26b5a31b 100644 --- a/pango/pangox.c +++ b/pango/pangox.c @@ -125,8 +125,13 @@ static void pango_x_make_font_struct (PangoFont *font, PangoXSubfontInfo *info) { PangoXFont *xfont = (PangoXFont *)font; + PangoFontMap *fontmap; + PangoXFontCache *cache; + + fontmap = pango_x_font_map_for_display (xfont->display); + cache = pango_x_font_map_get_font_cache (fontmap); - info->font_struct = XLoadQueryFont (xfont->display, info->xlfd); + info->font_struct = pango_x_font_cache_load (cache, info->xlfd); if (!info->font_struct) g_warning ("Cannot load font for XLFD '%s\n", info->xlfd); @@ -1290,5 +1295,3 @@ pango_x_get_item_properties (PangoItem *item, } } - - diff --git a/pango/pangox.h b/pango/pangox.h index 2c465b61..d71bb2dd 100644 --- a/pango/pangox.h +++ b/pango/pangox.h @@ -85,7 +85,18 @@ PangoGlyph pango_x_get_unknown_glyph (PangoFont *font); /* API for libraries that want to use PangoX mixed with classic X fonts. */ -PangoFontMap *pango_x_font_map_for_display (Display *display); +typedef struct _PangoXFontCache PangoXFontCache; + +PangoXFontCache *pango_x_font_cache_new (Display *display); +void pango_x_font_cache_free (PangoXFontCache *cache); + +XFontStruct * pango_x_font_cache_load (PangoXFontCache *cache, + char *xlfd); +void pango_x_font_cache_unload (PangoXFontCache *cache, + XFontStruct *fs); + +PangoFontMap * pango_x_font_map_for_display (Display *display); +PangoXFontCache *pango_x_font_map_get_font_cache (PangoFontMap *font_map); #ifdef __cplusplus } @@ -93,7 +104,3 @@ PangoFontMap *pango_x_font_map_for_display (Display *display); #endif /* __PANGOX_H__ */ - - - - |