summaryrefslogtreecommitdiff
path: root/pango/pango-layout.c
diff options
context:
space:
mode:
authorTimm Bäder <mail@baedert.org>2020-04-14 17:43:35 +0200
committerTimm Bäder <mail@baedert.org>2020-06-08 19:15:29 +0200
commit03774a47fda0231fae38f44e68e05deaf9ca95dc (patch)
tree9203c90dcd10414ae326c30f9d1b63f6a5f33cfc /pango/pango-layout.c
parent993ac0ad925e8a22e41591390d069d7ecf37518b (diff)
downloadpango-03774a47fda0231fae38f44e68e05deaf9ca95dc.tar.gz
layout: Try to avoid some work when creating iters
Instead of getting the logical rect and then not using it, try not to compute it in the first place.
Diffstat (limited to 'pango/pango-layout.c')
-rw-r--r--pango/pango-layout.c25
1 files changed, 19 insertions, 6 deletions
diff --git a/pango/pango-layout.c b/pango/pango-layout.c
index 872ccd71..ee754835 100644
--- a/pango/pango-layout.c
+++ b/pango/pango-layout.c
@@ -6183,7 +6183,6 @@ _pango_layout_get_iter (PangoLayout *layout,
PangoLayoutIter*iter)
{
int run_start_index;
- PangoRectangle logical_rect;
g_return_if_fail (PANGO_IS_LAYOUT (layout));
@@ -6207,11 +6206,25 @@ _pango_layout_get_iter (PangoLayout *layout,
iter->run = NULL;
iter->line_extents = NULL;
- pango_layout_get_extents_internal (layout,
- NULL,
- &logical_rect,
- &iter->line_extents);
- iter->layout_width = layout->width == -1 ? logical_rect.width : layout->width;
+
+ if (layout->width == -1)
+ {
+ PangoRectangle logical_rect;
+
+ pango_layout_get_extents_internal (layout,
+ NULL,
+ &logical_rect,
+ &iter->line_extents);
+ iter->layout_width = logical_rect.width;
+ }
+ else
+ {
+ pango_layout_get_extents_internal (layout,
+ NULL,
+ NULL,
+ &iter->line_extents);
+ iter->layout_width = layout->width;
+ }
iter->line_index = 0;
update_run (iter, run_start_index);