summaryrefslogtreecommitdiff
path: root/pango
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
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')
-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);