[cairo-commit] 4 commits - cairo-version.h NEWS src/cairo.h src/cairo-raster-source-pattern.c src/win32

Chris Wilson ickle at kemper.freedesktop.org
Fri Mar 23 13:17:17 PDT 2012


 NEWS                                    |   80 ++++++++++++++++++++++++++++++++
 cairo-version.h                         |    4 -
 src/cairo-raster-source-pattern.c       |    2 
 src/cairo.h                             |    9 +++
 src/win32/cairo-win32-display-surface.c |    3 -
 5 files changed, 93 insertions(+), 5 deletions(-)

New commits:
commit 841b4057bc7afdc9fbac36b178dd5f15bbfc0f90
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Fri Mar 23 20:16:44 2012 +0000

    version: Post release bump to 1.12.1

diff --git a/cairo-version.h b/cairo-version.h
index 1a38e6e..8964a4b 100644
--- a/cairo-version.h
+++ b/cairo-version.h
@@ -3,6 +3,6 @@
 
 #define CAIRO_VERSION_MAJOR 1
 #define CAIRO_VERSION_MINOR 12
-#define CAIRO_VERSION_MICRO 0
+#define CAIRO_VERSION_MICRO 1
 
 #endif
commit a0bf6d25b5b68c897d63580d1ca9ee182f04cce1
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Fri Mar 23 19:33:07 2012 +0000

    version: bump for 1.12.0 release!

diff --git a/NEWS b/NEWS
index 5d22053..42dee90 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,83 @@
+Release 1.12.0 (2012-03-23 Chris Wilson <chris at chris-wilson.co.uk>)
+===================================================================
+It's taken over 18 months, but the wait is finally over. A new cairo release!
+We are pleased to annouce a new stable release of Cairo that brings many
+new features and performance improvements, all whilst maintaining
+compatibility with cairo-1.0 and all releases since. We recommend anyone
+using a previous release of Cairo to upgrade to 1.12.0.
+
+The major feature of this release is the introduction of a new procedural
+pattern; the mesh gradient. This, albeit complex, gradient is constructed
+from a set of cubic Bezier patches and is a superset of all other gradient
+surfaces which allows for the construction of incredibily detailed patterns.
+In PDF parlance, the mesh gradient corresponds with type 7 patterns. Many
+thanks to Andrea Canciani for bringing this to Cairo, and for his work on
+making gradient handling robust.
+
+Not content with just adding another procedural pattern, Cairo 1.12 also
+adds new API to create a callback pattern,
+cairo_pattern_create_raster_source, that allows the application to
+provide the pixel data for the region of interest at the time of
+rendering. This can be used for instance, by an application to decode
+compressed images on demand and to keep a cache of those decompressed
+images, independently of Cairo. When combined with the recording
+surface, it should form a useful basis for a deferred renderer.
+
+With the release of cairo-1.12, we also introduce a new supported
+backend for interoperating with X using XCB. Uli Schlachter, also
+maintainer of awesome and contributor to libxcb, has volunteered to
+maintain cairo-xcb for us. Thanks Uli!
+
+For cairo-1.12, we have also added some common API to address any
+surface as an image and so allow direct modification of the raster data.
+Previously, only the Quartz and Win32 backends supported a very narrow
+interface to allow for efficient pixel upload. Now with
+cairo_surface_create_similar_image, cairo_surface_map_to_image, and
+cairo_surface_unmap_image, Cairo exports a consistent method for
+treating those surfaces as an image and so allow modification inplace.
+These are the same routines used internally, and should support
+efficient transfer or direct mapping of the target surfaces as
+applicable.
+
+Another focus over the past year has been to address many performance
+issues, without sacrificing the composition model. To accomplish the
+goal, once again the rasterisation pipeline was overhauled and made
+explicit, giving the backends the freedom to implement their own
+specific pipeline whilst also providing a library of common routines
+from which to build the pipeline. For instance, this allows the image
+backend and the gl backend to composite scan line primitives inplace,
+and to then implement custom fallbacks to catch the corner cases that do
+not map onto their fastest paths. Similarly, this allows for the Xlib
+backend to implement trapezoidation without compromising the other
+backends, yet still allow for the pipeline to be used elsewhere for
+testing and fallbacks. Clipping was once again overhauled, so that the
+common cases for the raster pipelines could be captured and processed
+with fast paths with the emphasis on performing geometric clipping to
+reduce the frequency of using multi-pass clipmasks. Stroking was made
+faster, both by providing specialised fast-paths for simple, yet frequent,
+cases (such as stroking around a rectangle) and by reducing the number
+of edges generated by the general stroker.
+
+As part of the focus on performance, Cairo 1.12 introduces some
+antialias hints (NONE,FAST, GOOD, BEST) that are interpolated by the
+raserisers to fine tune their performance versus quality. Cairo 1.12
+also introduces a new observation architecture,
+cairo_surface_observer_t, which can be used to analyse the amount of
+time consumed by drawing commands and help identify inefficiencies in
+both Cairo and the application.
+
+Last, but by no means least, the OpenGL backend has seen significant
+work including the port to GLESv2 and the exploitation of advanced
+hardware features. Interesting times.
+
+As always, I would like to thank everyone who contributed to Cairo,
+not only through writing code, but also submitting documentation, bug
+reports, suggestions and generally having fun with Cairo! In particular
+though this release could not have happened without the efforts of
+Adrian Johnson, Alexandros Frantiz, Andrea Canicani, Martin Robinson,
+Nis Martensen, and Uli Schlachter. Thanks.
+-Chris
+
 Snapshot 1.11.4 (2012-13-12)
 ============================
 The cairo community is pleased to finally announce the long aniticpated
diff --git a/cairo-version.h b/cairo-version.h
index a772553..1a38e6e 100644
--- a/cairo-version.h
+++ b/cairo-version.h
@@ -2,7 +2,7 @@
 #define CAIRO_VERSION_H
 
 #define CAIRO_VERSION_MAJOR 1
-#define CAIRO_VERSION_MINOR 11
-#define CAIRO_VERSION_MICRO 5
+#define CAIRO_VERSION_MINOR 12
+#define CAIRO_VERSION_MICRO 0
 
 #endif
commit 9cb7586fb05f72d4b10b33c9a8e8870ee4865af5
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Fri Mar 23 18:08:40 2012 +0000

    cairo: Add some missing doc entries for cairo_raster_source_pattern_t
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/cairo-raster-source-pattern.c b/src/cairo-raster-source-pattern.c
index f096862..601fe60 100644
--- a/src/cairo-raster-source-pattern.c
+++ b/src/cairo-raster-source-pattern.c
@@ -218,6 +218,8 @@ cairo_raster_source_pattern_set_callback_data (cairo_pattern_t *abstract_pattern
  *
  * Queries the current user data.
  *
+ * Return value: the current user-data passed to each callback
+ *
  * Since: 1.12
  **/
 void *
diff --git a/src/cairo.h b/src/cairo.h
index d23cd10..37fdf0c 100644
--- a/src/cairo.h
+++ b/src/cairo.h
@@ -2543,6 +2543,9 @@ typedef void
  * is expected to provide the pixel data that was current at the time
  * of snapshotting.
  *
+ * Return value: CAIRO_STATUS_SUCCESS on success, or one of the
+ * #cairo_status_t error codes for failure.
+ *
  * Since: 1.12
  **/
 typedef cairo_status_t
@@ -2551,12 +2554,16 @@ typedef cairo_status_t
 
 /**
  * cairo_raster_source_copy_func_t:
- * @pattern: the pattern being rendered from
+ * @pattern: the #cairo_pattern_t that was copied to
  * @callback_data: the user data supplied during creation
+ * @other: the #cairo_pattern_t being used as the source for the copy
  *
  * #cairo_raster_source_copy_func_t is the type of function which is
  * called when the pattern gets copied as a normal part of rendering.
  *
+ * Return value: CAIRO_STATUS_SUCCESS on success, or one of the
+ * #cairo_status_t error codes for failure.
+ *
  * Since: 1.12
  **/
 typedef cairo_status_t
commit 8416b40f4357d0660ccb9f5b24b07b4d2f663fbc
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Fri Mar 23 14:22:22 2012 +0000

    win32: mark-dirty cannot assume the fallback has been discarded
    
    Flushing only releases the fallback if we flush twice with no
    intervening damage (the theory is to try and reduce readbacks). So it is
    possible for a correctly behaving application to call mark-dirty and there
    still be a fallback.
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/win32/cairo-win32-display-surface.c b/src/win32/cairo-win32-display-surface.c
index 6123f7e..a44b878 100644
--- a/src/win32/cairo-win32-display-surface.c
+++ b/src/win32/cairo-win32-display-surface.c
@@ -566,8 +566,7 @@ static cairo_status_t
 _cairo_win32_display_surface_mark_dirty (void *abstract_surface,
 					 int x, int y, int width, int height)
 {
-    cairo_win32_display_surface_t *surface = abstract_surface;
-    assert (surface->fallback == NULL);
+    _cairo_win32_display_surface_discard_fallback (abstract_surface);
     return CAIRO_STATUS_SUCCESS;
 }
 


More information about the cairo-commit mailing list