A new cairo release 1.4.4 is now available from: http://cairographics.org/releases/cairo-1.4.4.tar.gz which can be verified with: http://cairographics.org/releases/cairo-1.4.4.tar.gz.sha1 71a7ce8352500944f7b2b73d4dc25ee947ec56ec cairo-1.4.4.tar.gz http://cairographics.org/releases/cairo-1.4.4.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.4 tag which points to a commit named: ebba4a6d1467a8e5db5cc43eb08e8fc98c39b30a 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! -Carl 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 crashing. 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), (Chris Wilson) • Reduce malloc by caching recently freed pattern objects (Chris Wilson) • Fix some broken composite operations (David Reveman) https://bugs.freedesktop.org/show_bug.cgi?id=5777 Backend-specific fixes ---------------------- PDF: • Use TJ operator for more compact representation of glyphs (Adrian Johnson) • Fix glyph positioning bug when glyphs are not horizontal http://lists.freedesktop.org/archives/cairo/2007-April/010337.html win32: • Fix crash when rendering with bitmap fonts (Carl Worth) https://bugzilla.mozilla.org/show_bug.cgi?id=376498 xlib: • Turn metrics-hinting on by default (Behdad Esfahbod) • Fix edge-effect problem with transformed images drawn to xlib (Behdad Esfahbod) https://bugs.freedesktop.org/show_bug.cgi?id=10508 • Avoid dereferencing a NULL screen. (Chris Wilson) https://bugs.freedesktop.org/show_bug.cgi?id=10517 Quartz/ATSUI: • Fix scaling of glyph surfaces (Brian Ewins) https://bugs.freedesktop.org/show_bug.cgi?id=9568 • Fix compilation failure when both xlib and quartz enabled (Brian Ewins) • Fix rounding bug leading to incorrectly positioned glyphs (Robert O'Callahan) https://bugs.freedesktop.org/show_bug.cgi?id=10531 Summary of all changes from 1.4.2 to 1.4.4 ========================================== Adrian Johnson (3): PDF: Use the TJ operator to show glyphs PS: Remove unused variable PDF: Fix glyph positioning bug when glyphs are not horizontal Behdad Esfahbod (52): [cairo-mutex] Rename _xlib_screen_mutex to _cairo_xlib_screen_mutex [configure.in] Define PIXMAN_CFLAGS, to pass -fno-strict-aliasing to pixman Include cairo-mutex-private.h in test backends Oops. Remove cairo-mutex-private.h include from test surfaces [cairo-path-fixed] Fix "comparison between signed and unsigned" warnings Define and use ARRAY_LEN Fix file permissions again [cairo-gstate] Move save/restore logic into gstate instead of cairo_t [cairo-gstate] Make sure gstate->next is initialized [cairo-pattern] Make sure cached solid patterns are not put in error status [cairo-path] Don't access gstate members directly [cairo.c] Don't access gstate members directly [test/nil-surface] Test cairo_create(NULL). Crashing in cairo_push_group! cairo_push/pop_group(), bail out if cairo_t is in error status [test/nil-surface] Test that cairo_get_target() returns non-NULL [autogen.sh] Add --enable-test-surfaces to configure flags [pdiff] Make stdint.h inclusion portable (#10441) [test] Make pdf2svg build (and distributed) [doc] Update Headers.mk [configure.in] Bump version up to 1.4.3, oops! [test] Add svg2pdf Make sure all nil objects start with _cairo_ [pixman] Cleanup inline mess (#10150) [cairoint.h] Remove inline definition for MS compilers [pixman] Make sure all source files include config.h [src/check-cairoint.h] Test to check that all source files #include "cairoint.h" [src] Make sure all source files #include "cairoint.h" as their first include [pixman/src/check-config.sh] Test that all source files #include <config.h> [Makefile.am] Distribute BIBLIOGRAPHY [ROADMAP] Move David Turner's cairo-ft rewrite to 1.6. [TODO] Add 4945 Cairo doesn't support 8-bit pseudocolor visuals [pixman-image] Simply initialization given that there is no clip Rename pixman_region_uninit to pixman_region_fini [test,perf] Make them rebuild boilerplate when src is changed [cairo-skiplist] Clarify MAX_LEVEL in comment, and adjust accordingly Add references to the skiplist paper [cairo-skiplist] Group levels two-by-two in freelists [cairo-skiplist] Reduce MAX_LEVEL from 31 to 15 [cairo-skiplist] Use one random number per insertion, instead of two [pdiff] Ship gpl.txt [test] Add copyright headers for my tests [ROADMAP] Mark done items [pixman] Mark some small functions that are called per-pixel inline [test] Disable text-glyph-range that was crashing [ROADMAP] Mark bug #5777 as fixed [ROADMAP] Add cairo_object_t [xlib] Turn metrics-hinting on by default [image] Set hint-metrics on in default font options [cairo-surface] Make sure cairo_surface_get_font_options() fully initializes [cairo-pattern] Add a TODO item to code [cairo-pattern] Slightly hackish fix for bug #10508 [ROADMAP] Put back bug 10508 into 1.4.4 roadmap and mark it fixed Benjamin Berg (1): Fix typo in cairo_arc_negative() docs (#10497) Brian Ewins (4): [atsui] fix scaling of glyph surfaces (#9568) [quartz] fix order of fields in matrix conversion [test/degenerate-path] remove quartz reference image [boilerplate] split quartz out to avoid symbol clash. Carl Worth (67): Move misplaced CLEANUP_FONT label to avoid crash. ROADMAP/TODO: Update with 1.4.4 and 1.6 items from recent meeting Make _cairo_gstate_identity_matrix void Make _cairo_gstate_user_to_device (and friends) void. Make _cairo_pen_init_empty void Make _cairo_matrix_compute_scale_factors void Make _cairo_path_bounder_add_point void Cleanup multi-line if condition Add a couple of missing newline characters ATSUI: Fix broken error checks for NULL surface Fix an incorrectly indented condition Prefer FALSE over 0 for initializing a cairo_bool_t value Rename ARRAY_LEN to ARRAY_LENGTH Invert condition to more intuitive form. Add a status field to cairo_polygon_t Add missing error checking to _trace_mask_to_path Fix cairo_traps_t status handling Fix mis-indented _cairo_traps_init_box Fix mis-indented _cairo_dtostr _cairo_output_stream_vprintf: Add assertion to detect internal inconsitency Change _cairo_dtostr to have a void return type Make _cairo_clip_reset void PS: Add missing error checks for _cairo_output_stream_destroy PDF: Check return value of _cairo_output_stream_destroy and propagate Rename _cairo_pdf_surface_emit_toUnicode_stream to eliminate StudlyCaps Add assertion check to quiet warn_unused_result warning. Add missing error check of return value of _cairo_path_fixed_close_path test-meta-surface: Add missing checks for errors from _cairo_meta_surface_replay test-meta-surface: Add missing check for error from _cairo_surface_get_extents cairo-truetype-subset: Check resturn value from _cairo_array_append and propagate cairo-truetype-subset: Fix missing error propagation paginated: Fix missing errors checks for _cairo_meta_surface_replay Fix indentation of CLEANUP_IMAGE label. test-meta-surface.c: Fix memory leak on error recovery path. paginated: Add missing error check for _cairo_surface_get_extents paginated: Add missing error check for _cairo_surface_show_page Fix cairo_scaled_font_create to return a nil scaled font, not NULL _cairo_scaled_font_init: Detect an invalid matrix and return an error. Check (and assert) return values of cairo_matrix_invert _cairo_gstate_ensure_scaled_font: Prefer to treat a pointer as a pointer, not a Boolean value _cairo_gstate_ensure_scaled_font: Add missing propagation for error hiding inside the scaled_font cairo_pattern_set_matrix: Validate that matrix is invertible test/invalid-matrix: Add new test to exercise CAIRO_STATUS_INVALID_MATRIX paths Assert that cairo_matrix_invert succeeds rather than ignoring tis return value PS: Add missing checks for return value of _cairo_pattern_get_extents PS: Add missing check for return value of _cairo_meta_surface_replay PDF: Added error checking and propagation for _cairo_array_append SVG: Add missing error checks and propagation SVG: Add missing error checking for calls to _cairo_output_stream_destroy boilerplate: Add error checking for cairo_surface_set_user_data boilerplate: Add error checking for cairo_surface_write_to_png Merge branch 'warn-unused-result' into cairo cairo-truetype-subset.c: Add missing error checks and propagation Merge cached-scaled-font-in-error into cairo Merge branch 'master' of git.cairographics.org:/git/cairo into cairo move show-glyphs-many to the DISABLED_TESTS list Rename cairo-mutex-list.h to cairo-mutex-list-private.h Rebuild doc/public/Headers.mk Revert cairo_public_warn addition to cairo.h Remove ft-text-vertical-layout-type1 Fix typo in loop control for computation of std. deviation Punt bug #10508 off of 1.4.4 boilerplate: Cleanup conditional compilation ofcairo-quartz-boilerplate.c cairo-perf-diff: Use median not minimum to report differences AUTHORS: Update descriptions for Mathias Hasselmann and Chris Wilson NEWS: Add notes for cairo 1.4.4 Increment version to 1.4.4 (and library versioning to 13:2:11) Chris Wilson (74): Cache solid patterns [cairo-surface] Use a stack buffer for small numbers of rectangles Back out the solid-pattern-cache from 9b53bc7c6585db7ae647bb992fb9817d7bd75b38. Destroy the current pattern before replacing with cairo_set_source(). [autogen.sh] Borrow version comparison from GNOME autogen.sh (#9566) Restore gcov functionality Propagate one error return through pdf. Protect boilerplate_xlib_synchronize from alloc failure. _get_bitmap_surface - check for calloc failure Add attribute(warn_unused_result) cairo-boilerplate - handle failure to set user data cairo-clip - handle trivial pixman failures cairo-ft-font - handle trivial failures cairo-gstate - fix the trivial unchecked returns cairo-image-surface - propagate error returns from pixman. cairo-meta-surface - propagate trivial status return cairo-paginated-surface - fix up the trivial unused result cairo-path-fill - trivial missing unused result cairo-path - check for failure during _cairo_path_fixed_interpret cairo-pattern - propagate status cairo-pdf-surface - propagate error status cairo-pen - trivial propagation of error status cairo-polygon - trivial propagation of error status cairo-ps-surface - add a couple of status checks cairo-surface-fallback - propagate error returns cairo-svg-surface - propagate error returns cairo-type1-fallback - check for an error during cleanup cairo - add missing status checks buffer-diff - check for any errors whilst writing the png cairo-path-stroke - add trivial missing status checks cairo-bentley-ottmann/skip-list - catch and propagate out-of-memory errors cairo-pen - cairo_pen_init() can fail propagate its error. cairo-svg-surface - propagate some error returns cairo-type1-fallback - propagate error returns cairo-bentley-ottmann - check init for failure Reset cairo_scaled_font_map after freeing. Handle failure to allocate a GC. Avoid using substituted surfaces for xlib operations. Check for error whilst trying to advance along a text string. Detect failure to allocate glyphs during _cairo_scaled_font_init() Reorder cleanup cairo_xlib_surface_show_glyphs() Remove the entry if we return an error code during _cair_hash_table_insert. cairo-xlib-surface - propagate status returns. Return the correct status from _cairo_pen_stroke_spline(). Do not overwrite cr->status Initialise cairo_spline_t to use its embedded buffer. Free the pixman_image if we fail to wrap it with a surface. Correct handling of a malloc failure during pattern_create_in_error() Free the bitmap->buffer on failure Fix detection of FcFini(). Implement clone_surface for test-fallback-surface. pixman region operations can fail, propagate the error. Disable warnings for cairo_*_reference functions. Provide a private entry point for cairo_scaled_font_status(). Propagate region failures during pixman_image_set_clip_region(). FbClipImage* should check for errors during region operations. Propagate region errors from pixman_color_rects(). Propagate errors up through pixman_composite_trapezoids() Unexport fbSolidFillmmx and fbCopyAreammx. Use find | xargs to overcome shell command line limit. _pixman_create_source_image() - check for malloc failure Only enable warn-unused-result for recent gcc Define cairo_public_warn in terms of cairo_public. Mark function tables with attribute(warn_unused_result) Don't return scaled fonts in the error state from the cache. Move pixman_format_t from heap to stack allocations. Avoid using GNU find extensions. Check for find and xargs during configure Do not raise an error if we fail to locate 'find' or 'xargs' cairo-xlib-screen - avoid dereferencing a NULL screen. cairo_xlib_screen_info_t - always perform an exact match cairo_xlib_close_display - drop the mutex whilst calling the hooks Hold the scaled_font->mutex whilst operating on the shared members. Add a reference count to cairo_xlib_screen_info_t David Reveman (1): [pixman] Fix fbcompose.c that was broken for some composite operations (#5777) Jeff Smith (1): [cairo-output-stream] Remove use of strtol Kristian Høgsberg (1): Add missing copyright notice. Mathias Hasselmann (20): Initialize mutexes at central location. Remove _global_image_glyph_cache_mutex which is not used anymore. Move declaration of cairo_mutex_t to cairo-mutex-private.h Merge branch 'master' of git+ssh://hasselmm git freedesktop org/git/cairo Move struct pixman_region16 to pixman.h Make pixman_region_{init,uninit} public Make region of cairo_clip_t static Make sure clip->region is always initialized Avoid malloc in _cairo_region_create_from_rectangle Avoid pixman_region_create in _cairo_traps_extract_region Remove redundant _cairo_clip_fini function Avoid pixman_create_region in glitz-surface Replace pixman_region_create_simple by pixman_region_init Avoid pixman_region_create in pixman_color_rects Make clip regions of pixman_image_t static Avoid pixman_region_create in pixman_composite{,General} Make clientClip region static, remove abdoned CT_PIXMAP code paths Remove abdoned pixman_region_{create,destroy} Update function map [pixman-region] Separate pixman_region_init Michael Emmel (2): Fixed compile error from missing directfb.h include Merge branch 'master' of ssh+git://git.cairographics.org/git/cairo Robert O'Callahan (1): [quartz] fix floating point precision issue (#10531) Vladimir Vukicevic (1): add licenses to test files
Attachment:
pgpd47nx0IErT.pgp
Description: PGP signature