GNOME 3590 Published by

A new cairo release 1.4.2 is now available from:

http://cairographics.org/releases/cairo-1.4.2.tar.gz

which can be verified with:

http://cairographics.org/releases/cairo-1.4.2.tar.gz.sha1
9e7a323fc7d81d5011044d7eb22db3bf26ff7314 cairo-1.4.2.tar.gz

http://cairographics.org/releases/cairo-1.4.2.tar.gz.sha1.asc
(signed by Carl Worth)

Additionally, a git clone of the source tree:

git clone git://git.cairographics.org/git/cairo

will include a signed 1.4.2 tag which points to a commit named:
aba2b299db163d8a5b9d0a0214cd8a485fb87162

which can be verified with:
git verify-tag 1.4.2

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



This is the first update release in cairo's stable 1.4 series. It comes just less than 2 weeks after 1.4.0. We hadn't anticipated an update this early, but we've managed to collect some important fixes that we wanted to get out to cairo users as soon as possible, (6 fixes for crashes, 1 case where graphical elements would not be drawn at all, a handful of backend-specific bugs, and several important build fixes).

There's almost nothing but bug fixes in this release, (see below one optimization that Behdad did sneak in), so we recommend that everyone upgrade to this release when possible.

Thanks to the many people that worked to fix these bugs, and those that did the work to report them and to test the fixes, (wherever possible both names are credited below).

-Carl

What's new in cairo 1.4.2 since 1.4.0
=====================================
Critical fixes
--------------
=E2=80=A2 Fix a crash due to a LOCK vs. UNLOCK typo (M. Drochner fixing Carl
Worth's embarrassing typo).

http://bugs.freedesktop.org/show_bug.cgi?id=10235

=E2=80=A2 Fix potential buffer overflow, which on some systems with a check
ing
variant of snprintf would lead to a crash (Adrian Johnson, Stanislav
Brabec, and sangu).

https://bugs.freedesktop.org/show_bug.cgi?id=10267
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=232576

=E2=80=A2 Fix a crash in cairo_stroke_extents or cairo_in_stroke when line
width is 0.0. (Carl Worth and Sebastien Bacher)

https://bugs.freedesktop.org/show_bug.cgi?id=10231

=E2=80=A2 Fix a crash on certain combinations of X server/video drivers (Ca
rl
Worth and Tomas Carnecky).

https://bugs.freedesktop.org/show_bug.cgi?id=10250

=E2=80=A2 Fix a crash due to mishandling of invalid user input (Carl Worth
and
Alexander Darovsky).

https://bugs.freedesktop.org/show_bug.cgi?id=9844

=E2=80=A2 xlib: Cleanup server-side glyph caches on XCloseDisplay. This
eliminated a crash detected by the perf suite, (and that
applications could have run into as well). (Chris Wilson)

Other bug fixes
---------------
=E2=80=A2 Fix for some geometry which simply disappeared under some
transformations---a stroked line with an extreme skew in X, for
example (Carl Worth and Jonathan Watt).

https://bugzilla.mozilla.org/show_bug.cgi?id=373632

=E2=80=A2 SVG: Fix radial gradients for CAIRO_EXTEND_REFLECT and when r0 >
r1
(Emmanuel Pacaud).

=E2=80=A2 PDF: Set page group color space to DeviceRGB.

This fixes incorrect (muddy) transparent colors when rendering cairo
PDF output in some viewers. (Adrian Johnson, Adam Goode, and
MenTaLguY).

http://lists.freedesktop.org/archives/cairo/2006-November/008551.html

=E2=80=A2 win32: Return correct metrics when hinting is off, and fix font
descent computation (Behdad Esfahbod).

=E2=80=A2 quartz: Fix glyph interfaces to correctly return user-space rather
than device-space coordinates (Brian Ewins).

https://bugs.freedesktop.org/show_bug.cgi?id=9568

=E2=80=A2 xcb: Fix parameter-order confusion with xcb_create_pixmap, which
now
makes all tests that pass with xlib now pass with xcb (Carl Worth,
Jamey Sharp).

=E2=80=A2 Fix some memory leaks in the perf suite (Chris Wilson).

=E2=80=A2 Fix perf suite to consider changes in pixman/src (Mathias
Hasselmann).

Build fixes
-----------
=E2=80=A2 Don't include pre-generated cairo-features.h file. This was causi
ng
build failures when building with the directfb backend enabled
(Behdad Esfahbod).

https://bugs.freedesktop.org/show_bug.cgi?id=10189

=E2=80=A2 Eliminate use of maintainer mode from cairo's automake/configure
script. This means that updates to files such as Makefile.am will
take effect, (by rerunning automake and friends as necessary) when
invoking make rather than being silently ignored. (Behdad Esfahbod)

=E2=80=A2 Don't compile cairo-deflate-stream.c, which depends on zlib, unle
ss
building the pdf backend which requires it. (Carl Worth, Tor
Lillqvist)

https://bugs.freedesktop.org/show_bug.cgi?id=10202

=E2=80=A2 Don't make the ps backend link against zlib anymore, since it
doesn't require it (Carl Worth).

=E2=80=A2 Use "find !" rather than "find -not" for better portability (Thom
as
Klausner).

https://bugs.freedesktop.org/show_bug.cgi?id=10226

=E2=80=A2 Don't use unsupported visibility attribute "hidden" on Solaris
(Gilles Dauphin, Thomas Klausner).

https://bugs.freedesktop.org/show_bug.cgi?id=10227

Optimization
------------
=E2=80=A2 It was Behdad that suggested we focus strictly on bug fixes now t
hat
we shipped so many performance improvements in 1.4.0, but it was
also Behdad that got distracted by the chance to remove a lot of
mallocs from cairo. Paths, gstates, trapezoids, splines, polygons,
and gradient color stops will now use small, stack-allocated buffers
in the most common cases rather than calling malloc as
often. (Behdad Esfahbod). And look for more from Mathias Hasselmann
soon.

What is cairo
=============
Cairo is a 2D graphics library with support for multiple output
devices. Currently supported output targets include the X Window
System, win32, and image buffers, as well as PDF, PostScript, and SVG
file output. Experimental backends include OpenGL (through glitz),
Quartz, XCB, BeOS, OS/2, and DirectFB.

Cairo is designed to produce consistent output on all output media
while taking advantage of display hardware acceleration when available
(for example, through the X Render Extension).

The cairo API provides operations similar to the drawing operators of
PostScript and PDF. Operations in cairo including stroking and filling
cubic B=C3=A9zier splines, transforming and compositing translucent images,
and antialiased text rendering. All drawing operations can be
transformed by any affine transformation (scale, rotation, shear,
etc.).

Cairo has been designed to let you draw anything you want in a modern
2D graphical user interface. At the same time, the cairo API has been
designed to be as fun and easy to learn as possible. If you're not
having fun while programming with cairo, then we have failed
somewhere---let us know and we'll try to fix it next time around.

Cairo is free software and is available to be redistributed and/or
modified under the terms of either the GNU Lesser General Public
License (LGPL) version 2.1 or the Mozilla Public License (MPL) version
1.1.

Where to get more information about cairo
=========================
================
The primary source of information about cairo is:

http://cairographics.org/

The latest releases of cairo can be found at:

http://cairographics.org/releases

Snapshots of in-development versions of cairo:

http://cairographics.org/snapshots

The programming manual for using cairo:

http://cairographics.org/manual

Mailing lists for contacting cairo users and developers:

http://cairographics.org/lists

Answers to some frequently asked questions about cairo:

http://cairographics.org/FAQ

Summary of all changes from 1.4.0 to 1.4.2
=========================
=================
Adrian Johnson (3):
PDF: Set page group color space to DeviceRGB
Fix buffer overflow warning
Fix incorrect file permission in previous commit

Behdad Esfahbod (47):
Remove extra word in docs
[configure.in] Remove AM_MAINTAINER_MODE
[cosmetic] Remove static var from testing code in bentley-ottman.
[Type1] Add cairo-type1-private.h that Type1 fallback and subset code
share
[cairoint] Move endian-conversion routines into cairoint.h
[PS/PDF/SVG] Rename internal symbols to have _cairo_*_surface prefix
[glitz] Mark some constant static structures as const
[directfb,os2] #error if the backend is not compiled in, like others
do
[boilerplate] Prefer top_builddir to top_srcdir
[cairo-path-fixed] Avoid malloc for small paths
[cairo-path-fixed] Merge op and arg bufs
[cairo-path-fixed] Fine-tune size of buffer
[cairo_t] Move gstate pointer before cairo_path_fixed_t for better ca
che behavior
[Quartz] Don't include cairo-private.h
[cairo_t] Make path an array of size one
[cairo-clip] Make _cairo_clip_init tolerate NULL target
[cairo_t] Embed a gstate into cairo_t
[skiplist] Move static variable out of function
[test-surfaces] Prefix public symbols with _cairo
[skiplist] Prefix symbols with _cairo
[test] Make pdiff if necessary
[cairo-traps] Use INT32_MIN/MAX instead of INT16_MIN/MAX << 16
[cairo-traps] Clean-up realloc algorithm for clarity
[cairo-traps] Add a cache of one trapezoid to cairo_traps_t
[cairo_traps_t] Reorder struct members for clarity
[cairo-spline] Clean-up realloc algorithm for clarity
[cairo-spline] Add a cache of eight points to cairo_spline_t
[cairo-slope] Make comparison stable if both vectors are zero
[cairo-polygon] Clean-up realloc algorithm for clarity
[cairo_polygon_t] Reorder struct members for clarity
[cairo_polygon_t] Remove unused member 'closed'
[cairo_polygon_t] Change has_current_point from int to cairo_bool_t
[cairo-spline] Fix typo in comment
[cairo-polygon] Add a cache of eight edges to cairo_polygon_t
[polygon,spline,traps] Avoid free(NULL)
[cairo-pattern] Add XXX note
[cairo-pattern] Fix color conversion from short to double
[cairo-color] Add cairo-private _cairo_color_double_to_short()
[cairo-pattern] Use _cairo_color_double_to_short() to fix color conve
rsion
[test] In pattern-getters test, log what went wrong
[test] If backends are limited and all untested, pass the test
[Makefile.am] Do not distribute cairo-features.h, Ouch!
[cairo-pattern] Grow color-stops array exponentially
[cairo-pattern] Add a cache of two color stops to cairo_gradient_patt
ern_t
[win32] Fix font descent computation
[win32] Really return unhinted font metrics if metrics hinting is off
[boilerplate] Don't build in make all

Brian Ewins (7):
[quartz] rename remaining nquartz symbols to quartz.
[atsui] clean up warnings
[atsui] remove the unused old_show_glyphs function.
[atsui] refactor CreateSizedCopyOfStyle
[atsui] store sizes in the atsui font
[atsui] make text_to_glyphs return positions in user units. (#9568)
[quartz] apply ctm to text (#9568)

Carl Worth (24):
Increment version to 1.4.1 after making the 1.4.0 release
Fix a LOCK vs. UNLOCK typo, (yes, I'm that stupid).
perf/README: Add notes on using cairo-perf-diff
Remove radial-gradient test from XFAIL list
Add new skew-extreme test case.
Fix bugs in _cairo_traps_tessellate_convex_quad
Remove dead-code remnants of old tessellator
check-def.sh: Adjust test to exempt _cairo_test_* functions as well a
s _cairo_*_test_*
Add svg-specific reference image for radial-gradient test.
Fix _cairo_traps_tessellate_convex_quad to handle a == b
Implement _cairo_traps_tessellate_triangle with _cairo_traps_tessella
te_convex_quad
Add line-width-zero test which currently crashes.
Fix cairo_stroke_extents and cairo_in_stroke to not crash with line w
idth of 0.0
Allow NULL pointers for functions that accept pointers for multiple r
eturn values.
Make compilation of cairo-deflate-stream.c conditional on compilation
of PDF backend.
Avoid pulling in -lz for the ps backend.
XCB: Fix parameter-order confusion with xcb_create_pixmap
xlib: Prefer surface->format over surface->visual for identifying mas
ks
Propagate a nil surface out of _cairo_surface_create_similar_scratch
Temporarily remove extend-reflect from the list of tests.
NEWS: Add notes for cairo 1.4.2
Increment cairo version to 1.4.2 (and libtool versioning to 13:1:11)
Add skew-extreme-ref.png to the tar file for the release.
boilerplate: Add EXTRA_LTLIBRARIES to CLEANFILES to allow make distcl
eancheck to pass.

Chris Wilson (7):
Add valgrind/callgrind targets to Makefile.
Fix up the trivial leaks found by valgrind.
Avoid the struct copy when source and destination are the same.
Correct an off-by-one in the reflection of the convolution index.
Introduce hooks for _cairo_xlib_close_display()
Privately export a function to reset the scaled font's glyph caches.
Clear the XRender data on display closure.

Emmanuel Pacaud (2):
SVG: Fix CAIRO_EXTEND_REFLECT for radial gradients.
SVG: fix a radial gradient failure when using CAIRO_EXTEND_REFLECT.

Gilles Dauphin (1):
Don't use unsupported visibily attribute hidden on Solaris

Mathias Hasselmann (6):
Improve CPU utilization when building cairo-perf
Transform the output of cairo-perf-diff into HTML
Add index.html to .gitignore
Include pixman/src in cairo-perf hash
[cairo-perf-diff] Update usage screen to mention --html.
[cairo-perf] Emit warning, if cairo-perf is not CPU bound

Thomas Klausner (1):
Use "find !" rather than "find -not" for better portability