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 -------------- • 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 • Fix potential buffer overflow, which on some systems with a checking 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 • 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 • Fix a crash on certain combinations of X server/video drivers (Carl Worth and Tomas Carnecky). https://bugs.freedesktop.org/show_bug.cgi?id=10250 • Fix a crash due to mishandling of invalid user input (Carl Worth and Alexander Darovsky). https://bugs.freedesktop.org/show_bug.cgi?id=9844 • 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 --------------- • 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 • SVG: Fix radial gradients for CAIRO_EXTEND_REFLECT and when r0 > r1 (Emmanuel Pacaud). • 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 • win32: Return correct metrics when hinting is off, and fix font descent computation (Behdad Esfahbod). • 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 • 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). • Fix some memory leaks in the perf suite (Chris Wilson). • Fix perf suite to consider changes in pixman/src (Mathias Hasselmann). Build fixes ----------- • Don't include pre-generated cairo-features.h file. This was causing build failures when building with the directfb backend enabled (Behdad Esfahbod). https://bugs.freedesktop.org/show_bug.cgi?id=10189 • 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) • Don't compile cairo-deflate-stream.c, which depends on zlib, unless building the pdf backend which requires it. (Carl Worth, Tor Lillqvist) https://bugs.freedesktop.org/show_bug.cgi?id=10202 • Don't make the ps backend link against zlib anymore, since it doesn't require it (Carl Worth). • Use "find !" rather than "find -not" for better portability (Thomas Klausner). https://bugs.freedesktop.org/show_bug.cgi?id=10226 • Don't use unsupported visibility attribute "hidden" on Solaris (Gilles Dauphin, Thomas Klausner). https://bugs.freedesktop.org/show_bug.cgi?id=10227 Optimization ------------ • It was Behdad that suggested we focus strictly on bug fixes now that 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ézier 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 cache 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 conversion [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_pattern_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 as _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_tessellate_convex_quad Add line-width-zero test which currently crashes. Fix cairo_stroke_extents and cairo_in_stroke to not crash with line width of 0.0 Allow NULL pointers for functions that accept pointers for multiple return 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 masks 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 distcleancheck 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
Attachment:
pgph6FsnpsCcx.pgp
Description: PGP signature