[pango/wip/baedert/for-master] layout: Try to avoid another attrlist duplication



commit 7489aa372a00139bc281be7907c136e2dbaa6e34
Author: Timm Bäder <mail baedert org>
Date:   Fri Apr 17 20:03:12 2020 +0200

    layout: Try to avoid another attrlist duplication

 pango/pango-layout.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)
---
diff --git a/pango/pango-layout.c b/pango/pango-layout.c
index 07a32664..04cfd789 100644
--- a/pango/pango-layout.c
+++ b/pango/pango-layout.c
@@ -4097,14 +4097,21 @@ get_items_log_attrs (const char   *text,
 static PangoAttrList *
 pango_layout_get_effective_attributes (PangoLayout *layout)
 {
+  const gboolean needs_font_desc_attr = layout->font_desc != NULL;
+  const gboolean needs_single_para_attr = layout->single_paragraph;
   PangoAttrList *attrs;
 
   if (layout->attrs)
-    attrs = pango_attr_list_copy (layout->attrs);
+    {
+      if (needs_font_desc_attr || needs_single_para_attr)
+        attrs = pango_attr_list_copy (layout->attrs);
+      else
+        return pango_attr_list_ref (layout->attrs);
+    }
   else
     attrs = NULL;
 
-  if (layout->font_desc)
+  if (needs_font_desc_attr)
     {
       PangoAttribute *attr = pango_attr_font_desc_new (layout->font_desc);
 
@@ -4114,7 +4121,7 @@ pango_layout_get_effective_attributes (PangoLayout *layout)
       pango_attr_list_insert_before (attrs, attr);
     }
 
-  if (layout->single_paragraph)
+  if (needs_single_para_attr)
     {
       PangoAttribute *attr = pango_attr_show_new (PANGO_SHOW_LINE_BREAKS);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]