cairo 1.4.4 release available
From: Carl Worth <>
Date: 13 Apr 2007
Subject: [cairo-announce] cairo release 1.4.4 now available

A new cairo release 1.4.4 is now available from:

    which can be verified with:
        71a7ce8352500944f7b2b73d4dc25ee947ec56ec  cairo-1.4.4.tar.gz
        (signed by Carl Worth)

  Additionally, a git clone of the source tree:

        git clone git://

    will include a signed 1.4.4 tag which points to a commit named:

    which can be verified with:
        git verify-tag 1.4.4

    and can be checked out with a command such as:
        git checkout -b build 1.4.4

This is the second update release in cairo's stable 1.4 series. It
comes just less than a month after 1.4.2. The changes since 1.4.2
consist primarily of bug fixes, but also include at least one
optimization. See below for details.

Thanks, and have fun with cairo!


There have been lots of individuals doing lots of great work on cairo,
but two efforts during the 1.4.4 series deserve particular mention:

Internal cleanup of error handling, (Chris Wilson)
Chris contributed a tremendous series of patches (74 patches!) to
improve cairo's handling of out-of-memory and other errors. He began
by adding gcc's warn_unused_attribute to as many functions as
possible, and then launched into the ambitious efforts of adding
correct code to quiet the dozens of resulting warnings.

Chris also wrote a custom valgrind skin to systematically inject
malloc failures into cairo, and did all the work necessary to verify
that cairo's performance test suite runs to completion without

The end result is a much more robust implementation. Previously, many
error conditions would have gone unnoticed and would have led to
assertion failures, segmentation faults, or other harder-to-diagnose
problems. Now, more than ever, cairo should cleanly let the user know
of problems through cairo_status and other similar status
functions. Well done, Chris!

More malloc reduction, (Mathias Hasselmann)
After 1.4.0, Behdad launched an effort to chase down excessive calls
to malloc within the implementation of cairo. He fixed a lot of
malloc-happy objects for 1.4.2, but one of the worst offenders,
(pixman regions), was left around. Mathias contributed an excellent
series of 15 patches to finish off this effort.

The end result is a cairo that calls malloc much less often than it
did before. Compared to 1.4.2, 55% of the calls to malloc have been
eliminate, (and 60% have been eliminated compared to 1.4.0). Well
done, Mathias!

Other improvements since 1.4.2
• Centralize mutex declarations (will reduce future build breaks),
  (Mathias Hasselmann)

• Reduce malloc by caching recently freed pattern objects (Chris

• Fix some broken composite operations (David Reveman)

Backend-specific fixes
 • Use TJ operator for more compact representation of glyphs (Adrian

 • Fix glyph positioning bug when glyphs are not horizontal

 • Fix crash when rendering with bitmap fonts (Carl Worth)

 • Turn metrics-hinting on by default (Behdad Esfahbod)

 • Fix edge-effect problem with transformed images drawn to xlib
   (Behdad Esfahbod)

 • Avoid dereferencing a NULL screen. (Chris Wilson)

 • Fix scaling of glyph surfaces
   (Brian Ewins)

 • Fix compilation failure when both xlib and quartz enabled
   (Brian Ewins)

 • Fix rounding bug leading to incorrectly positioned glyphs
   (Robert O'Callahan)