[cairo-announce] cairo snapshot 1.9.12 now available

Chris Wilson chris at chris-wilson.co.uk
Mon Jul 12 04:46:08 PDT 2010

A new cairo snapshot 1.9.12 is now available from:


    which can be verified with:

	486a0b6855aa63bcb333f6ac63307ae8647035ba  cairo-1.9.12.tar.gz

	(signed by Chris Wilson)

  Additionally, a git clone of the source tree:

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

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

    which can be verified with:
	git verify-tag 1.9.12

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

Snapshot 1.9.12 (2010-07-12)

  A couple of weeks spent fixing those annoying bugs and cleaning up the build
  system; the list of outstanding tasks to complete for the stable release is
  finally shrinking. The chief bug fixer has been Benjamin Otte who not only
  made sure that the public API is consistent and being tested for its
  consistency, but also ensured that the documentation was up-to-date and
  spent time clarifying cases where even the Cairo developers have come
  unstuck in the past. Many thanks, Benjamin. However, he was not alone,
  as Andrea Canciani continued his fine work in isolating broken corner cases
  and proceeding to fix them, and tidying up the quartz backend. And last, but
  definitely not least, M Joonas Pihlaja tried building Cairo across a
  perverse range of systems and fixed up all the loose bits of code that came
  unravelled. Thanks everybody!

API Changes

  cairo_surface_set_mime_data, cairo_surface_get_mime_data:

    The length parameter is now an unsigned long (as opposed to an unsigned
    int). The parameter is intended to be an equivalent to a size_t without
    requiring POSIX types and be large enough to store the size of the
    largest possible allocation.


    This a new surface constructor for cairo-gl that explicitly enables
    render-to-texture for foreign, i.e. application, textures.

  cairo_region_xor, cairo_region_xor_rectangle

    A couple of utility routines add to the region handling interface for
    the purpose of replacing existing GdkRegion functionality.

Bugs fixes


    Inkscape was caught in the act of attempting to modify a finished surface.
    Unfortunately, we had the ordering of our guards and assertions wrong and
    so an ordinary application error was triggering an assert in Cairo. This
    lead Benjamin to add a test case to ensure that the entire public API
    could handle erroneous input and then proceeded to fix a whole slew of
    uncovered bugs.


    A regression introduced by the special casing of uploading images to an
    xlib surface in-place which was ignoring the translation applied to the


Complete lists of changes between 1.9.10 and 1.9.12
Andrea Canciani (12):
      quartz-font: silence compiler warnings
      quartz: improve text transform handling
      quartz: check return status
      quartz-font: correct and explain matrix computations
      quartz: remove unused os version info
      quartz: remove unused declarations
      ft-font: fix typo
      user-font: ignore translation in scale matrix
      user-font: correct handling of size 0 text
      test: fix typo
      test: Add quartz functions to api-special-cases test
      test: Add halo quartz reference images

Benjamin Otte (68):
      boilerplate: Add a describe vfunc
      gl: Add describe string
      boilerplate: Add describe string
      perf: print comment describing backend
      configure: remove shave
      configure: Use automake silent rules
      tests: Add a testcase that checks APIs work consistently
      surface: don't call begin_modification on finished surfaces
      surface: Fail early if create_similar() is called on a finished surface
      surface: Fail if set_mime_data() is called on a finished surface
      subsurface: Fail if created from a finished surface
      configure: remove dolt
      test: Add a new test variant to api-special-cases test
      test: add image surface functions to api-special-cases test
      test: Add a non-error surface check
      test: add PNG functions
      test: Add recording and tee surface functions to api-special-cases
      tee: Add proper error handling
      Call _cairo_error() when setting the FINISHED error on surfaces
      test: Add gl functions to the tests
      gl: Fail properly when called with finished functions
      pdf: Set error when extracting from finished surface
      ps: Set error when extracting from finished surface
      ps: Allow specifying if errors on extract_surface should be set
      svg: Set error when extracting from finished surface
      test: Add ps, pdf and svg to the api-special-cases test
      test: Add xcb and xlib functions to api-special-cases test
      xcb: Setters should set finished surfaces into an error status
      xlib: Setters should set finished surfaces into an error status
      test: Add documentation to the api-special-cases test
      test: Add note about how to fix failures to api-special-cases
      region: Add cairo_region_xor() and cairo_region_xor_rectangle()
      gl: Fix compile error after rebase failure
      doc: Add drm and glew to the ignored directories
      glew: The headers are private, not public
      doc: Add cairo_rectangle_int_t to the general types list
      doc: Add cairo_in_clip() to cairo_t section
      doc: Add a section for cairo_device_t
      doc: Add missing surface APIs
      doc: Add a section about regions
      skia: Add cairo-skia.h as a public header
      drm: Fix Makefile for drm_xr
      doc: add --name-space option to gtkdoc-mkdb
      doc: Add list of new symbol in Cairo 1.10
      doc: Fix some consistency issues that confuse gtk-doc
      doc: Remove CAIRO_FORMAT_RGB16_565 from hidden symbols list
      doc: Move tmpl/ docs to inline docs
      doc: Fix a syntax issue in quartz-font gtkdoc
      doc: Add missing region documentation
      doc: Remove the <TITLE> declarations
      doc: Copy docs for standard device APIs
      doc: Clarify that cairo_surface_get_device() can return NULL
      doc: Add more documentation for devices
      doc: Document remaining cairo-device functions
      gl: Remove double ** from some comments
      doc: Add "@Since: 1.10" tags to device docs
      build: Get rid of $(foo_files) Makefile.am variables
      build: Fix C++ issues with automake
      gl: Use unsigned int instead of GLuint
      build: copy/paste failure: Don't build libcxx.la
      build: Remove wrong flags from libcairo_cxx.la
      build: fix glew include
      build: Commit new versions of autogenerate Windows build files
      build: Fix typo that makes C++ libs not build
      qt: Define cairo-qt's API as C symbols
      build: Split boilerplate lib generation into two so's
      check: Allow unprefix type names in the title
      doc: Make the necessity of flush/mark_dirty more obvious

Chris Wilson (10):
      version: 1.9.9
      xlib: Compile without fontconfig
      xlib: Apply translation to image surface upload.
      user-font: Check the status before destroying the context
      subsurface: Don't assume we ever own the target.
      Convert mime data length to use unsigned long
      Make distcheck happy.
      test: Missing REFERENCE_IMAGES
      NEWS for 1.9.12.
      version: 1.9.12 snapshot

Colin Walters (1):
      Support NOCONFIGURE environment variable

Eric Anholt (1):
      gl: Only use a mat3 for the transformation for gradients coordinates.

Kristian Høgsberg (1):
      gl: Add new cairo-gl surface constructor to create surface for texture

M Joonas Pihlaja (9):
      build: Factor out a more pliable CAIRO_CC_TRY_LINK_WITH_ENV_SILENT.
      build: Purge CAIRO_CC_TRY_LINK_FLAG.
      build: Rework pthread detection.
      build: Fix regression provoked by newer autoconf and dodgy configuring.
      build: Fix typo in pthread test program.
      build: Avoid shifting shell parameters that aren't there.
      trace: Avoid stdbool.h C99ism.
      build: Sync up autogenerated win32 build files.
      test: Add comments explaining the bug in bug-seams.

What is cairo
Cairo is a 2D graphics library with support for multiple output
devices. Currently supported output targets include the X Window
System, quartz, win32, and image buffers, as well as PDF, PostScript,
and SVG file output. Experimental backends include OpenGL, 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 include 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,

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

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


The latest versions of cairo can always be found at:


Documentation on using cairo and frequently-asked questions:


Mailing lists for contacting cairo users and developers:


Roadmap and unscheduled things to do, (please feel free to help out):


Chris Wilson, Intel Open Source Technology Centre

More information about the cairo-announce mailing list