From cc8ac2a10360027b334db8e4b237207540004ae7 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 31 Mar 2021 21:05:42 +0000 Subject: Revert "Merge branch 'fix-deadlocks' into 'master'" This reverts merge request !309 --- meson.build | 2 +- pango/pango-attributes.h | 36 +----------- pango/pango-layout.c | 12 ---- pango/pango-renderer.c | 128 ------------------------------------------- pango/pango-renderer.h | 34 +----------- pango/pango-version-macros.h | 24 -------- pango/pangocairo-render.c | 84 ---------------------------- pango/pangofc-fontmap.c | 3 +- 8 files changed, 6 insertions(+), 317 deletions(-) diff --git a/meson.build b/meson.build index 2b66c6ce..b52a55fc 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,5 @@ project('pango', 'c', 'cpp', - version: '1.49.0', + version: '1.48.4', license: 'LGPLv2.1+', default_options: [ 'buildtype=debugoptimized', diff --git a/pango/pango-attributes.h b/pango/pango-attributes.h index fdc1e86a..e20b6413 100644 --- a/pango/pango-attributes.h +++ b/pango/pango-attributes.h @@ -228,22 +228,6 @@ typedef enum * @PANGO_UNDERLINE_ERROR_LINE: Like @PANGO_UNDERLINE_ERROR, but * drawn continuously across multiple runs. This type * of underlining is available since Pango 1.46. - * @PANGO_UNDERLINE_SINGLE_DOTTED: a single, dotted underline. Since Pango 1.50. - * @PANGO_UNDERLINE_DOUBLE_DOTTED: a double, dotted underline. Since Pango 1.50. - * @PANGO_UNDERLINE_LOW_DOTTED: a single, dotted underline in the same - * position as for @PANGO_UNDERLINE_LOW. Since Pango 1.50. - * @PANGO_UNDERLINE_SINGLE_LINE_DOTTED: a single, dotted underline, drawn - * continuously across multiple runs. Since Pango 1.50. - * @PANGO_UNDERLINE_DOUBLE_LINE_DOTTED: a double, dotted underline, drawn - * continuously across multiple runs. Since Pango 1.50. - * @PANGO_UNDERLINE_SINGLE_DASHED: a single, dashed underline. Since Pango 1.50. - * @PANGO_UNDERLINE_DOUBLE_DASHED: a double, dashed underline. Since Pango 1.50. - * @PANGO_UNDERLINE_LOW_DASHED: a single, dashed underline in the same - * position as for @PANGO_UNDERLINE_LOW. Since Pango 1.50. - * @PANGO_UNDERLINE_SINGLE_LINE_DASHED: a single, dashed underline, drawn - * continuously across multiple runs. Since Pango 1.50. - * @PANGO_UNDERLINE_DOUBLE_LINE_DASHED: a double, dashed underline, drawn - * continuously across multiple runs. Since Pango 1.50. * * The `PangoUnderline` enumeration is used to specify whether text * should be underlined, and if so, the type of underlining. @@ -256,19 +240,7 @@ typedef enum { PANGO_UNDERLINE_ERROR, PANGO_UNDERLINE_SINGLE_LINE, PANGO_UNDERLINE_DOUBLE_LINE, - PANGO_UNDERLINE_ERROR_LINE, - - PANGO_UNDERLINE_SINGLE_DOTTED, - PANGO_UNDERLINE_DOUBLE_DOTTED, - PANGO_UNDERLINE_LOW_DOTTED, - PANGO_UNDERLINE_SINGLE_LINE_DOTTED, - PANGO_UNDERLINE_DOUBLE_LINE_DOTTED, - - PANGO_UNDERLINE_SINGLE_DASHED, - PANGO_UNDERLINE_DOUBLE_DASHED, - PANGO_UNDERLINE_LOW_DASHED, - PANGO_UNDERLINE_SINGLE_LINE_DASHED, - PANGO_UNDERLINE_DOUBLE_LINE_DASHED, + PANGO_UNDERLINE_ERROR_LINE } PangoUnderline; @@ -277,8 +249,6 @@ typedef enum { * @PANGO_OVERLINE_NONE: no overline should be drawn * @PANGO_OVERLINE_SINGLE: Draw a single line above the ink * extents of the text being underlined. - * @PANGO_OVERLINE_SINGLE_DOTTED: A single, dotted line. Since Pango 1.50 - * @PANGO_OVERLINE_SINGLE_DASHED: A single, dashed line. Since Pango 1.50 * * The `PangoOverline` enumeration is used to specify whether text * should be overlined, and if so, the type of line. @@ -287,9 +257,7 @@ typedef enum { */ typedef enum { PANGO_OVERLINE_NONE, - PANGO_OVERLINE_SINGLE, - PANGO_OVERLINE_SINGLE_DOTTED, - PANGO_OVERLINE_SINGLE_DASHED + PANGO_OVERLINE_SINGLE } PangoOverline; /** diff --git a/pango/pango-layout.c b/pango/pango-layout.c index 22924f88..1f86150e 100644 --- a/pango/pango-layout.c +++ b/pango/pango-layout.c @@ -5953,23 +5953,13 @@ pango_layout_get_item_properties (PangoItem *item, break; case PANGO_UNDERLINE_SINGLE: case PANGO_UNDERLINE_SINGLE_LINE: - case PANGO_UNDERLINE_SINGLE_DOTTED: - case PANGO_UNDERLINE_SINGLE_LINE_DOTTED: - case PANGO_UNDERLINE_SINGLE_DASHED: - case PANGO_UNDERLINE_SINGLE_LINE_DASHED: properties->uline_single = TRUE; break; case PANGO_UNDERLINE_DOUBLE: case PANGO_UNDERLINE_DOUBLE_LINE: - case PANGO_UNDERLINE_DOUBLE_DOTTED: - case PANGO_UNDERLINE_DOUBLE_LINE_DOTTED: - case PANGO_UNDERLINE_DOUBLE_DASHED: - case PANGO_UNDERLINE_DOUBLE_LINE_DASHED: properties->uline_double = TRUE; break; case PANGO_UNDERLINE_LOW: - case PANGO_UNDERLINE_LOW_DOTTED: - case PANGO_UNDERLINE_LOW_DASHED: properties->uline_low = TRUE; break; case PANGO_UNDERLINE_ERROR: @@ -5986,8 +5976,6 @@ pango_layout_get_item_properties (PangoItem *item, switch (((PangoAttrInt *)attr)->value) { case PANGO_OVERLINE_SINGLE: - case PANGO_OVERLINE_SINGLE_DASHED: - case PANGO_OVERLINE_SINGLE_DOTTED: properties->oline_single = TRUE; break; default: diff --git a/pango/pango-renderer.c b/pango/pango-renderer.c index 52d44061..2d676782 100644 --- a/pango/pango-renderer.c +++ b/pango/pango-renderer.c @@ -87,13 +87,6 @@ static void pango_renderer_default_draw_error_underline (PangoRenderer *rende int y, int width, int height); -static void pango_renderer_default_draw_line (PangoRenderer *renderer, - PangoRenderPart part, - PangoRenderLineStyle style, - int x, - int y, - int width, - int height); static void pango_renderer_default_prepare_run (PangoRenderer *renderer, PangoLayoutRun *run); @@ -130,7 +123,6 @@ pango_renderer_class_init (PangoRendererClass *klass) klass->draw_glyph_item = pango_renderer_default_draw_glyph_item; klass->draw_rectangle = pango_renderer_default_draw_rectangle; klass->draw_error_underline = pango_renderer_default_draw_error_underline; - klass->draw_line = pango_renderer_default_draw_line; klass->prepare_run = pango_renderer_default_prepare_run; gobject_class->finalize = pango_renderer_finalize; @@ -247,48 +239,6 @@ draw_underline (PangoRenderer *renderer, rect->width, rect->height); break; - case PANGO_UNDERLINE_DOUBLE_DASHED: - case PANGO_UNDERLINE_DOUBLE_LINE_DASHED: - pango_renderer_draw_line (renderer, - PANGO_RENDER_PART_UNDERLINE, - PANGO_RENDER_LINE_DASHED, - rect->x, - rect->y + 2 * rect->height, - rect->width, - rect->height); - G_GNUC_FALLTHROUGH; - case PANGO_UNDERLINE_SINGLE_DASHED: - case PANGO_UNDERLINE_LOW_DASHED: - case PANGO_UNDERLINE_SINGLE_LINE_DASHED: - pango_renderer_draw_line (renderer, - PANGO_RENDER_PART_UNDERLINE, - PANGO_RENDER_LINE_DASHED, - rect->x, - rect->y, - rect->width, - rect->height); - break; - case PANGO_UNDERLINE_DOUBLE_DOTTED: - case PANGO_UNDERLINE_DOUBLE_LINE_DOTTED: - pango_renderer_draw_line (renderer, - PANGO_RENDER_PART_UNDERLINE, - PANGO_RENDER_LINE_DOTTED, - rect->x, - rect->y + 2 * rect->height, - rect->width, - rect->height); - G_GNUC_FALLTHROUGH; - case PANGO_UNDERLINE_SINGLE_DOTTED: - case PANGO_UNDERLINE_LOW_DOTTED: - case PANGO_UNDERLINE_SINGLE_LINE_DOTTED: - pango_renderer_draw_line (renderer, - PANGO_RENDER_PART_UNDERLINE, - PANGO_RENDER_LINE_DOTTED, - rect->x, - rect->y, - rect->width, - rect->height); - break; case PANGO_UNDERLINE_ERROR: case PANGO_UNDERLINE_ERROR_LINE: pango_renderer_draw_error_underline (renderer, @@ -321,24 +271,6 @@ draw_overline (PangoRenderer *renderer, rect->width, rect->height); break; - case PANGO_OVERLINE_SINGLE_DASHED: - pango_renderer_draw_line (renderer, - PANGO_RENDER_PART_OVERLINE, - PANGO_RENDER_LINE_DASHED, - rect->x, - rect->y, - rect->width, - rect->height); - break; - case PANGO_OVERLINE_SINGLE_DOTTED: - pango_renderer_draw_line (renderer, - PANGO_RENDER_PART_OVERLINE, - PANGO_RENDER_LINE_DOTTED, - rect->x, - rect->y, - rect->width, - rect->height); - break; } } @@ -432,25 +364,15 @@ add_underline (PangoRenderer *renderer, g_assert_not_reached (); break; case PANGO_UNDERLINE_SINGLE: - case PANGO_UNDERLINE_SINGLE_DASHED: - case PANGO_UNDERLINE_SINGLE_DOTTED: case PANGO_UNDERLINE_DOUBLE: - case PANGO_UNDERLINE_DOUBLE_DASHED: - case PANGO_UNDERLINE_DOUBLE_DOTTED: case PANGO_UNDERLINE_ERROR: new_rect.y -= underline_position; break; case PANGO_UNDERLINE_LOW: - case PANGO_UNDERLINE_LOW_DASHED: - case PANGO_UNDERLINE_LOW_DOTTED: new_rect.y += ink_rect->y + ink_rect->height + underline_thickness; break; case PANGO_UNDERLINE_SINGLE_LINE: - case PANGO_UNDERLINE_SINGLE_LINE_DASHED: - case PANGO_UNDERLINE_SINGLE_LINE_DOTTED: case PANGO_UNDERLINE_DOUBLE_LINE: - case PANGO_UNDERLINE_DOUBLE_LINE_DASHED: - case PANGO_UNDERLINE_DOUBLE_LINE_DOTTED: case PANGO_UNDERLINE_ERROR_LINE: new_rect.y -= underline_position; if (state->underline == renderer->underline) @@ -503,8 +425,6 @@ add_overline (PangoRenderer *renderer, g_assert_not_reached (); break; case PANGO_OVERLINE_SINGLE: - case PANGO_OVERLINE_SINGLE_DASHED: - case PANGO_OVERLINE_SINGLE_DOTTED: new_rect.y -= ascent; if (state->overline == renderer->priv->overline) { @@ -969,42 +889,6 @@ pango_renderer_draw_rectangle (PangoRenderer *renderer, PANGO_RENDERER_GET_CLASS (renderer)->draw_rectangle (renderer, part, x, y, width, height); } -/** - * pango_renderer_draw_line: - * @renderer: a `PangoRenderer` - * @part: type of object this rectangle is part of - * @style: the style of line to draw - * @x: X position of upper left corner, in user space coordinates - * in Pango units - * @y: Y position of upper left corner, in user space coordinates - * in Pango units - * @width: width of line in Pango units - * @height: height of line in Pango units - * - * Draws a line with the given style into an axis-aligned rectangle - * in user space coordinates with the specified `PangoRenderer`. - * - * This should be called while @renderer is already active. - * Use [method@Pango.Renderer.activate] to activate a renderer. - * - * Since: 1.50 - */ -void -pango_renderer_draw_line (PangoRenderer *renderer, - PangoRenderPart part, - PangoRenderLineStyle style, - int x, - int y, - int width, - int height) -{ - g_return_if_fail (PANGO_IS_RENDERER_FAST (renderer)); - g_return_if_fail (IS_VALID_PART (part)); - g_return_if_fail (renderer->active_count > 0); - - PANGO_RENDERER_GET_CLASS (renderer)->draw_line (renderer, part, style, x, y, width, height); -} - static int compare_points (const void *a, const void *b) @@ -1112,18 +996,6 @@ pango_renderer_default_draw_rectangle (PangoRenderer *renderer, draw_rectangle (renderer, renderer->matrix, part, x, y, width, height); } -static void -pango_renderer_default_draw_line (PangoRenderer *renderer, - PangoRenderPart part, - PangoRenderLineStyle style, - int x, - int y, - int width, - int height) -{ - draw_rectangle (renderer, renderer->matrix, part, x, y, width, height); -} - /** * pango_renderer_draw_error_underline: * @renderer: a `PangoRenderer` diff --git a/pango/pango-renderer.h b/pango/pango-renderer.h index 1b1e744e..98c4cfb0 100644 --- a/pango/pango-renderer.h +++ b/pango/pango-renderer.h @@ -59,21 +59,6 @@ typedef enum PANGO_RENDER_PART_OVERLINE } PangoRenderPart; -/** - * PangoRenderLineStyle: - * @PANGO_RENDER_LINE_SOLID: A solid line - * @PANGO_RENDER_LINE_DASHED: A dashed line - * @PANGO_RENDER_LINE_DOTTED: A dotted line - * - * The line style passed to the draw_line() vfunc. - */ -typedef enum -{ - PANGO_RENDER_LINE_SOLID, - PANGO_RENDER_LINE_DASHED, - PANGO_RENDER_LINE_DOTTED -} PangoRenderLineStyle; - /** * PangoRenderer: * @matrix: (nullable): the current transformation matrix for @@ -123,7 +108,6 @@ struct _PangoRenderer * @end: Do renderer-specific cleanup after drawing * @prepare_run: updates the renderer for a new run * @draw_glyph_item: draws a #PangoGlyphItem - * @draw_line: draws a line. Available since Pango 1.50 * * Class structure for #PangoRenderer. * @@ -202,17 +186,10 @@ struct _PangoRendererClass int x, int y); - void (*draw_line) (PangoRenderer *renderer, - PangoRenderPart part, - PangoRenderLineStyle style, - int x, - int y, - int width, - int height); - /*< private >*/ /* Padding for future expansion */ + void (*_pango_reserved2) (void); void (*_pango_reserved3) (void); void (*_pango_reserved4) (void); }; @@ -271,15 +248,6 @@ void pango_renderer_draw_glyph (PangoRenderer *renderer, double x, double y); -PANGO_AVAILABLE_IN_1_50 -void pango_renderer_draw_line (PangoRenderer *renderer, - PangoRenderPart part, - PangoRenderLineStyle style, - int x, - int y, - int width, - int height); - PANGO_AVAILABLE_IN_1_8 void pango_renderer_activate (PangoRenderer *renderer); PANGO_AVAILABLE_IN_1_8 diff --git a/pango/pango-version-macros.h b/pango/pango-version-macros.h index 84130ca3..4008579c 100644 --- a/pango/pango-version-macros.h +++ b/pango/pango-version-macros.h @@ -272,16 +272,6 @@ */ #define PANGO_VERSION_1_48 (G_ENCODE_VERSION (1, 48)) -/** - * PANGO_VERSION_1_50: - * - * A macro that evaluates to the 1.50 version of Pango, in a format - * that can be used by the C pre-processor. - * - * Since: 1.50 - */ -#define PANGO_VERSION_1_50 (G_ENCODE_VERSION (1, 50)) - /* evaluates to the current stable version; for development cycles, * this means the next stable target */ @@ -715,18 +705,4 @@ # define PANGO_AVAILABLE_IN_1_48 _PANGO_EXTERN #endif -#if PANGO_VERSION_MIN_REQUIRED >= PANGO_VERSION_1_50 -# define PANGO_DEPRECATED_IN_1_50 PANGO_DEPRECATED -# define PANGO_DEPRECATED_IN_1_50_FOR(f) PANGO_DEPRECATED_FOR(f) -#else -# define PANGO_DEPRECATED_IN_1_50 _PANGO_EXTERN -# define PANGO_DEPRECATED_IN_1_50_FOR(f) _PANGO_EXTERN -#endif - -#if PANGO_VERSION_MAX_ALLOWED < PANGO_VERSION_1_50 -# define PANGO_AVAILABLE_IN_1_50 PANGO_UNAVAILABLE(1, 50) -#else -# define PANGO_AVAILABLE_IN_1_50 _PANGO_EXTERN -#endif - #endif /* __PANGO_VERSION_H__ */ diff --git a/pango/pangocairo-render.c b/pango/pangocairo-render.c index c5ca74e3..9e3cfab8 100644 --- a/pango/pangocairo-render.c +++ b/pango/pangocairo-render.c @@ -808,89 +808,6 @@ pango_cairo_renderer_draw_shape (PangoRenderer *renderer, cairo_restore (cr); } -static void -pango_cairo_renderer_draw_line (PangoRenderer *renderer, - PangoRenderPart part, - PangoRenderLineStyle style, - int x, - int y, - int width, - int height) -{ - PangoCairoRenderer *crenderer = (PangoCairoRenderer *) (renderer); - - if (!crenderer->do_path) - { - cairo_save (crenderer->cr); - - set_color (crenderer, part); - } - - switch (style) - { - case PANGO_RENDER_LINE_SOLID: - cairo_rectangle (crenderer->cr, - crenderer->x_offset + (double)x / PANGO_SCALE, - crenderer->y_offset + (double)y / PANGO_SCALE, - (double)width / PANGO_SCALE, - (double)height / PANGO_SCALE); - break; - - case PANGO_RENDER_LINE_DOTTED: - { - double radius; - double xc, yc; - double xend; - - radius = MIN (width, height) / (2.0 * PANGO_SCALE); - xc = crenderer->x_offset + (double)x / PANGO_SCALE + radius; - yc = crenderer->y_offset + (double)y / PANGO_SCALE + radius; - xend = xc + (double)width / PANGO_SCALE; - - while (xc + radius <= xend) - { - cairo_new_sub_path (crenderer->cr); - cairo_arc (crenderer->cr, xc, yc, radius, 0, 2 * M_PI); - cairo_close_path (crenderer->cr); - xc += 3 * radius; - } - } - break; - - case PANGO_RENDER_LINE_DASHED: - { - double xr, yr; - double w, h; - double d; - double xend; - - xr = crenderer->x_offset + (double)x / PANGO_SCALE; - yr = crenderer->y_offset + (double)y / PANGO_SCALE; - xend = xr + (double)width / PANGO_SCALE; - - h = MIN (width, height) / (double) PANGO_SCALE; - w = 5 * h; - d = 9 * h; - - while (xr <= xend) - { - cairo_rectangle (crenderer->cr, xr, yr, MIN (w, xend - xr), h); - xr += d; - } - } - break; - - default: - g_assert_not_reached (); - } - - if (!crenderer->do_path) - { - cairo_fill (crenderer->cr); - cairo_restore (crenderer->cr); - } -} - static void pango_cairo_renderer_init (PangoCairoRenderer *renderer G_GNUC_UNUSED) { @@ -907,7 +824,6 @@ pango_cairo_renderer_class_init (PangoCairoRendererClass *klass) renderer_class->draw_trapezoid = pango_cairo_renderer_draw_trapezoid; renderer_class->draw_error_underline = pango_cairo_renderer_draw_error_underline; renderer_class->draw_shape = pango_cairo_renderer_draw_shape; - renderer_class->draw_line = pango_cairo_renderer_draw_line; } static PangoCairoRenderer *cached_renderer = NULL; /* MT-safe */ diff --git a/pango/pangofc-fontmap.c b/pango/pangofc-fontmap.c index 7966a8cd..813b6c78 100644 --- a/pango/pangofc-fontmap.c +++ b/pango/pangofc-fontmap.c @@ -1372,6 +1372,7 @@ start_init_in_thread (PangoFcFontMap *fcfontmap) GTask *task; fc_initialized = 1; + task = g_task_new (fcfontmap, NULL, NULL, NULL); g_task_set_name (task, "[pango] FcInit"); g_task_run_in_thread (task, init_in_thread); @@ -2332,7 +2333,7 @@ pango_fc_font_map_set_config (PangoFcFontMap *fcfontmap, FcConfigDestroy (oldconfig); /* No need to wait anymore */ - fc_initialized = 2; + fc_initialized = TRUE; } /** -- cgit v1.2.1