pango r2653 - in trunk: . pango



Author: behdad
Date: Mon Jun 16 20:08:21 2008
New Revision: 2653
URL: http://svn.gnome.org/viewvc/pango?rev=2653&view=rev

Log:
2008-06-16  Behdad Esfahbod  <behdad gnome org>

        Bug 538661 â Improve pango_cairo_context_update_context()

        * pango/pangocairo-context.c (_pango_cairo_update_context):
        Relayout only if merged options changed.



Modified:
   trunk/ChangeLog
   trunk/pango/pangocairo-context.c

Modified: trunk/pango/pangocairo-context.c
==============================================================================
--- trunk/pango/pangocairo-context.c	(original)
+++ trunk/pango/pangocairo-context.c	Mon Jun 16 20:08:21 2008
@@ -92,36 +92,31 @@
   PangoMatrix pango_matrix;
   const PangoMatrix *current_matrix, identity_matrix = PANGO_MATRIX_INIT;
   const cairo_font_options_t *merged_options;
+  cairo_font_options_t *old_merged_options;
   gboolean changed = FALSE;
 
   info = get_context_info (context, TRUE);
 
-
   target = cairo_get_target (cr);
 
-  if (!info->surface_options) {
+  if (!info->surface_options)
     info->surface_options = cairo_font_options_create ();
-    changed = TRUE;
-    cairo_surface_get_font_options (target, info->surface_options);
-  } else {
-    cairo_font_options_t *surface_options = cairo_font_options_create ();
-    cairo_surface_get_font_options (target, surface_options);
-    if (!cairo_font_options_equal (surface_options, info->surface_options))
-      {
-	cairo_surface_get_font_options (target, info->surface_options);
-	changed = TRUE;
-      }
-    cairo_font_options_destroy (surface_options);
-  }
+  cairo_surface_get_font_options (target, info->surface_options);
 
-  if (info->merged_options)
-    {
-      cairo_font_options_destroy (info->merged_options);
-      info->merged_options = NULL;
-    }
+  old_merged_options = info->merged_options;
+  info->merged_options = NULL;
 
   merged_options = _pango_cairo_context_get_merged_font_options (context);
 
+  if (old_merged_options)
+    {
+      if (!cairo_font_options_equal (merged_options, old_merged_options))
+	changed = TRUE;
+      cairo_font_options_destroy (old_merged_options);
+      old_merged_options = NULL;
+    }
+  else
+    changed = TRUE;
 
   cairo_get_matrix (cr, &cairo_matrix);
   pango_matrix.xx = cairo_matrix.xx;



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