diff options
Diffstat (limited to 'pango/pangox.c')
-rw-r--r-- | pango/pangox.c | 63 |
1 files changed, 30 insertions, 33 deletions
diff --git a/pango/pangox.c b/pango/pangox.c index c3ab3f48..36ae85fb 100644 --- a/pango/pangox.c +++ b/pango/pangox.c @@ -26,7 +26,6 @@ #include <X11/Xlib.h> #include "pango-impl-utils.h" -#include "modules.h" #undef PANGO_DISABLE_DEPRECATED @@ -159,6 +158,30 @@ free_context_info (PangoXContextInfo *info) g_slice_free (PangoXContextInfo, info); } +static PangoXContextInfo * +get_context_info (PangoContext *context) +{ + PangoXContextInfo *info; + static quark = 0; + + if (G_UNLIKELY (!quark)) + quark = g_quark_from_static_string ("pango-x-info"); + + info = g_object_get_qdata (G_OBJECT (context), quark); + + if (G_UNLIKELY (!info)) + { + info = g_slice_new (PangoXContextInfo); + info->get_gc_func = NULL; + info->free_gc_func = NULL; + g_object_set_qdata_full (G_OBJECT (context), + quark, + info, (GDestroyNotify)free_context_info); + } + + return info; +} + /** * pango_x_get_context: * @display: an X display (As returned by XOpenDisplay().) @@ -166,38 +189,15 @@ free_context_info (PangoXContextInfo *info) * Retrieves a #PangoContext appropriate for rendering with X fonts on the * given display. * + * This function is deprecated. Use pango_x_font_map_for_display() followed + * by pango_font_map_create_context() instead. + * * Return value: the new #PangoContext. **/ PangoContext * pango_x_get_context (Display *display) { - PangoContext *result; - PangoXContextInfo *info; - int i; - static gboolean registered_modules = FALSE; - - g_return_val_if_fail (display != NULL, NULL); - - if (!registered_modules) - { - registered_modules = TRUE; - - for (i = 0; _pango_included_x_modules[i].list; i++) - pango_module_register (&_pango_included_x_modules[i]); - } - - result = pango_context_new (); - - info = g_slice_new (PangoXContextInfo); - info->get_gc_func = NULL; - info->free_gc_func = NULL; - g_object_set_qdata_full (G_OBJECT (result), - g_quark_from_static_string ("pango-x-info"), - info, (GDestroyNotify)free_context_info); - - pango_context_set_font_map (result, pango_x_font_map_for_display (display)); - - return result; + return pango_font_map_create_context (pango_x_font_map_for_display (display)); } /** @@ -218,8 +218,7 @@ pango_x_context_set_funcs (PangoContext *context, g_return_if_fail (context != NULL); - info = g_object_get_qdata (G_OBJECT (context), - g_quark_from_static_string ("pango-x-info")); + info = get_context_info (context); info->get_gc_func = get_gc_func; info->free_gc_func = free_gc_func; @@ -1497,9 +1496,7 @@ pango_x_render_layout_line (Display *display, PangoRectangle logical_rect; PangoRectangle ink_rect; PangoContext *context = pango_layout_get_context (line->layout); - PangoXContextInfo *info = - g_object_get_qdata (G_OBJECT (context), - g_quark_from_static_string ("pango-x-info")); + PangoXContextInfo *info = get_context_info (context); int x_off = 0; |