# Generated by configure. Do not edit. commit 4938e11ffe11781e4e294092807ebc67f362eac6 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Dec 25 13:25:14 2010 +0000 version: Bump for 1.10.2 release cairo-version.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit de464ea7781707984a1e1d5f98a8ff23c5ee18ed Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Dec 25 13:24:37 2010 +0000 NEWS: Add entry for 1.10.2 NEWS | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 59 insertions(+), 0 deletions(-) commit 888eeb187f542b96e722725f616720038e700b84 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Dec 25 10:19:38 2010 +0000 Add a KNOWN_ISSUES file to track WONTFIX(?) bugs KNOWN_ISSUES | 10 ++++++++++ Makefile.am | 1 + 2 files changed, 11 insertions(+), 0 deletions(-) commit a27e3bc6d08feeac8e4ee5315a0ad974efee0ee9 Author: Koji Otani <sho@bbr.jp> Date: Wed Nov 17 00:07:03 2010 +1030 PS: fix embedding of grayscale jpegs https://bugs.freedesktop.org/show_bug.cgi?id=31632 (cherry picked from commit 653ceb517fe756b042a3cf8322a36cbfe71ddbd8) src/cairo-ps-surface.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) commit 4aabff8f6740e2027febd97c1863f7ba5a46cb92 Author: Andrea Canciani <ranma42@gmail.com> Date: Tue Dec 14 17:56:00 2010 +0100 path-bounder: Update current point after curve_to op Even if the curve_to is completely within the current extents box, the current point needs to be updated because the shape of following ops depends on the position of the current point. Fixes bug-extents. src/cairo-path-bounds.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 5996652364efa4fb4ae6c984ddf6ddad8868782b Author: Andrea Canciani <ranma42@gmail.com> Date: Tue Dec 14 20:15:28 2010 +0100 test: Add bug-extents Add a test for the computation of approximate extents used by most backends to esimate the region affected by drawing operations. Based on: http://lists.cairographics.org/archives/cairo/2010-December/021331.html test/Makefile.am | 5 +++ test/Makefile.sources | 1 + test/bug-extents.c | 59 ++++++++++++++++++++++++++++++++++++++ test/bug-extents.image16.ref.png | Bin 0 -> 7576 bytes test/bug-extents.ps.ref.png | Bin 0 -> 5844 bytes test/bug-extents.quartz.ref.png | Bin 0 -> 9310 bytes test/bug-extents.ref.png | Bin 0 -> 9162 bytes test/bug-extents.xlib.ref.png | Bin 0 -> 9234 bytes 8 files changed, 65 insertions(+), 0 deletions(-) commit f832ff7f22499bfa8e907f9fb059d56857d11e68 Author: Andrea Canciani <ranma42@gmail.com> Date: Sun Nov 28 16:58:20 2010 +0100 test: Fix ref images The corners of the boxes in these ref images were not correct. test/clip-stroke.image16.ref.png | Bin 1308 -> 1305 bytes test/clip-stroke.ref.png | Bin 1442 -> 1447 bytes test/clipped-group.image16.ref.png | Bin 281 -> 270 bytes test/clipped-group.ref.png | Bin 289 -> 289 bytes 4 files changed, 0 insertions(+), 0 deletions(-) commit ff35af3fd73e59ea29b1a322c833f7dd24b0b8bc Author: Andrea Canciani <ranma42@gmail.com> Date: Sun Nov 28 14:32:51 2010 +0100 image: Fix compositing of unaligned boxes The input of _fill_unaligned_boxes is (supposed to be) composed only of disjoint rectangles, that can safely be passed to the rectilinear span converter, but this function artificially introduces intersecting rectangles when drawing non-aligned boxes. Using non-intersecting rectangles is easy and makes the code correct. Fixes rectilinear-grid. Reviewed-by: Uli Schlachter <psychon@znc.in> src/cairo-image-surface.c | 22 ++++++++++++++-------- 1 files changed, 14 insertions(+), 8 deletions(-) commit 7b29f1d5d85ebb7e92e9759692233c80a4687a07 Author: Andrea Canciani <ranma42@gmail.com> Date: Fri Nov 26 17:55:35 2010 +0100 test: Add rectilinear-grid The rectilinear scan converter assumes disjoint rects as input, but cairo-image passes intersecting rectangles to it. This test shows that image and any backends passing through it for the rasterization (fallbacks, vector backends whose renderer is cairo-based) fail in compute the corners of intersecting rectangles correctly. test/Makefile.am | 2 + test/Makefile.sources | 1 + test/rectilinear-grid.c | 78 +++++++++++++++++++++++++++++++++ test/rectilinear-grid.image16.ref.png | Bin 0 -> 638 bytes test/rectilinear-grid.ref.png | Bin 0 -> 569 bytes 5 files changed, 81 insertions(+), 0 deletions(-) commit 9ec51baa779a30041ea944643d4d0b8333bb759b Author: Adrian Johnson <ajohnson@redneon.com> Date: Fri Nov 26 21:41:17 2010 +1030 PDF: Add missing clipper_reset (cherry picked from commit 2ae2be36d4551906fd4edbc8bf07aaa7fe0c93cf) src/cairo-pdf-surface.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 841a2df7359e2b491aed7ed8c043cce669357ae3 Author: Markus Stange <mstange@themasta.com> Date: Fri Nov 5 09:23:44 2010 +0100 Fix type of _cairo_memory_stream_destroy parameter In 9b9952ab4f64a476bbadfd3e6cf1e66c1137ccd7 _cairo_memory_stream_destroy was changed to take an unsigned long instead of unsigned int, and the two callsites in cairo-gl-shaders.c weren't updated. src/cairo-gl-shaders.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit b6a97499c71af60a3f15d131d51eb53fb21b48ff Author: Andrea Canciani <ranma42@gmail.com> Date: Tue Oct 5 10:36:38 2010 +0200 xcb: Do not return value in void function Sun Studio Compiler complains: "cairo-xcb-surface.c", line 585: void function cannot return value even if the returned value is void. Some minor code restructuring removes the issue. src/cairo-xcb-surface.c | 10 ++++------ 1 files changed, 4 insertions(+), 6 deletions(-) commit e71588c80d5c6112fa9f7c6ea369d90f9284199f Author: Andrea Canciani <ranma42@gmail.com> Date: Sun Oct 24 16:40:53 2010 +0200 test: Add romedalen images copyright information romedalen.png and romedalen.jpg have been bundled into the test suite without an explicit copyright notice. test/COPYING | 13 +++++++++++++ 1 files changed, 13 insertions(+), 0 deletions(-) commit 2b3d8de11a536d668084ea6d2bf295da1d1cdc11 Author: Andrea Canciani <ranma42@gmail.com> Date: Sat Oct 16 22:51:28 2010 +0200 Fix degenerate arcs Make sure that degenerate arcs become a move_to-line_to sequence instead of just a move_to. Fixes get-path-extents. src/cairo-arc.c | 4 ++++ src/cairo.c | 1 + 2 files changed, 5 insertions(+), 0 deletions(-) commit fafca7ace250e3f4f9c60584f0ddff187c690068 Author: Joerg Sonnenberger <joerg@NetBSD.org> Date: Tue Oct 12 22:07:37 2010 +0200 LD_PRELOAD is supported on DragonFly. configure.ac | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit c20d55eb1c1eb1c6f51a21c7eb205ba4c2c125e8 Author: Erik Zeek <zeekec@mad.scientist.com> Date: Thu Nov 4 17:57:03 2010 +0100 Fix build on gentoo The problem is probably caused by a change in the behavior of autoconf (2.67). See http://bugs.gentoo.org/336329 configure.ac | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 8ef5161da307361e20dad68df74512c5afcbb012 Author: Andrea Canciani <ranma42@gmail.com> Date: Sat Nov 6 15:46:48 2010 +0100 configure: Correct reporting of tee backend Since 9f33f8453b4949cfdc63169d3acd7238f89379c2 tee is not compiled in anymore by default. Reporting it as always enabled is misleading. build/configure.ac.features | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit a6b503961b7ffd6a0725ad7d98ec1c46e2f15f25 Author: Andrea Canciani <ranma42@gmail.com> Date: Mon Nov 22 23:41:33 2010 +0100 ps: Fix painting Painting of some pattern was broken because the paint operation was implemented as a fill to a rect containing the clip, but this rect was not transformed as appropriate (using the cairo_to_ps matrix). PDF simply fills the whole surface rect, so we implement the same behavior in PS. Fixes clip-group-shapes-circles, clip-stroke, linear-gradient-extend, linear-gradient-one-stop, radial-gradient-one-stop. src/cairo-ps-surface.c | 5 ++--- 1 files changed, 2 insertions(+), 3 deletions(-) commit b8347e33539402ef64d652bc0f67522e4d02d51c Author: Adrian Johnson <ajohnson@redneon.com> Date: Sun Nov 21 00:37:29 2010 +1030 PS: Fix regression - incorrect EPS bounding box https://bugs.freedesktop.org/show_bug.cgi?id=24688 (cherry picked from commit bb4055dac6a937b3412170a332b5effe4bbeff7d) src/cairo-analysis-surface.c | 40 ++++++++++------------------------------ 1 files changed, 10 insertions(+), 30 deletions(-) commit cfff4f30a0eaa29b817cb32616c2da5a27921332 Author: Adrian Johnson <ajohnson@redneon.com> Date: Sat Nov 20 23:54:00 2010 +1030 PS: Fix regression - missing page content in EPS output https://bugs.freedesktop.org/show_bug.cgi?id=24688 (cherry picked from commit d3746448d78fcedf8f8f9a7d0fca47f1bd6a5b67) src/cairo-ps-surface.c | 9 --------- 1 files changed, 0 insertions(+), 9 deletions(-) commit ed87ddddb3994f126e0f2d18fa23da6bc5ed579e Author: Adrian Johnson <ajohnson@redneon.com> Date: Sat Nov 20 00:50:04 2010 +1030 PS/PDF: Fix regression when changing page size to a larger size https://bugs.freedesktop.org/show_bug.cgi?id=24691 (cherry picked from commit e7c5f470436220668e50201d775a9fec47162a67) src/cairo-paginated-surface.c | 28 ++++++++++++++++++++++++++++ src/cairo-pdf-surface.c | 10 ++++++++-- src/cairo-ps-surface.c | 6 ++++++ 3 files changed, 42 insertions(+), 2 deletions(-) commit ccff76433e1cd068e5534d0ab633c27b0faf47d2 Author: Adrian Johnson <ajohnson@redneon.com> Date: Wed Nov 10 20:09:53 2010 +1030 PDF: Restrict ActualText to PDF version >= 1.5 The use of ActualText in a marked content sequence is a PDF 1.5 feature. A 'use_actual_text' flag linked to the PDF version has already been implemented in pdf-operators but for some reason this flag had not been used to control the use of ActualText. (cherry picked from commit 3afd7cd031ab9097e37c3e89d86ec41d015fdeb8) src/cairo-pdf-operators.c | 31 ++++++++++++++++++------------- 1 files changed, 18 insertions(+), 13 deletions(-) commit e0967ff83c24aaf6d6b3a93a627872820be9012b Author: Adrian Johnson <ajohnson@redneon.com> Date: Sat Nov 6 21:15:30 2010 +1030 Fix type1-fallback bbox (cherry picked from commit 74873c82242e9c124b69e05d0f8abdf78983d62d) src/cairo-type1-fallback.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit 1413a44f64982e5196ca338c7cee5dfe19cd4b40 Author: Adrian Johnson <ajohnson@redneon.com> Date: Sat Nov 6 18:44:54 2010 +1030 configure.ac.features: s/Meta/Recording/ (cherry picked from commit 8f2f5e5ad4f8e5f18da903865bb2d2afce3a544e) build/configure.ac.features | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit e9bb70d2dee4ef7a54e3971f09a08df30c2b5287 Author: Jeff Muizelaar <jmuizelaar@mozilla.com> Date: Fri Nov 5 11:40:00 2010 -0400 Fix degenerate vertical path bounds. 6b77567b6ef28710c7707ab82c7fa95c810152d1 made vertical path bounds with no area return extents of 0,0. This fixes the problem by not assuming degenerate path bounds are 0,0 src/cairo-path-bounds.c | 4 +++- test/get-path-extents.c | 40 ++++++++++++++++++++++++++++++++-------- 2 files changed, 35 insertions(+), 9 deletions(-) commit 91a6fe64236985d30f5794d760698deafd9e6511 Author: Andrea Canciani <ranma42@gmail.com> Date: Mon Nov 1 21:15:07 2010 +0100 image: Use correct size for allocation In 06e9caf86199e8261a07db6d4774628fa147728d the type of the variables was changed, but the type used to compute the allocation size was not. Fixes a crash in user-font-mask (test-fallback backend). (cherry picked from commit c7027c9d89d9a13d6cbc1727fc8513c908878db9) src/cairo-image-surface.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 83259f6ed60e00d0c25ca81c9ff9adfc017ebf5f Author: Benjamin Otte <otte@redhat.com> Date: Thu Oct 28 13:57:05 2010 +0200 build: Don't build cairo-fdr when the tee surface is off util/Makefile.am | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit efc2440526c609338d68354ddf38031d1fa7c2c4 Author: Adrian Johnson <ajohnson@redneon.com> Date: Thu Oct 28 21:21:00 2010 +1030 PDF: Don't use the currently set color after a 'Q' operator https://bugs.freedesktop.org/show_bug.cgi?id=31140 (cherry picked from commit e23bcfd4300870034f07b1ecd1bb4d2ac95d9785) src/cairo-pdf-surface.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit f47830dbbc34c7068ccdd8f7f9042e8734c9e408 Author: Adrian Johnson <ajohnson@redneon.com> Date: Sun Oct 24 11:32:41 2010 +1030 Type 1 subset: Fix glyph advance https://bugs.freedesktop.org/show_bug.cgi?id=31062 (cherry picked from commit 6dc0b19adb6da690ad5944623081b9cdb42de066) src/cairo-type1-subset.c | 30 +++++++++++++++--------------- 1 files changed, 15 insertions(+), 15 deletions(-) commit f747ea81fb91239690b1785bce9ed29cb58c9098 Author: Adrian Johnson <ajohnson@redneon.com> Date: Thu Oct 14 19:28:13 2010 +1030 PDF: Fix regression in EXTEND_NONE gradients The test for opaque gradients in _cairo_pdf_surface_add_pdf_pattern() must be identical to the test in _cairo_pdf_surface_emit_pattern_stops() other wise the PDF file will reference a smask that does not exist. The _cairo_pattern_is_opaque() test is too strict for PDF as PDF can draw EXTEND_NONE gradients with opaque color stops without requiring a smask. (cherry picked from commit 7a17ef31760c49b81fd2890814f5b2aeb8c6b3a3) src/cairo-pdf-surface.c | 15 ++++++++++++++- 1 files changed, 14 insertions(+), 1 deletions(-) commit 7450a3c8a7843334d6e16af3ecef88915b5d9f26 Author: Adrian Johnson <ajohnson@redneon.com> Date: Fri Oct 1 19:18:28 2010 +0930 pdf-operators: fix bug that was causing unnecessary repositioning of text This optimizes the output to increase the maximum amount of text that is emitted with a single Tj operator. (cherry picked from commit 165a14b5646d582781d119874f549ec9a02d7f53) src/cairo-pdf-operators-private.h | 1 + src/cairo-pdf-operators.c | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletions(-) commit 43c93f2b101f534f8aa4213403af3281fcdc17fb Author: Adrian Johnson <ajohnson@redneon.com> Date: Fri Oct 1 17:41:28 2010 +0930 Fix font metrics in PDF Type 1 fonts edcefa87 introduced a bug in the Type 1 font metrics in PDF files. (cherry picked from commit 3f817dcfd39ffdb73ac694fd90a47d9d3a42af74) src/cairo-type1-subset.c | 12 ++++++------ 1 files changed, 6 insertions(+), 6 deletions(-) commit 66ace8cd33c0ebe88972f0c4d5c0effeacb1cea3 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Sep 29 13:46:02 2010 +0100 image: The a8 in-place span compositing is only valid for SOURCE Fixes test/a8-clear. Reported-by: Jeremy Moles <jeremy@emperorlinux.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> src/cairo-image-surface.c | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-) commit 05faebd5845c68005f5b96428952faae5a67208f Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Sep 29 13:23:24 2010 +0100 test: Add a8-clear Reported-by: Jeremy Moles <jeremy@emperorlinux.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> test/Makefile.am | 1 + test/Makefile.sources | 1 + test/a8-clear.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++++ test/a8-clear.ref.png | Bin 0 -> 271 bytes 4 files changed, 66 insertions(+), 0 deletions(-) commit ac6fd51fe4e500973e0939983d00aa81c8acf556 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Sep 29 13:25:08 2010 +0100 image: Silence a compile warning cairo-image-surface.c: In function ‘_cairo_image_reset_static_data’: cairo-image-surface.c:1006: warning: old-style function definition Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> src/cairo-image-surface.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 75e2b7c7b52be6663fac05925b9b4cc5f3b42f9f Author: Tim Janik <timj@gtk.org> Date: Thu Sep 23 13:55:11 2010 +0200 cairo: docu fix for cairo_set_source_surface src/cairo.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 4cf5260e99e3e7588e45ee179c57b75588b95987 Author: Kouhei Sutou <kou@cozmixng.org> Date: Sun Sep 12 10:36:27 2010 +0900 xml: fix a typo to correct the indentation after <path></path> Signed-off-by: Kouhei Sutou <kou@cozmixng.org> src/cairo-xml-surface.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 0f070bd5ff9ad17b90852e8a7ba102c6b4b050f6 Author: Tomáš Chvátal <scarabeus@gentoo.org> Date: Sat Sep 11 22:55:23 2010 +0200 Fix posix calls in configure.ac test code. Fixes https://bugs.gentoo.org/show_bug.cgi?id=336779 Signed-off-by: Tomáš Chvátal <scarabeus@gentoo.org> configure.ac | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit f59771051badc2ea708437c5faa27d0895f787d6 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Aug 18 08:48:36 2010 +0100 drm: Add missing header file for tarball src/Makefile.sources | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) commit 8fca990be7fca609e834703e60dd888c13fc637f Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Sep 10 13:35:11 2010 +0100 cairo: Remove trailing comma from cairo_device_t Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=30115 Reported-by: Murray Cumming <murrayc@murrayc.com> src/cairo.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 291876ad3477330143bbb814ea72c658dc8ca584 Author: Andrea Canciani <ranma42@gmail.com> Date: Thu Sep 9 22:53:38 2010 +0200 test: do not leak resources Silence some leak reports by check-valgrind. test/subsurface-outside-target.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 8fda4ab1cc7f60196b232d194c33e592ecdec9b5 Author: Andrea Canciani <ranma42@gmail.com> Date: Thu Aug 26 11:15:46 2010 +0200 image: add _cairo_image_reset_static_data Image has static caches which needs to be reset to make cairo_debug_reset_static_data behave as expected. Silences a bunch of leak reports by check-valgrind. Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> src/cairo-debug.c | 2 ++ src/cairo-image-surface.c | 42 ++++++++++++++++++++++++++++++++++-------- src/cairoint.h | 3 +++ 3 files changed, 39 insertions(+), 8 deletions(-) commit ca775cbf5a7245092cabdda43db9d06e96613ff4 Author: Andrea Canciani <ranma42@gmail.com> Date: Thu Aug 26 11:13:51 2010 +0200 test: do not leak resources Silence two leak reports by check-valgrind. Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> test/linear-gradient-large.c | 1 + test/nil-surface.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletions(-) commit 2b6c4c2a64c585cb815089e83719e00b1cfc985f Author: Carlos Garcia Campos <carlosgc@gnome.org> Date: Thu Sep 9 11:28:03 2010 +0200 recording: Document CAIRO_HAS_RECORDING_SURFACE macro src/cairo-recording-surface.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-) commit d8f88cf3f97af6771a4d77bf81e1025eb7bcfd1d Author: Carlos Garcia Campos <carlosgc@gnome.org> Date: Thu Sep 9 11:00:42 2010 +0200 recording: Fix cairo_recording_surface_create() doc comments The name of the parameters in the docs should match the name of the function parameters. Added also return value docs. src/cairo-recording-surface.c | 10 +++++++--- 1 files changed, 7 insertions(+), 3 deletions(-) commit 737880260f1895667baf25bcc6814052e6a6a027 Author: Carlos Garcia Campos <carlosgc@gnome.org> Date: Thu Sep 9 10:57:13 2010 +0200 recording: Add section doc comments src/cairo-recording-surface.c | 10 +++++++--- 1 files changed, 7 insertions(+), 3 deletions(-) commit 1ddc1bfa01e4c17001504c886bc5fb97625f5861 Author: Carlos Garcia Campos <carlosgc@gnome.org> Date: Thu Sep 9 10:54:50 2010 +0200 doc: Add section for recording surface doc/public/cairo-docs.xml | 1 + doc/public/cairo-sections.txt | 7 +++++++ 2 files changed, 8 insertions(+), 0 deletions(-) commit a48eccbf77874e00a57ab7f1ab96ed0f359b3963 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Sep 7 13:58:29 2010 +0100 configure: Fix typo "(requires both --enable-xcb)" configure.ac | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit faeb6caaeba76c9797db0cd917bff4f102512d59 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Sep 6 18:40:27 2010 +0100 version: 1.10.1 open for bugfixing cairo-version.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit cb0bc64c16b3a38cbf0c622830c18ac9ea6e2ffe Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Sep 6 17:15:51 2010 +0100 version: 1.10.0 *release* /me faints with excitement. cairo-version.h | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 87fad104645c481ab027afbc9fa45c54cacbc9a7 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Sep 6 17:14:41 2010 +0100 NEWS: Sum up 2 years of development for 1.10.0 in 60 lines NEWS | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 61 insertions(+), 0 deletions(-) commit 04623ef9df7274d411a3b7f03129bf43e53e7086 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Sep 6 13:15:55 2010 +0100 test: Add subsurface-outside-target refs to REFERENCE_IMAGES test/Makefile.am | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit d5b2c2a12ebea33f4d108d4deec2e9111c8c7e12 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Sep 6 13:10:08 2010 +0100 test: Rename clip-fill-*-unbounded.image16 ref to match REFERENCE_IMAGES test/clip-fill-eo-unbounded.image16.ref.png | Bin 0 -> 2887 bytes test/clip-fill-eo-unbounded.image16.rgb24.ref.png | Bin 2887 -> 0 bytes test/clip-fill-nz-unbounded.image16.ref.png | Bin 0 -> 2887 bytes test/clip-fill-nz-unbounded.image16.rgb24.ref.png | Bin 2887 -> 0 bytes 4 files changed, 0 insertions(+), 0 deletions(-) commit cab9682f9dc4c99dcd51ddb66abd756e2ac7a63c Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Sep 6 12:24:47 2010 +0100 check: Ignore the documentation errors. Currently it is complaining about having documentation for unconfigured sections, ignore it for now. doc/public/check-doc-coverage.sh | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) commit 8127f1f5d52bb716dbd70efe096894f2a542f4a9 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Sep 6 12:24:14 2010 +0100 Bump pixman requirements to 0.18.4 for assorted fixes. README | 2 +- configure.ac | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 21a2f90cdef3d592c1d1614852fe3929ed2aa765 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Sep 2 13:19:26 2010 +0100 check: Make the actual error stand out doc/public/check-doc-coverage.sh | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) commit 8258532794d0579f6c1b825b8cfb9c8f7ced4369 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Sep 2 13:15:07 2010 +0100 Reduce the cairo_device_type_t to only hold the used entries. This should help clarify the documentation by not mentioning non-existent devices and prevent any assumed coupling between surface-type values and devices. src/cairo.h | 49 +++++------------------------- util/cairo-gobject/cairo-gobject-enums.c | 24 ++------------ 2 files changed, 12 insertions(+), 61 deletions(-) commit e3afbc1875d618c6d7e893971372be8f9889fc8b Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Sep 2 13:07:53 2010 +0100 check: Fix for link-time-optimisation src/check-def.sh | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit a9e055ff481303428cd9684dca826bc3f5d868c5 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Thu Sep 2 14:51:30 2010 +0100 freelist: Separate freelist inlines from the datatype in headers. The cairo-freelist-private.h header has a number of static inline functions which call hidden functions in libcairo. This poses a problem on Solaris where the native compiler compiles inline functions whether they are used or not, thereby adding the link time requirements on hidden functions from whatever code that includes cairo-freelist-private.h. Unfortunately the boilerplate code includes cairo-private headers and indirectly the freelist header, so linking the boilerplate helper library fails on Solaris. This patch separates the structure definitions from the function prototypes and static inlines in cairo-freelist-private.h by moving the datatypes to a new cairo-freelist-type-private.h. src/Makefile.sources | 1 + src/cairo-freelist-private.h | 28 +------------------ src/cairo-freelist-type-private.h | 54 +++++++++++++++++++++++++++++++++++++ src/cairo-xlib-display.c | 2 +- src/cairo-xlib-private.h | 2 +- 5 files changed, 58 insertions(+), 29 deletions(-) commit f5632d641c44a143386ca3b413e90ed3b1a85f89 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Thu Sep 2 13:55:55 2010 +0300 build: Remove stray backslash. A stray backslash bwetween two assignment lines apparently invokes a GNU make extension for conditional assignments. This patch fixes the build when using the native Solaris make. src/Makefile.sources | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 3a8b8fcc2a8a48cef49211c45723862f9fa8db23 Author: Benjamin Otte <otte@redhat.com> Date: Wed Sep 1 21:14:40 2010 +0200 gobject: Fix header defines util/cairo-gobject/cairo-gobject.h | 64 ++++++++++++++++++------------------ 1 files changed, 32 insertions(+), 32 deletions(-) commit 54a651564cdd2510d0a66f6720c4a45733ff3285 Author: Benjamin Otte <otte@redhat.com> Date: Wed Sep 1 18:47:16 2010 +0200 build: Work around caching not reevaluating uncached variables This is a somewhat crude hack to ensure that GOBJECT_CFLAGS/LIBS are properly cached. configure.ac | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit 28ba78a9716f3c105cdfb5f7519f2435dd9cb271 Author: Benjamin Otte <otte@redhat.com> Date: Wed Sep 1 18:46:46 2010 +0200 gobject: Fix pkgconfig file variable I confused % and $. I blame it on spec files. configure.ac | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 61a1835e40d0b6d786951143779077d16ed2486e Author: Benjamin Otte <otte@redhat.com> Date: Wed Sep 1 03:17:12 2010 +0200 subsurface: Fix acquire_source_surface for out-of-bounds surfaces See subsurface-outside-target test. src/cairo-surface-subsurface.c | 41 ++++++++++++++++++++++----------------- 1 files changed, 23 insertions(+), 18 deletions(-) commit f54c51e75c7abe872127d559e029bf4383439bca Author: Benjamin Otte <otte@redhat.com> Date: Wed Sep 1 02:10:51 2010 +0200 test: Add subsurface-outside-target This test defines the behavior of subsurfaces when they are created to be bigger than their target. test/Makefile.sources | 1 + test/subsurface-outside-target.argb32.ref.png | Bin 0 -> 2063 bytes test/subsurface-outside-target.c | 178 +++++++++++++++++++++++++ test/subsurface-outside-target.rgb24.ref.png | Bin 0 -> 1648 bytes 4 files changed, 179 insertions(+), 0 deletions(-) commit 6eab5ee10c111cf87dcf62e3f639f44cfd1e5cf6 Author: Maarten Bosmans <mkbosmans@gmail.com> Date: Sat Aug 28 13:39:21 2010 +0200 build: prefer libpng14 over older versions Also move libpng to the front of the list, so that the default version of the system is first checked. configure.ac | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 9f98ec6eb915204d59820cf57d32f347f9933517 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Sun Aug 29 00:05:51 2010 +0300 device: Refer the user to per-backend docs about devices. The exact semantics of the device API can't be spelled out out in the device API docs since the effects are so tied to the specific backend. To use a particular device in practice the user should refer to the backend docs. src/cairo-device.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) commit b0f65054b810d432238ff4986bee3f63e1fc46df Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Sun Aug 29 00:03:07 2010 +0300 subsurface: Add a note to the docs about usage restrictions. Make our assumptions about constructed subsurfaces explicit while we work out the correct semantics for the edge cases. src/cairo-surface-subsurface.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) commit 92fe2d370d120f4d9bc95e92209d1c1cec7e900b Author: Benjamin Otte <otte@redhat.com> Date: Sat Aug 28 17:12:45 2010 +0200 surface-offset: Use right variable in mask Use source/mask instead of their copies. The copies only get initialized if we actually need to translate things. src/cairo-surface-offset.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit df4b23ff74f3d22fb306f59cdba4dce6b0857cd2 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Fri Aug 27 20:26:06 2010 +0300 subsurface: Fix crash when acquiring a source image. The code is passing in the extra info received from the target surface's acquire_source() method to _cairo_surface_get_extents() rather than the acquired source surface itself. src/cairo-surface-subsurface.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 2d146867dc4d4e17da2fd1e4776f62aaa999d90f Author: Andrea Canciani <ranma42@gmail.com> Date: Thu Aug 26 14:50:34 2010 +0200 subsurface: Correct cloning condition 72644c6df2c2da1d77ca10a755dbb44bbd960c0d was using the wrong (inverted) condition to check if the subsurface extents are contained in the target extents. src/cairo-surface-subsurface.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) commit 72644c6df2c2da1d77ca10a755dbb44bbd960c0d Author: Andrea Canciani <ranma42@gmail.com> Date: Thu Aug 26 14:24:17 2010 +0200 subsurface: Avoid invalid accesses Whenever subsurface extents are not contained in the target extents, using the source image given by the target (with origin corrected by using an appropriate offset in the data pointer) is not a valid operation. Fallback to cloning in that case. src/cairo-surface-subsurface.c | 12 +++++++++++- 1 files changed, 11 insertions(+), 1 deletions(-) commit df4465bdd11e25a1ed942bc0fc8e7dc5d43f951f Author: Andrea Canciani <ranma42@gmail.com> Date: Thu Aug 26 14:23:04 2010 +0200 subsurface: Silence compiler warnings Commit d1c35f5e65d53f6b8b9060455335424ca0f44bd0 introduced two unused variable warnings. src/cairo-surface-subsurface.c | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-) commit d1c35f5e65d53f6b8b9060455335424ca0f44bd0 Author: Benjamin Otte <otte@redhat.com> Date: Thu Aug 26 13:55:02 2010 +0200 subsurface: Don't clip size to target size This clipping would modify the origin of the subsurface and then the creator has no easy way to figure this out. src/cairo-surface-subsurface.c | 3 --- 1 files changed, 0 insertions(+), 3 deletions(-) commit 174fb5f16f93887e2f319edd5b46efae3e7e93ad Author: Benjamin Otte <otte@redhat.com> Date: Thu Aug 26 13:21:04 2010 +0200 subsurface: Don't apply device transform twice for source/mask src/cairo-surface-offset.c | 12 ------------ 1 files changed, 0 insertions(+), 12 deletions(-) commit e79acf47a57b60c83d1f9491aac354161986b29b Author: Benjamin Otte <otte@redhat.com> Date: Thu Aug 26 12:54:25 2010 +0200 subsurface: Make CAIRO_SURFACE_TYPE_SUBSURFACE public src/cairo-analysis-surface.c | 2 +- src/cairo-image-surface.c | 2 +- src/cairo-pdf-surface.c | 4 ++-- src/cairo-ps-surface.c | 4 ++-- src/cairo-script-surface.c | 2 +- src/cairo-surface-subsurface.c | 4 ++-- src/cairo-types-private.h | 3 +-- src/cairo-xcb-surface-render.c | 4 ++-- src/cairo-xlib-surface.c | 2 +- src/cairo.h | 7 ++++++- src/drm/cairo-drm-i915-shader.c | 6 +++--- src/drm/cairo-drm-i965-shader.c | 6 +++--- 12 files changed, 25 insertions(+), 21 deletions(-) commit 40459dacb52587cc784faf2635e54797d3989408 Author: Benjamin Otte <otte@redhat.com> Date: Thu Aug 26 11:45:28 2010 +0200 subsurface: Don't crash when the device transform isn't integer Apply the transform before rounding to integer coordinates, so we can handle doubles easily. src/cairo-surface-subsurface.c | 10 ++++------ 1 files changed, 4 insertions(+), 6 deletions(-) commit e19b213e84ab8b8ead5e0c700e5b906590e22aa1 Author: Benjamin Otte <otte@redhat.com> Date: Thu Aug 26 11:18:29 2010 +0200 subsurface: Make subsurfaces their own type Do not try to hide being a subsurface. This would cause confusion when users where calling surface-type specific getters on subsurfaces. FIXME: We still need public API to access a subsurface's target though. src/cairo-surface-subsurface.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) commit e65bf64c4a6e2c7ff673449b8459b3150e438e21 Author: Benjamin Otte <otte@redhat.com> Date: Thu Aug 26 11:17:06 2010 +0200 subsurface: Properly account for device offsets in the target src/cairo-surface-subsurface.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) commit 8e9c4ea5890a4df3f463e592dc3aa429bb423608 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Aug 11 12:18:53 2010 +0100 Mark the context as invalid on the final cairo_destroy() We initialise the context to a non-error state upon creation, but after destroy there is a window of opportunity where the object is kept alive inside the context pool and the user could mistakenly keep on passing the zombie context into cairo functions. As all entry points need to check error status, flagging the context as an error object upon the final unreference prevents such misuse (until such as time as the context is reallocated). src/cairo.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit cd52378ae60ab2075d7e9ec7335e990b2f46059e Author: Andrea Canciani <ranma42@gmail.com> Date: Tue Aug 10 19:38:59 2010 +0200 test: Update linear-gradient-large ref image Make linear-gradient-large ref image match xlib gradients (both on nvidia and on macosx) and pixman gradients (when patched to compute the linear gradients using floating point math). test/linear-gradient-large.ref.png | Bin 3753 -> 4079 bytes 1 files changed, 0 insertions(+), 0 deletions(-) commit a7762e3d6570a6981d8fb74ecc6ae30391c39b89 Author: Krzysztof Kosiński <tweenk.pl@gmail.com> Date: Tue Aug 10 17:55:03 2010 +0200 tests: Add linear-gradient-large test Shows large rounding errors in Pixman when computing gradients. Added as a test to Cairo to catch similar issues in other backends. https://bugs.freedesktop.org/show_bug.cgi?id=29470 test/Makefile.am | 5 ++- test/Makefile.sources | 1 + test/linear-gradient-large.c | 67 ++++++++++++++++++++++++++++++++++++ test/linear-gradient-large.ref.png | Bin 0 -> 3753 bytes 4 files changed, 71 insertions(+), 2 deletions(-) commit 56ea51fdcc273531b5e86b921aad19237a1c9415 Author: Andrea Canciani <ranma42@gmail.com> Date: Mon Aug 9 20:23:50 2010 +0200 Replace insertion sort with mergesort in the scan converter Insertion sort can take up to O(n^2), mergesort is guaranteed to run in O(n*log(n)). An example showing bad performance for insertion sort is: https://bugs.freedesktop.org/show_bug.cgi?id=28067 The mergesort has been engineered to be fast even when working on cases where the insertion sort would have performed well and as expected it shows no changes in the benchmark cairo traces. src/cairo-tor-scan-converter.c | 138 ++++++++++++++++++++++++++++++---------- 1 files changed, 103 insertions(+), 35 deletions(-) commit a150371a5d10e03d6c0d781c6fac950a9ac6be18 Author: Nicolaus L Hepler <nlhepler@gmail.com> Date: Tue Aug 10 09:34:39 2010 +0200 ft-font: Make alpha mapping consistent Vertical RGB mapping previously forced opaque pixels. To be consistent with horizontal RGB/BGR and vertical BGR it should use an alpha equal to the mid channel (green). src/cairo-ft-font.c | 7 ------- 1 files changed, 0 insertions(+), 7 deletions(-) commit 73470862cbc5895147d5c58ca2647f539e8fe67c Author: David Schleef <ds@schleef.org> Date: Tue Aug 10 02:37:38 2010 +0200 perf: Fix README to say cairo-perf-micro perf/README | 12 ++++++------ 1 files changed, 6 insertions(+), 6 deletions(-) commit df8f96423429915ef1648310fce8b5aed0917c0a Author: Benjamin Otte <otte@redhat.com> Date: Tue Aug 10 01:24:30 2010 +0200 build: Fudge the build system some more so it handles extra libs Add NONPKGCONFIG_EXTRA_LIBS that are only put into the generated pc file but not used when linking. This is now used to add -lcairo-gobject to the cairo-gobject.pc file. build/configure.ac.features | 3 +++ configure.ac | 2 +- src/cairo-features-uninstalled.pc.in | 2 +- src/cairo-features.pc.in | 2 +- 4 files changed, 6 insertions(+), 3 deletions(-) commit 01325ad767acf6213135a0bad895de233324f745 Author: Benjamin Otte <otte@redhat.com> Date: Tue Aug 10 00:11:25 2010 +0200 gobject: Include the extra library in the pkgconfig file configure.ac | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 8fb91dc3f6b691f91c322cec4b1d0ee4dbebd69c Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Tue Aug 10 00:53:53 2010 +0300 script: Fix script backend build. The flight data recorders were missing an include of cairo-tee.h ever since cairo-tee.h became an optional backend. util/cairo-fdr/fdr.c | 1 + util/cairo-sphinx/fdr.c | 1 + 2 files changed, 2 insertions(+), 0 deletions(-) commit 766832364904dbf5b8a67ebc1600d2ec45d2734f Author: Andrea Canciani <ranma42@gmail.com> Date: Mon Aug 9 18:47:13 2010 +0200 perf: Improve calibration Make the loops count depend on the actual calibration_loops/calibration_time instead of calibration_loops/calibration_max_time. This avoids having some tests take much less/more than the wanted time per iteration (I was having some tests taking about 1 second, other taking about 7 seconds when the ms_per_iteration was 2000) Spend 0.5-1 times the time wanted for each iteration in calibration, increase the accuracy of loops count. Just making the loops count be the correct ratio doesn't guarantee that the iteration time is accurate. By actually measuring iteration times until it gets greater than 1/4 of the wanted time, the total sum is bound to be <= the wanted iteration time and last calibration time is between 1/4 and 1/2 of the wanted time, so it should give a very accurate loop count. perf/cairo-perf-micro.c | 17 ++++++++--------- 1 files changed, 8 insertions(+), 9 deletions(-) commit 046b642db0782ab5e2a5c82988b21e05afe8e716 Author: Rich Walsh <DragText@E-vertise.Com> Date: Sat Aug 7 16:30:59 2010 +0300 os2: Restore surface type checking in the get_extents method. src/cairo-os2-surface.c | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletions(-) commit 78bdd87b7545f8e85632ac301a69da145727fcec Author: Rich Walsh <DragText@E-vertise.Com> Date: Sat Aug 7 16:22:26 2010 +0300 os2: Fix clipping to bounds when blitting pixels. The bounds checks on the rectangle to blit were done after converting target/source to inclusive/noninclusive coordinates rather than before, potentially causing an off-by-one in the sizes, since the same logic was applied to both inclusive and non-inclusive coordinates. This patch enforces bounds up front. Thread "OS/2 surface fixes" on cairo-l: http://lists.cairographics.org/archives/cairo/2010-July/020343.html src/cairo-os2-surface.c | 64 ++++++++++++++++++++-------------------------- 1 files changed, 28 insertions(+), 36 deletions(-) commit d0284687b32161212d6bc52309e2d5bb516dc3e8 Author: Rich Walsh <DragText@E-vertise.Com> Date: Sat Aug 7 03:53:24 2010 +0300 os2: Tweak an inline declaration. C99 and cairo prefers "static inline <return type>" rather than "static <return type> inline". Thread "OS/2 surface fixes" on cairo-l: http://lists.cairographics.org/archives/cairo/2010-July/020343.html src/cairo-os2-surface.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit cb30340064a2ff24dc408e185c5a309a14f6c78c Author: Rich Walsh <DragText@E-vertise.Com> Date: Sat Aug 7 03:33:10 2010 +0300 os2: Consolidate error paths of cairo_os2_surface_create(). Use a single code path to release the resources acquired for a surface that's been partially constructed, rather than have multiple error exits which each release the resources acquired so far. Thread "OS/2 surface fixes" on cairo-l: http://lists.cairographics.org/archives/cairo/2010-July/020343.html src/cairo-os2-surface.c | 120 +++++++++++++++++++++++----------------------- 1 files changed, 60 insertions(+), 60 deletions(-) commit 66e3d650fe90754c811195c75579ac7a3512b7be Author: Rich Walsh <DragText@E-vertise.Com> Date: Sat Aug 7 03:12:12 2010 +0300 os2: Document ownership of OS/2 objects passed to surfaces. Clarify the documentation for cairo_os2_surface_create() and cairo_os2_surface_set_hwnd() to note that the ownership of the presentation space and window respectively remains with the caller. Thread "OS/2 surface fixes" on cairo-l: http://lists.cairographics.org/archives/cairo/2010-July/020343.html src/cairo-os2-surface.c | 23 ++++++++++++----------- 1 files changed, 12 insertions(+), 11 deletions(-) commit 01525271544d5b88f87027e470fa85038d59bf8d Author: Rich Walsh <DragText@E-vertise.Com> Date: Sat Aug 7 03:08:21 2010 +0300 os2: Don't fake an Anchor Block when one isn't needed. The code was being tricky about passing in a HAB to DevOpenDC() even though one isn't needed at all under OS/2. Pass in NULL instead. Thread "OS/2 surface fixes" on cairo-l: http://lists.cairographics.org/archives/cairo/2010-July/020343.html src/cairo-os2-surface.c | 16 +++------------- 1 files changed, 3 insertions(+), 13 deletions(-) commit 883d9725e0f844e7d5cc4c50c75a812b5435702b Author: Rich Walsh <DragText@E-vertise.Com> Date: Sat Aug 7 03:01:56 2010 +0300 os2: Fix buffer allocator behaviour on arithmetic overflow. On arithmetic overflow the buffer allocator would attempt to allocate zero bytes instead of failing the allocation. Depending on the implementation of the underlying allocator being proxied, this may result in an allocation of a zero length buffer, causing all kinds of grief. This patch causes arithmetic overflows to explicitly fail the allocation. Thread "OS/2 surface fixes" on cairo-l: http://lists.cairographics.org/archives/cairo/2010-July/020343.html src/cairo-os2-surface.c | 54 ++++++++++++++++++++--------------------------- 1 files changed, 23 insertions(+), 31 deletions(-) commit b54037828c5b338b2f1dcbe48201225b258c1e1e Author: Rich Walsh <DragText@E-vertise.Com> Date: Sat Aug 7 02:40:20 2010 +0300 os2: Fix blitting 24 bpp pixel data. There's a format mismatch between cairo's pixel formats and OS/2 24 bpp data: the individual pixels in OS/2 take only three bytes per pixel, but there needs to be padding between lines to make the start of a line always be aligned at a DWORD boundary. This patch fixes the format conversion code to include the required padding between rows. Thread "OS/2 surface fixes" on cairo-l: http://lists.cairographics.org/archives/cairo/2010-July/020343.html src/cairo-os2-private.h | 1 + src/cairo-os2-surface.c | 118 +++++++++++++++++++++++++++-------------------- 2 files changed, 69 insertions(+), 50 deletions(-) commit 5aadecb3ac03d379c2c8113566fa8062843df42e Author: Rich Walsh <DragText@E-vertise.Com> Date: Sat Aug 7 02:30:01 2010 +0300 os2: New API to create surfaces without a persistent HPS. It's not always necessary to create a presentation space (HPS) for surface tied to a window, as the user may have one already. This patch introduces three new functions to create a surface without an HPS and let the user manage an HPS associated with the surface. Thread "OS/2 surface fixes" on cairo-l: http://lists.cairographics.org/archives/cairo/2010-July/020343.html Mozilla Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=557159 src/cairo-os2-surface.c | 142 ++++++++++++++++++++++++++++++++++++++++++++++- src/cairo-os2.h | 14 +++++ 2 files changed, 153 insertions(+), 3 deletions(-) commit 9669faa936fe38da3615d7831e423befa5ecdfad Author: Benjamin Otte <otte@redhat.com> Date: Sun Aug 8 17:23:05 2010 +0200 gl: Handle errors from _cairo_gl_gradient_render() Thanks Andrea for finding this. src/cairo-gl-gradient.c | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-) commit e31b56e020df806aa6180cd2efa0a34e55e5adaf Author: Benjamin Otte <otte@redhat.com> Date: Sun Aug 8 14:45:24 2010 +0200 configure: Fix gobject handling 1) Explicitly depend on glib, too. 2) Don't link gobject into libcairo proper (thanks Joonas for noticing). configure.ac | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit ae2b7b13cd5fdeaee44496056bb99f497346e262 Author: Andrea Canciani <ranma42@gmail.com> Date: Wed Aug 4 14:22:23 2010 +0200 pattern: Simplify degenerate linear pattern to solid colors Degenerate linear patterns are considered clear if they have EXTEND_NONE, the average of the first and the last stop if they are EXTEND_PAD, the weighted average of the stops (based on the size of the interpolation range in which they are active, just like integrating over the whole interpolation range and taking the average) if they are EXTEND_REPEAT or EXTEND_REFLECT. Fixes degenerate-linear-gradient src/cairo-pattern.c | 119 ++++++++++++++++++++++++++++++- test/degenerate-linear-gradient.ref.png | Bin 232 -> 322 bytes 2 files changed, 117 insertions(+), 2 deletions(-) commit d54a5a9fc90857448954d6cbe725d4665efa3d45 Author: Andrea Canciani <ranma42@gmail.com> Date: Wed Aug 4 14:16:34 2010 +0200 pattern: Add gradient degeneracy testing functions Introduce two new (private) functions for testing the degeneracy of linear and radial gradients and use them instead of verbose (and error-prone) tests. src/cairo-pattern.c | 21 +++++++++++++++++---- 1 files changed, 17 insertions(+), 4 deletions(-) commit 63434bc43819e2c7d4db568e82f5a9a7dfb0418d Author: Andrea Canciani <ranma42@gmail.com> Date: Wed Aug 4 14:22:01 2010 +0200 gstate: Correct comment src/cairo-gstate.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 28cd511fb974f886ae65e588413afcfc220a1a7c Author: Andrea Canciani <ranma42@gmail.com> Date: Sat Aug 7 22:55:46 2010 +0200 Correct color stops comparison function Two clear stops with different "underlying" colors must be considered different, since when interpolated with non-clear colors they will produce different results. src/cairo-color.c | 25 ++++--------------------- 1 files changed, 4 insertions(+), 21 deletions(-) commit f71a618bd2604c8f0beaf4816a38a54f6f271bd9 Author: Andrea Canciani <ranma42@gmail.com> Date: Sat Aug 7 21:32:09 2010 +0200 Fix configuration if gobject is absent Autodetect gobject and only use it if present. Its absence is not to be considered a failure since it's not required. build/Makefile.win32.features | 2 +- configure.ac | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 661f4859cdbc0394ed0a9db34ced0f4e2bbe78ff Author: Benjamin Otte <otte@redhat.com> Date: Sat Aug 7 20:05:42 2010 +0200 Add cairo-gobject library This library is supposed to contain GType declarations for Cairo types. It is also meant to support gobject-introspection binding creation. boilerplate/Makefile.win32.features | 12 + build/Makefile.win32.features | 1 + build/Makefile.win32.features-h | 3 + configure.ac | 10 + src/Makefile.win32.features | 16 + util/Makefile.am | 4 + util/cairo-gobject/Makefile.am | 15 + util/cairo-gobject/cairo-gobject-enums.c | 519 ++++++++++++++++++++++++++++ util/cairo-gobject/cairo-gobject-structs.c | 87 +++++ util/cairo-gobject/cairo-gobject.h | 186 ++++++++++ 10 files changed, 853 insertions(+), 0 deletions(-) commit fc4e8f036326da1839ec5320eba60823e7efc2db Author: Søren Sandmann Pedersen <ssp@redhat.com> Date: Sat Aug 7 12:10:49 2010 -0400 Update documentation to reflect that rgb565 is no longer deprecated. src/cairo.h | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) commit de606af5d673df193fc07fbd047ba2cec82d2f1c Author: Andrea Canciani <ranma42@gmail.com> Date: Tue Jul 27 18:04:36 2010 +0200 quartz: improve backend detection Quartz previously crashed with NULL backends and didn't check for the backend type when getting a CGContext from a quartz surface, returning meaningless data for subsurfaces. src/cairo-quartz-surface.c | 24 +++++++++++++++--------- 1 files changed, 15 insertions(+), 9 deletions(-) commit 056ce165c4377e9cf93fd7a06b6b0d5d4d98cb8c Author: Andrea Canciani <ranma42@gmail.com> Date: Tue Jul 27 18:50:55 2010 +0200 quartz: fix solid masking fallback Falling back when painting would ignore the alpha value (which is needed to have the correct mask opacity). _cairo_quartz_surface_paint_cg doesn't fallback, so the usual mask fallback path is now taken, as expected. src/cairo-quartz-surface.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit bdeade14ea86fb5f3ff17accd71711d2c40b1b33 Author: Andrea Canciani <ranma42@gmail.com> Date: Wed Jul 28 19:33:53 2010 +0200 quartz: fix stroking with unbounded operators Self-intersecting strokes were drawn incorrectly when an unbounded operator was used, since the fixup operation also cleared the intersection. Fixes clip-stroke-unbounded. src/cairo-quartz-surface.c | 14 ++++++++------ 1 files changed, 8 insertions(+), 6 deletions(-) commit 8f38d2aa29bc0d69690cbf542c4a2b497b7a0c0a Author: Andrea Canciani <ranma42@gmail.com> Date: Thu Jul 29 10:45:59 2010 +0200 test: improve clip-*-unbounded tests Merge clip-*-unbounded tests and add self-intersections to the paths that are drawn. This exposes a bug in the unbounded fixup code in quartz. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> test/Makefile.am | 35 ++-- test/Makefile.sources | 3 +- test/clip-draw-unbounded.c | 184 ++++++++++++++++++++ test/clip-fill-eo-unbounded.argb32.ref.png | Bin 0 -> 3668 bytes test/clip-fill-eo-unbounded.image16.rgb24.ref.png | Bin 0 -> 2887 bytes test/clip-fill-eo-unbounded.quartz.argb32.ref.png | Bin 0 -> 3366 bytes test/clip-fill-eo-unbounded.quartz.rgb24.ref.png | Bin 0 -> 3061 bytes test/clip-fill-eo-unbounded.rgb24.ref.png | Bin 0 -> 3201 bytes test/clip-fill-eo-unbounded.svg12.rgb24.xfail.png | Bin 0 -> 3636 bytes ...p-fill-eo-unbounded.xlib-fallback.rgb24.ref.png | Bin 0 -> 3208 bytes test/clip-fill-eo-unbounded.xlib.argb32.ref.png | Bin 0 -> 3693 bytes test/clip-fill-eo-unbounded.xlib.rgb24.ref.png | Bin 0 -> 3198 bytes test/clip-fill-nz-unbounded.argb32.ref.png | Bin 0 -> 3668 bytes test/clip-fill-nz-unbounded.image16.rgb24.ref.png | Bin 0 -> 2887 bytes test/clip-fill-nz-unbounded.quartz.argb32.ref.png | Bin 0 -> 3366 bytes test/clip-fill-nz-unbounded.quartz.rgb24.ref.png | Bin 0 -> 3061 bytes test/clip-fill-nz-unbounded.rgb24.ref.png | Bin 0 -> 3201 bytes test/clip-fill-nz-unbounded.svg12.rgb24.xfail.png | Bin 0 -> 3636 bytes ...p-fill-nz-unbounded.xlib-fallback.rgb24.ref.png | Bin 0 -> 3208 bytes test/clip-fill-nz-unbounded.xlib.argb32.ref.png | Bin 0 -> 3693 bytes test/clip-fill-nz-unbounded.xlib.rgb24.ref.png | Bin 0 -> 3198 bytes test/clip-fill-unbounded.argb32.ref.png | Bin 1607 -> 0 bytes test/clip-fill-unbounded.c | 105 ----------- test/clip-fill-unbounded.image16.ref.png | Bin 1204 -> 0 bytes test/clip-fill-unbounded.pdf.argb32.ref.png | Bin 1244 -> 0 bytes test/clip-fill-unbounded.ps.argb32.xfail.png | Bin 1244 -> 0 bytes test/clip-fill-unbounded.quartz.argb32.ref.png | Bin 1436 -> 0 bytes test/clip-fill-unbounded.quartz.rgb24.ref.png | Bin 1368 -> 0 bytes test/clip-fill-unbounded.rgb24.ref.png | Bin 1304 -> 0 bytes test/clip-fill-unbounded.svg12.argb32.xfail.png | Bin 1601 -> 0 bytes test/clip-fill-unbounded.svg12.rgb24.xfail.png | Bin 1601 -> 0 bytes ...clip-fill-unbounded.xlib-fallback.rgb24.ref.png | Bin 1438 -> 0 bytes test/clip-fill-unbounded.xlib.argb32.ref.png | Bin 1759 -> 0 bytes test/clip-fill-unbounded.xlib.rgb24.ref.png | Bin 1430 -> 0 bytes test/clip-stroke-unbounded.argb32.ref.png | Bin 1694 -> 3545 bytes test/clip-stroke-unbounded.c | 102 ----------- test/clip-stroke-unbounded.image16.ref.png | Bin 1255 -> 0 bytes test/clip-stroke-unbounded.image16.rgb24.ref.png | Bin 0 -> 2778 bytes test/clip-stroke-unbounded.pdf.argb32.xfail.png | Bin 1351 -> 0 bytes test/clip-stroke-unbounded.ps.argb32.ref.png | Bin 1351 -> 0 bytes test/clip-stroke-unbounded.quartz.argb32.ref.png | Bin 1493 -> 3362 bytes test/clip-stroke-unbounded.quartz.rgb24.ref.png | Bin 1356 -> 3061 bytes test/clip-stroke-unbounded.rgb24.ref.png | Bin 1372 -> 3063 bytes test/clip-stroke-unbounded.svg12.argb32.xfail.png | Bin 1697 -> 0 bytes test/clip-stroke-unbounded.svg12.rgb24.xfail.png | Bin 1697 -> 3569 bytes ...ip-stroke-unbounded.xlib-fallback.rgb24.ref.png | Bin 1437 -> 3123 bytes test/clip-stroke-unbounded.xlib.argb32.ref.png | Bin 1785 -> 3620 bytes test/clip-stroke-unbounded.xlib.rgb24.ref.png | Bin 1442 -> 3109 bytes 48 files changed, 204 insertions(+), 225 deletions(-) commit 142df6f9638e10d0712e092d902f7670965a88f9 Author: Benjamin Otte <otte@redhat.com> Date: Fri Jul 30 22:04:44 2010 +0200 configure: Disable xml backend by default We don't want to enable it by default when nobody uses it. boilerplate/Makefile.win32.features | 2 +- build/Makefile.win32.features | 2 +- configure.ac | 2 +- src/Makefile.win32.features | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) commit 9f33f8453b4949cfdc63169d3acd7238f89379c2 Author: Benjamin Otte <otte@redhat.com> Date: Fri Jul 30 21:48:14 2010 +0200 configure: Disable tee backend by default We don't want to enable it by default when nobody uses it. boilerplate/Makefile.win32.features | 4 +++- build/Makefile.win32.features | 1 + build/Makefile.win32.features-h | 2 ++ configure.ac | 2 +- src/Makefile.win32.features | 8 +++++++- src/cairo-surface.c | 4 ++++ test/api-special-cases.c | 6 ++++++ 7 files changed, 24 insertions(+), 3 deletions(-) commit 9f4d677e2a6dd0bfbbbe20de39f92177bfdfc0e8 Author: Benjamin Otte <otte@redhat.com> Date: Fri Jul 30 22:15:55 2010 +0200 tee: Move definitions into separate header src/Makefile.sources | 6 +++- src/cairo-tee-surface.c | 2 + src/cairo-tee.h | 66 ++++++++++++++++++++++++++++++++++++++++++++++ src/cairo.h | 17 ------------ test/api-special-cases.c | 3 ++ 5 files changed, 75 insertions(+), 19 deletions(-) commit 14639e6b8525ada2cb93abb1d70dde827b7bf9e0 Author: Kristian Høgsberg <krh@bitplanet.net> Date: Thu Jun 17 18:29:48 2010 -0400 egl: Use EGL_KHR_surfaceless_opengl extension when available This lets us avoid creating a throwaway pbuffer just to make the context current. src/cairo-egl-context.c | 58 ++++++++++++++++++++++++++++++---------------- 1 files changed, 38 insertions(+), 20 deletions(-) commit b6fd673d37e1c8962d15c0e0e59322a2002fc399 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jul 26 13:15:38 2010 +0100 version: 1.9.15 post-snapshot bump cairo-version.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit ed8c6f42540f03a62fd64ad83b7c397528092232 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jul 26 12:53:44 2010 +0100 version: 1.9.14 snapshot cairo-version.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 81094cf4622302ebaa9b3f328f5d2a56a1c07a64 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jul 26 12:52:56 2010 +0100 NEWS: 1.9.14 NEWS | 27 +++++++++++++++++++++++++++ 1 files changed, 27 insertions(+), 0 deletions(-) commit c1fcbd0322f86327ddd89c2eef2facbc74045629 Author: Andrea Canciani <ranma42@gmail.com> Date: Mon Jul 26 11:21:48 2010 +0200 quartz: fix REFLECT radial gradients The interpolation range of repeating radial gradients can safely be reflected around any integer (previously 0), but for reflect-extended radial gradients can only be reflected around odd integers if the appearance is to be the same, thus reflecting around 1 is correct for both. Fixes radial-gradient. src/cairo-quartz-surface.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 3898e46d1de19848efeddb442dcf7f7663530256 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jul 23 09:41:48 2010 +0100 image: Compensate mask origins for glyph clipping Fixes the regression in bitmap-font and large-font pointed out by Andrea Canciani since ef067933. src/cairo-image-surface.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 53fcfc781eeee949abc03cf90048a2228f7e0a63 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Wed Jul 21 22:39:40 2010 +0300 build: Typos in comments. Fix inline "dnl" strings left over from a string substitution "--" -> "dnl". build/configure.ac.pthread | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit fd1e731c9d0af307ebde4d888866c95bd6ebe66d Author: Hib Eris <hib@hiberis.nl> Date: Wed Jul 21 22:34:05 2010 +0300 build: Fix pthread detection code when there isn't one. The code was testing the output variable $use_pthread rather than the input variable $enable_pthread when checking that pthreads were actually found when requested. build/configure.ac.pthread | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 108b1c7825116ed3f93aa57384bbd3290cdc9181 Author: Karl Tomlinson <karlt+@karlt.net> Date: Sat Jul 17 13:08:53 2010 +1200 clip: consider gstate target extents in _cairo_gstate_copy_clip_rectangle_list Fixes https://bugs.freedesktop.org/show_bug.cgi?id=29125 To be consistent with _cairo_gstate_clip_extents, the context's clip should be intersected with the target surface extents (instead of only using them when there is no clip). Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> src/cairo-clip.c | 72 ++++++++++++++++++--------------------------------- src/cairo-gstate.c | 14 +++++++++- test/get-clip.c | 16 +++++++++++ 3 files changed, 55 insertions(+), 47 deletions(-) commit b79ea8a6cab8bd28aebecf6e1e8229d5ac017264 Author: Karl Tomlinson <karlt+@karlt.net> Date: Sat Jul 17 11:46:25 2010 +1200 clip: consider all_clipped in _cairo_clip_get_extents If the gstate clip in _cairo_gstate_int_clip_extents() has all_clipped set (and path NULL), then it returns the gstate target extents instead of an empty rectangle. If the target is infinite, then it says the clip is unbounded. Fixes https://bugs.freedesktop.org/show_bug.cgi?id=29124 Tested-by test/get-clip Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> src/cairo-clip.c | 5 +++++ test/get-clip.c | 5 ++++- 2 files changed, 9 insertions(+), 1 deletions(-) commit 6a5115901381fe9c81a8a311e267c2a00e2a1d04 Author: Karl Tomlinson <karlt+@karlt.net> Date: Sat Jul 17 10:47:42 2010 +1200 test: return CAIRO_TEST_FAILURE from get-clip preamble on failure https://bugs.freedesktop.org/show_bug.cgi?id=29120 test/get-clip.c | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) commit f2fa15680ec3ac95cb68d4957557f06561a7dc55 Author: Karl Tomlinson <karlt+@karlt.net> Date: Sat Jul 17 10:39:50 2010 +1200 clip: return empty clip from _cairo_clip_copy_rectangle_list when all_clipped Fixes https://bugs.freedesktop.org/show_bug.cgi?id=29122 Tested by test/get-clip Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> src/cairo-clip.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) commit 33ac2035876aeb9215ca0bdaaeea5265fcee61f8 Author: Karl Tomlinson <karlt+@karlt.net> Date: Sat Jul 17 10:13:22 2010 +1200 test: use the surface size expected in get-clip phase "No clip set" https://bugs.freedesktop.org/show_bug.cgi?id=29121 test/get-clip.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) commit bac5c28a18af5d43c96f0b64d1c7235da3f02779 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Jul 17 10:09:14 2010 +0100 boilerplate: Offset the xlib window An idea courtesy of Benjamin Otte is to stress the drivers a bit more by not rendering to 0,0. Under various circumstances rendering to a Window is mapped onto the Screen root Window with a collection of offsets and clips by X. It is easy for the driver to make a mistake and misrender... boilerplate/cairo-boilerplate-xlib.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 51b0c21f02a8f0f5d7f44da05e49d7f8f3bf8bc7 Author: Benjamin Otte <otte@redhat.com> Date: Fri Jul 16 19:49:53 2010 +0200 build: Add explicit dependcy to cxx lib Otherwise the build will fail because it doesn't add the dependency manually. https://bugs.freedesktop.org/show_bug.cgi?id=29114 boilerplate/Makefile.am | 3 +++ src/Makefile.am | 2 +- 2 files changed, 4 insertions(+), 1 deletions(-) commit 6b92d5a0f9fce28f99b07177454da00f984fdb43 Author: Oleg Romashin <romaxa@gmail.com> Date: Fri Jul 16 09:47:23 2010 +0100 qt: Use native glyph rendering. Remove the hack of using the xlib surface to do glyph rendering and use the new interface introduced with Qt4.7, or else fallback to image rendering with freetype. Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> [2 files changed, 35 insertions(+), 140 deletions(-) \o/] src/cairo-qt-surface.cpp | 169 ++++++++++------------------------------------ src/cairo-xlib-surface.c | 6 -- 2 files changed, 35 insertions(+), 140 deletions(-) commit f53f072a223c3fbdeba315f5cba755cba498e121 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jul 12 18:53:29 2010 +0100 clip: Do the NULL check before the dereference. Breakage introduced in the commit earlier today. src/cairo-clip.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit ef0679333da881bd83b0bb4db546ea9c68f81f89 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jul 12 16:07:27 2010 +0100 image: Manually clip against bounds when rendering directly This is path is slightly peculiar in that it explicitly avoid the intermediate mask and the geometry is not pre-clipped. This in conjunction with the previous commit fixes: Clip doesn't work for text https://bugs.freedesktop.org/show_bug.cgi?id=29008 which is captured in test/partial-clip-text. src/cairo-image-surface.c | 23 +++++++++++++++++++---- 1 files changed, 19 insertions(+), 4 deletions(-) commit 679e5a600bd7dae6cbde83070fb1f7355f8025a7 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jul 12 16:06:32 2010 +0100 Differentiate between reducing clip to composite extents and a rectangle This is required for handling glyphs when rendering directly to the surface. src/cairo-clip-private.h | 4 ++++ src/cairo-clip.c | 22 +++++++++++++++------- src/cairo-gl-surface.c | 4 ++-- src/cairo-image-surface.c | 10 +++++----- src/cairo-surface-fallback.c | 10 +++++----- src/cairo-xcb-surface-render.c | 10 +++++----- src/drm/cairo-drm-i915-glyphs.c | 2 +- src/drm/cairo-drm-i915-surface.c | 8 ++++---- src/drm/cairo-drm-i965-glyphs.c | 2 +- src/drm/cairo-drm-i965-surface.c | 8 ++++---- 10 files changed, 46 insertions(+), 34 deletions(-) commit 8546a877889bfafc056c867bc9aea25e9fdcdef0 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jul 12 16:27:29 2010 +0100 test: Add partial-clip-text This exercises a bug found by Igor Nikitin: https://bugs.freedesktop.org/show_bug.cgi?id=29008 test/Makefile.am | 3 ++ test/Makefile.sources | 1 + test/partial-clip-text.c | 50 ++++++++++++++++++++++++++++++++++++ test/partial-clip-text.ps.ref.png | Bin 0 -> 107 bytes test/partial-clip-text.ref.png | Bin 0 -> 175 bytes test/partial-clip-text.svg.ref.png | Bin 0 -> 173 bytes 6 files changed, 54 insertions(+), 0 deletions(-) commit 53ee897449dca497d6a3d6dc90b87fea8027cc44 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jul 12 12:37:31 2010 +0100 version: Post-snapshot bump to 1.9.13 cairo-version.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit aa4cd8287f47b4538e765e1b48dcbac19813a8a2 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jul 12 12:12:12 2010 +0100 version: 1.9.12 snapshot cairo-version.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 53b129dd8aecf4e2bd8b7d2cd27b91370c6705e9 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jul 12 12:11:42 2010 +0100 NEWS for 1.9.12. NEWS | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 56 insertions(+), 0 deletions(-) commit 01380f3a56b28a388d2876780f33516ecd16ee16 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jul 12 11:49:53 2010 +0100 test: Missing REFERENCE_IMAGES test/Makefile.am | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit 459b8ae660eb49a87ffb9da31f305718a2b4f11f Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jul 12 11:05:57 2010 +0100 Make distcheck happy. src/cairo-fontconfig-private.h | 2 ++ src/cairo-skia.h | 2 +- src/glew/GL/glew.h | 2 ++ src/glew/GL/glxew.h | 2 ++ test/api-special-cases.c | 5 +++-- 5 files changed, 10 insertions(+), 3 deletions(-) commit d56b1718025f8b2354b5b1eb99af41df70a6c590 Author: Andrea Canciani <ranma42@gmail.com> Date: Mon Jul 12 10:36:24 2010 +0200 test: Add halo quartz reference images When quartz-font is enabled, halo and halo-transform fonts have a different shape. test/halo-transform.quartz.ref.png | Bin 0 -> 14360 bytes test/halo.quartz.ref.png | Bin 0 -> 8601 bytes 2 files changed, 0 insertions(+), 0 deletions(-) commit 9107895789fc721ee6ea2ccb2ce3ab99fb978caa Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Mon Jul 12 11:03:15 2010 +0300 test: Add comments explaining the bug in bug-seams. Where two rasterization methods meet, havoc occurs. test/bug-seams.c | 22 ++++++++++++++++++++++ 1 files changed, 22 insertions(+), 0 deletions(-) commit 0152db263b9b12547fadb5d080913fcbb696d34e Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Mon Jul 12 10:36:00 2010 +0300 build: Sync up autogenerated win32 build files. boilerplate/Makefile.win32.features | 9 +++++++++ build/Makefile.win32.features | 1 + build/Makefile.win32.features-h | 3 +++ src/Makefile.win32.features | 9 +++++++++ 4 files changed, 22 insertions(+), 0 deletions(-) commit 06ffb7df716652baba96960cd59e1a59f4bd1ac1 Author: Eric Anholt <eric@anholt.net> Date: Sat Jul 10 14:19:50 2010 -0700 gl: Only use a mat3 for the transformation for gradients coordinates. No point in passing in a column of zeroes that we multiply by zero, or the row that we drop on the floor. We could do even better by just passing in a 3x2, at the expense of adding a language version dependency (or just pass in 2 vectors). No significant performance difference. src/cairo-gl-shaders.c | 28 +++++++++++++--------------- 1 files changed, 13 insertions(+), 15 deletions(-) commit 1e7485f8e5b6fd9b26f06838d8e7a35e073c394b Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Mon Jul 12 00:23:11 2010 +0300 trace: Avoid stdbool.h C99ism. There is no <stdbool.h> on old Solaris without invoking c99 mode explicitly. util/cairo-trace/trace.c | 184 +++++++++++++++++++++++---------------------- 1 files changed, 94 insertions(+), 90 deletions(-) commit 97529a3713d899468fb3ca7a1c3f75a09bd1b215 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Sun Jul 11 23:54:21 2010 +0300 build: Avoid shifting shell parameters that aren't there. The shift primitive of the Solaris 9 Bourne shell doesn't like it if we try to shift more formal arguments than are there. This causes the compare_versions function in autogen.sh to croak when the actual and compared versions differ in the number of components. autogen.sh | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit dd6026b613aa5414a128727995f2a4f79284072a Author: Benjamin Otte <otte@redhat.com> Date: Sun Jul 11 20:44:40 2010 +0200 doc: Make the necessity of flush/mark_dirty more obvious src/cairo-surface.c | 32 ++++++++++++++++++++++++++++++++ 1 files changed, 32 insertions(+), 0 deletions(-) commit 8a1944f45b9c9056088246d4f2e72d60a59fd5c4 Author: Benjamin Otte <otte@redhat.com> Date: Sun Jul 11 19:11:15 2010 +0200 check: Allow unprefix type names in the title Some documentation sections use the type name as the title, and we don't want to use that title as a link. src/check-doc-syntax.sh | 4 +--- 1 files changed, 1 insertions(+), 3 deletions(-) commit f0466ecf7db859a80b779b7fb4381e3c9409c39b Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Sun Jul 11 21:57:40 2010 +0300 build: Fix typo in pthread test program. Missing a semicolon after pthread_cleanup_push. Incredibly only openbsd 4.5 minded. build/configure.ac.pthread | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 3f1d7de8e1620ad385930477b63454107dd8ffd3 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Sun Jul 11 17:29:07 2010 +0300 build: Fix regression provoked by newer autoconf and dodgy configuring. We're not supposed to be redefining PACKAGE_VERSION, PACKAGE_... from the configure generated confdefs.h. This patch rudely adds paper over the problem. The compiler warnings are a problem for us since our checking of various compiler flags assumes that no news is good news, and that any warning messages are due to the flags under test. The regression appears when using an autoconf >= 2.64, at least, but not with 2.61. The same issue appears in the pthread test because our conftest unconditionally #defines _GNU_SOURCE, but autoconf ends up doing that in the confdefs.h. build/configure.ac.noversion | 13 ++++++++++++- build/configure.ac.pthread | 2 ++ 2 files changed, 14 insertions(+), 1 deletions(-) commit fca8977219b857e2e61dd86ac39ae9f40086f306 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Sun Jun 27 03:03:17 2010 +0300 build: Rework pthread detection. Use two levels of pthread support: a minimal level used to build cairo itself, and a full level to build threaded apps which want to use cairo. The minimal level tries to use pthread stubs from libc if possible, but falls back to the full level if that's not possible. We use CFLAGS=-D_REENTRANT LIBS=-lpthread to find a real pthread library since that seems to work on every unix-like test box we can get our hands on. build/ax-pthread.m4 | 283 ----------------------------------------- build/configure.ac.pthread | 251 ++++++++++++++++++++++++++++++++++++ configure.ac | 47 +++---- test/Makefile.am | 16 +-- test/cairo-test-trace.c | 10 +- test/cairo-test.c | 6 +- util/cairo-sphinx/Makefile.am | 3 +- util/cairo-sphinx/sphinx.c | 4 + util/cairo-trace/Makefile.am | 4 +- 9 files changed, 291 insertions(+), 333 deletions(-) commit 47c35e5e86a3c99fc39afe2e13a7c92d5247ee1e Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Sun Jun 27 01:14:03 2010 +0300 build: Purge CAIRO_CC_TRY_LINK_FLAG. Use CAIRO_CC_TRY_FLAG instead in the one place where we used CAIRO_CC_TRY_LINK_FLAG and make the build system one macro smaller. build/aclocal.cairo.m4 | 21 --------------------- build/configure.ac.warnings | 2 +- 2 files changed, 1 insertions(+), 22 deletions(-) commit d2f5592e0e0d316cfc40ec676ee6e7f4e2a699fb Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Sun Jun 27 01:11:13 2010 +0300 build: Factor out a more pliable CAIRO_CC_TRY_LINK_WITH_ENV_SILENT. Introduce a new CAIRO_CC_TRY_LINK_WITH_ENV_SILENT macro for running generic link tests with arbitrary CFLAGS/LIBS/LDFLAGS and no muttering of autoconf messages. Rewrite the previous CAIRO_CC_TRY_FLAG in terms of it. build/aclocal.cairo.m4 | 31 +++++++++++++++++++++++++------ 1 files changed, 25 insertions(+), 6 deletions(-) commit 120b78ada7eed6424f07a688854657d0c3ad68f8 Author: Benjamin Otte <otte@redhat.com> Date: Sun Jul 11 18:48:38 2010 +0200 build: Split boilerplate lib generation into two so's Same thing as what was previously done for libcairo.so: Build an intermediate lib for the (potential) C++ stuff. boilerplate/Makefile.am | 31 ++++++++++++++++++++++++------- boilerplate/Makefile.sources | 7 ++----- 2 files changed, 26 insertions(+), 12 deletions(-) commit d6362a0d76753cb6f85f0dbd567a3ec7b7b08696 Author: Benjamin Otte <otte@redhat.com> Date: Sun Jul 11 16:01:44 2010 +0200 qt: Define cairo-qt's API as C symbols That way, the C linker doesn't mess up when linking libcairo.so. src/cairo-qt.h | 12 ++++-------- 1 files changed, 4 insertions(+), 8 deletions(-) commit 5d4a4775c8b091b947b52cc8f7e1e48a5eaea007 Author: Benjamin Otte <otte@redhat.com> Date: Sun Jul 11 15:41:56 2010 +0200 build: Fix typo that makes C++ libs not build src/Makefile.am | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 9b9952ab4f64a476bbadfd3e6cf1e66c1137ccd7 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Jul 10 11:13:07 2010 +0100 Convert mime data length to use unsigned long What we want to use is size_t, but we don't want the implied POSIX dependency. However, POSIX does say that size_t is an unsigned integer that is no longer than a long, so it would appear safe to use an unsigned long as a replacement. Safer at least than unsigned int. src/cairo-image-info-private.h | 6 +++--- src/cairo-image-info.c | 4 ++-- src/cairo-output-stream-private.h | 2 +- src/cairo-output-stream.c | 2 +- src/cairo-pdf-surface.c | 18 +++++++++--------- src/cairo-png.c | 2 +- src/cairo-ps-surface.c | 2 +- src/cairo-script-surface.c | 6 +++--- src/cairo-surface.c | 4 ++-- src/cairo-svg-surface.c | 6 +++--- src/cairo-types-private.h | 2 +- src/cairo-win32-printing-surface.c | 10 +++++----- src/cairo.h | 4 ++-- util/cairo-trace/trace.c | 6 +++--- 14 files changed, 37 insertions(+), 37 deletions(-) commit eb85ab998b606144daf025285968a5d6031b9aa6 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Jul 10 10:43:40 2010 +0100 subsurface: Don't assume we ever own the target. Andrea pointed out that snapshots can be shared, and so the subsurface should not be calling finish even on a snapshot. src/cairo-surface-subsurface-private.h | 1 - src/cairo-surface-subsurface.c | 17 ++++++++--------- 2 files changed, 8 insertions(+), 10 deletions(-) commit 59c83117d77f58e9cb64aaa6b572fab62fb31c6b Author: Benjamin Otte <otte@redhat.com> Date: Fri Jul 9 18:55:11 2010 +0200 build: Commit new versions of autogenerate Windows build files The recent commits to the build system changed a bunch of stuff in there, so update the files. boilerplate/Makefile.win32.features | 92 +++++++++++++++++++++++++++++++---- build/Makefile.win32.features-h | 1 - src/Makefile.win32.features | 92 +++++++++++++++++++++++++++++++---- 3 files changed, 164 insertions(+), 21 deletions(-) commit bf117e4ea7c89dadcb5a358bb47c0f213cc67461 Author: Benjamin Otte <otte@redhat.com> Date: Fri Jul 9 18:43:38 2010 +0200 build: fix glew include Currently wether internal glew is built is dependant on wether the tarball in use was built with internal glew or not. And that's not how it should be. configure.ac | 8 ++++---- src/Makefile.sources | 11 +++++++---- 2 files changed, 11 insertions(+), 8 deletions(-) commit 0bd704bd1e92b274209aeda6de88c7e75ffa81be Author: Benjamin Otte <otte@redhat.com> Date: Fri Jul 9 17:15:02 2010 +0200 build: Remove wrong flags from libcairo_cxx.la They're useful for the final so, but not for an intermediate noinst lib. src/Makefile.am | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit faceffd5beb4297299175945660522d8f1f5f2cb Author: Benjamin Otte <otte@redhat.com> Date: Fri Jul 9 16:58:18 2010 +0200 build: copy/paste failure: Don't build libcxx.la src/Makefile.am | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit dbb386d3c0aa9e7534d333cf3dbcfc2aaeac05d3 Author: Benjamin Otte <otte@redhat.com> Date: Fri Jul 9 12:49:10 2010 +0200 gl: Use unsigned int instead of GLuint GLuint is not defined in cairo-gl.h. If unsigned int is not compatible enough to GLuint, we might consider to use #include <GL/gl.h> instead. src/cairo-gl-surface.c | 2 +- src/cairo-gl.h | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) commit f7fc8569a797356d5e93ad67aae4eca31e6835cd Author: Benjamin Otte <otte@redhat.com> Date: Fri Jul 9 12:29:35 2010 +0200 build: Fix C++ issues with automake This is an attempt to fix the broken situation we've been in where automake links libcairo.la with c++ because it might potentially maybe include C++ files. Those potential files only exist in Chris' throwaway backends (skia, qt) and the BeOS backend, so for 99.99% of cases, these backends are not needed and linking with c++ is overkill. Also, no one wants to have libcairo.so link to libstdc++. This patch fixes that in mutliple steps: 1) Add build infrastructure to distinguish between C and C++ backends. This is done by allowing to specify backend_sources as well as backend_cxx_sources variables in Makefile.sources. 2) Optionally build a libcairo_cxx.la noinst library This intermediate library is built for C++ backends only and therefor linked using c++. It is then linked into the final libcairo.la. This does not require c++, so the linking of libcairo.la is done with cc. This also works around various weirdnesses that the current build system exposes, where it assumes cisms when in fact using c++ semantics, like not detecting c++ properly or: https://bugzilla.redhat.com/show_bug.cgi?id=606523 build/configure.ac.features | 7 ++++++- configure.ac | 10 ++++++++++ src/Makefile.am | 20 +++++++++++++++++++- src/Makefile.am.analysis | 4 ++-- src/Makefile.sources | 6 +++--- 5 files changed, 40 insertions(+), 7 deletions(-) commit df6d49f6eaf334d5a2de8bdd90919278071ab868 Author: Benjamin Otte <otte@redhat.com> Date: Fri Jul 9 10:29:30 2010 +0200 build: Get rid of $(foo_files) Makefile.am variables They're unused, and less variables make the build system easier to understand. build/configure.ac.features | 1 - src/Makefile.am | 1 - 2 files changed, 0 insertions(+), 2 deletions(-) commit ce530b2802683fe6c5289367ef03018f4081a2da Author: Benjamin Otte <otte@redhat.com> Date: Fri Jul 9 04:24:51 2010 +0200 doc: Add "@Since: 1.10" tags to device docs src/cairo-device.c | 14 ++++++++++++++ src/cairo.h | 2 ++ 2 files changed, 16 insertions(+), 0 deletions(-) commit c1fed693020c96126cdc697ddd22567398369b04 Author: Benjamin Otte <otte@redhat.com> Date: Fri Jul 9 04:20:42 2010 +0200 gl: Remove double ** from some comments gtk-doc doesn't like that unless it's a real gtk-doc comment. And it wasn't. src/cairo-gl-composite.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 5c73b371ae31f230210987941eec2db49d2e02be Author: Benjamin Otte <otte@redhat.com> Date: Fri Jul 9 04:20:06 2010 +0200 doc: Document remaining cairo-device functions src/cairo-device.c | 32 ++++++++++++++++++++++++++++++++ 1 files changed, 32 insertions(+), 0 deletions(-) commit 9877c1932a44f7e5300d6fcd99c19748aa5a4828 Author: Benjamin Otte <otte@redhat.com> Date: Fri Jul 9 03:52:45 2010 +0200 doc: Add more documentation for devices Add general docs and document acquire/release. I'm not happy with the documentation yet. In particular, I have 2 issues: 1) The threading guarantees Cairo provides are missing. 2) There's no docs on which Cairo functions do acquire devices. I guess I'll have to fix them later. src/cairo-device.c | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 86 insertions(+), 0 deletions(-) commit 739d6e35fa5632b80b888d6475f2fdb6be6054a6 Author: Benjamin Otte <otte@redhat.com> Date: Fri Jul 9 03:04:27 2010 +0200 doc: Clarify that cairo_surface_get_device() can return NULL src/cairo-surface.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 65d0590b041835fb466f4a7073910ef1383d9e77 Author: Benjamin Otte <otte@redhat.com> Date: Fri Jul 9 02:23:13 2010 +0200 doc: Copy docs for standard device APIs Copied from the surface equivalents src/cairo-device.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 42 insertions(+), 0 deletions(-) commit 8a08b6fa5288f376688730c66ae9219d01180f42 Author: Benjamin Otte <otte@redhat.com> Date: Fri Jul 9 02:21:00 2010 +0200 doc: Remove the <TITLE> declarations This information was duplicated. It exists as the "@Title" of the SECTION inline documentation already. doc/public/cairo-sections.txt | 28 ---------------------------- 1 files changed, 0 insertions(+), 28 deletions(-) commit 5e76bc6deb9fd4dc7a0f9181d3941ba55ce89c56 Author: Benjamin Otte <otte@redhat.com> Date: Fri Jul 9 01:10:24 2010 +0200 doc: Add missing region documentation src/cairo-region.c | 25 +++++++++++++++++++++++++ src/cairo.h | 13 +++++++++++++ 2 files changed, 38 insertions(+), 0 deletions(-) commit 57da730d286f643c8f68b445907f7cdd1f53e5de Author: Benjamin Otte <otte@redhat.com> Date: Thu Jul 8 23:44:35 2010 +0200 doc: Fix a syntax issue in quartz-font gtkdoc A missing empty line caused the long description to be part of @See_Also. Ooops. src/cairo-quartz-font.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit fb03eba44f1ae7dd76dd3db82bfb55b06b0932ae Author: Andrea Canciani <ranma42@gmail.com> Date: Thu Jul 8 20:06:08 2010 +0200 test: Add quartz functions to api-special-cases test test/api-special-cases.c | 19 +++++++++++++++++++ 1 files changed, 19 insertions(+), 0 deletions(-) commit 59aab0bdc24838252850034cee36ed756f3c3e2a Author: Andrea Canciani <ranma42@gmail.com> Date: Thu Jul 8 20:05:13 2010 +0200 test: fix typo test/api-special-cases.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit b870cc030d8e0eb6309695e5a101c802f688cf40 Author: Benjamin Otte <otte@redhat.com> Date: Thu Jul 8 13:05:18 2010 +0200 doc: Move tmpl/ docs to inline docs I did this manually so I could review the docs at the same time. If anyone finds typos or other mistakes I did, please complain to me (or better: fix them). doc/public/cairo-sections.txt | 4 +- doc/public/tmpl/.gitignore | 3 - doc/public/tmpl/cairo-atsui.sgml | 21 - doc/public/tmpl/cairo-beos.sgml | 22 - doc/public/tmpl/cairo-font-face.sgml | 116 ------ doc/public/tmpl/cairo-font-options.sgml | 199 --------- doc/public/tmpl/cairo-ft.sgml | 87 ---- doc/public/tmpl/cairo-image.sgml | 127 ------ doc/public/tmpl/cairo-matrix.sgml | 169 -------- doc/public/tmpl/cairo-paths.sgml | 263 ------------ doc/public/tmpl/cairo-pattern.sgml | 350 ---------------- doc/public/tmpl/cairo-pdf.sgml | 101 ----- doc/public/tmpl/cairo-png.sgml | 96 ----- doc/public/tmpl/cairo-ps.sgml | 144 ------- doc/public/tmpl/cairo-quartz-fonts.sgml | 52 --- doc/public/tmpl/cairo-quartz.sgml | 64 --- doc/public/tmpl/cairo-scaled-font.sgml | 227 ----------- doc/public/tmpl/cairo-status.sgml | 98 ----- doc/public/tmpl/cairo-surface.sgml | 326 --------------- doc/public/tmpl/cairo-svg.sgml | 91 ----- doc/public/tmpl/cairo-text.sgml | 319 --------------- doc/public/tmpl/cairo-transforms.sgml | 132 ------ doc/public/tmpl/cairo-types.sgml | 43 -- doc/public/tmpl/cairo-user-fonts.sgml | 169 -------- doc/public/tmpl/cairo-version.sgml | 205 ---------- doc/public/tmpl/cairo-win32-fonts.sgml | 106 ----- doc/public/tmpl/cairo-win32.sgml | 101 ----- doc/public/tmpl/cairo-xcb-xrender.sgml | 26 -- doc/public/tmpl/cairo-xcb.sgml | 26 -- doc/public/tmpl/cairo-xlib-xrender.sgml | 60 --- doc/public/tmpl/cairo-xlib.sgml | 147 ------- doc/public/tmpl/cairo.sgml | 674 ------------------------------- src/cairo-beos-surface.cpp | 10 + src/cairo-font-face.c | 17 + src/cairo-font-options.c | 12 + src/cairo-ft-font.c | 25 ++ src/cairo-image-surface.c | 21 + src/cairo-matrix.c | 23 + src/cairo-misc.c | 20 + src/cairo-path.c | 9 + src/cairo-pattern.c | 17 + src/cairo-pdf-surface.c | 17 + src/cairo-png.c | 18 + src/cairo-ps-surface.c | 17 + src/cairo-quartz-font.c | 17 + src/cairo-quartz-surface.c | 17 + src/cairo-scaled-font.c | 10 + src/cairo-surface.c | 47 +++ src/cairo-svg-surface.c | 17 + src/cairo-types-private.h | 8 + src/cairo-user-font.c | 22 + src/cairo-version.c | 156 +++++++ src/cairo-win32-font.c | 17 + src/cairo-win32-surface.c | 24 ++ src/cairo-xcb-surface-render.c | 13 + src/cairo-xcb-surface.c | 13 + src/cairo-xlib-surface.c | 40 ++ src/cairo.c | 57 +++ 58 files changed, 666 insertions(+), 4566 deletions(-) commit 65a1e351330106ee0af9f6f0df06b82954341ee6 Author: Benjamin Otte <otte@redhat.com> Date: Thu Jul 8 03:28:05 2010 +0200 doc: Remove CAIRO_FORMAT_RGB16_565 from hidden symbols list It's part of the cairo_format_t documentation now. doc/public/cairo-sections.txt | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) commit e7594aebce6007bfa2027ba2655875db6c036e73 Author: Benjamin Otte <otte@redhat.com> Date: Thu Jul 8 03:21:45 2010 +0200 doc: Fix some consistency issues that confuse gtk-doc src/cairo-region.c | 16 +++++++++++++--- src/cairo.h | 16 ++++++++++++++-- 2 files changed, 27 insertions(+), 5 deletions(-) commit da2663a0aa1e3f0a6b2f6ae2e9952ac27dec3f5d Author: Benjamin Otte <otte@redhat.com> Date: Thu Jul 8 03:14:42 2010 +0200 doc: Add list of new symbol in Cairo 1.10 doc/public/cairo-docs.xml | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit a106aa86a3267b4886f7eabdc4b07bb394e11531 Author: Benjamin Otte <otte@redhat.com> Date: Thu Jul 8 03:13:20 2010 +0200 doc: add --name-space option to gtkdoc-mkdb This sorts function names in new symbols lists way better. doc/public/Makefile.am | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 71d17e4b1f1cb83bc605d72d8419d4bfb824c828 Author: Benjamin Otte <otte@redhat.com> Date: Thu Jul 8 02:42:39 2010 +0200 drm: Fix Makefile for drm_xr Use cairo_drm_xr_sources/headers for the drm_xr stuff. This makes it work correctly in gtk-doc instead of conditionally adding it to cairo_drm_sources/headers. src/Makefile.sources | 10 ++++------ 1 files changed, 4 insertions(+), 6 deletions(-) commit 4b3e488cebeeace02eae1164ed12caa93d7c5847 Author: Benjamin Otte <otte@redhat.com> Date: Thu Jul 8 02:42:06 2010 +0200 skia: Add cairo-skia.h as a public header src/Makefile.sources | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 2a546286da5fe7203846d99a4a3d732c73e62db5 Author: Benjamin Otte <otte@redhat.com> Date: Thu Jul 8 02:20:17 2010 +0200 doc: Add a section about regions doc/public/cairo-docs.xml | 1 + doc/public/cairo-sections.txt | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 0 deletions(-) commit ab1f6d1af7c0e47077013edd58e93fa9fc6f2b5c Author: Benjamin Otte <otte@redhat.com> Date: Thu Jul 8 01:41:27 2010 +0200 doc: Add missing surface APIs doc/public/cairo-sections.txt | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 90bf273a38856d178e90721168b8b076f79fbf38 Author: Benjamin Otte <otte@redhat.com> Date: Thu Jul 8 01:39:37 2010 +0200 doc: Add a section for cairo_device_t doc/public/cairo-docs.xml | 1 + doc/public/cairo-sections.txt | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 0 deletions(-) commit 60e4f28d091df8ac6b898448eb52fae9ca920d5d Author: Benjamin Otte <otte@redhat.com> Date: Thu Jul 8 01:39:07 2010 +0200 doc: Add cairo_in_clip() to cairo_t section doc/public/cairo-sections.txt | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 6843186b729b20acddccd36184d2c5a7b5525d2e Author: Benjamin Otte <otte@redhat.com> Date: Thu Jul 8 01:38:43 2010 +0200 doc: Add cairo_rectangle_int_t to the general types list doc/public/cairo-sections.txt | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit c54dff82d3055529b7663dcff7a970cae919a9e0 Author: Benjamin Otte <otte@redhat.com> Date: Thu Jul 8 01:33:42 2010 +0200 glew: The headers are private, not public src/Makefile.sources | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 4252e3b8f915fc23611f1a667bf7bc1bb6a21dfd Author: Benjamin Otte <otte@redhat.com> Date: Thu Jul 8 01:32:25 2010 +0200 doc: Add drm and glew to the ignored directories This reduces the number of unused symbols to a reasonable size. ;) doc/public/Makefile.am | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 729d00341c26d46d82359014df97472a469e49a4 Author: Benjamin Otte <otte@redhat.com> Date: Thu Jul 8 13:57:43 2010 +0200 gl: Fix compile error after rebase failure src/cairo-gl-surface.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 292423c73376a7f9b84c9e3e578c242f486e921b Author: Colin Walters <walters@verbum.org> Date: Wed Jul 7 15:46:33 2010 -0400 Support NOCONFIGURE environment variable This is taken from gnome-common; it can be convenient for builders to separate the autogen from the configure stage. autogen.sh | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) commit 9e6c151af810886e94372ac8e4878915059c6c14 Author: Kristian Høgsberg <krh@bitplanet.net> Date: Thu Jun 17 18:19:39 2010 -0400 gl: Add new cairo-gl surface constructor to create surface for texture src/cairo-gl-private.h | 2 + src/cairo-gl-surface.c | 111 ++++++++++++++++++++++++++++++++++++++++++----- src/cairo-gl.h | 4 ++ 3 files changed, 105 insertions(+), 12 deletions(-) commit 4c91bb9a221bc8e3d65a96365bbd1157b3f4e612 Author: Benjamin Otte <otte@redhat.com> Date: Tue Jul 6 17:27:18 2010 +0200 region: Add cairo_region_xor() and cairo_region_xor_rectangle() gdk_region_xor() was a quite often used function in GDK and now that GDKe uses cairo regions, it seems like a worthwhile addition to Cairo. src/cairo-region.c | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++ src/cairo.h | 6 ++++ src/cairoint.h | 2 + 3 files changed, 88 insertions(+), 0 deletions(-) commit 82de6336d88be43de759b94634e87b9e4a8391b1 Author: Benjamin Otte <otte@redhat.com> Date: Tue Jul 6 00:48:36 2010 +0200 test: Add note about how to fix failures to api-special-cases test/api-special-cases.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) commit 75f269b14e1e4cdadd8c08566a07b2460ae3364b Author: Benjamin Otte <otte@redhat.com> Date: Tue Jul 6 00:41:12 2010 +0200 test: Add documentation to the api-special-cases test Hopefully people add other backend APIs to the testsuite. test/api-special-cases.c | 27 +++++++++++++++++++++++++++ 1 files changed, 27 insertions(+), 0 deletions(-) commit 398870e64a18f32f1854cb19f64c34e2b1987140 Author: Benjamin Otte <otte@redhat.com> Date: Tue Jul 6 00:21:38 2010 +0200 xlib: Setters should set finished surfaces into an error status Caught by api-special-cases test src/cairo-xlib-surface.c | 18 ++++++++++++++---- 1 files changed, 14 insertions(+), 4 deletions(-) commit 6e562d1448eb70b7269f8f2f280719aa2aeb3ce7 Author: Benjamin Otte <otte@redhat.com> Date: Tue Jul 6 00:20:57 2010 +0200 xcb: Setters should set finished surfaces into an error status Caught by api-special-cases test src/cairo-xcb-surface.c | 10 ++++++++-- 1 files changed, 8 insertions(+), 2 deletions(-) commit fa070704966f10e7264778a3ffb401054a68e8f7 Author: Benjamin Otte <otte@redhat.com> Date: Tue Jul 6 00:20:36 2010 +0200 test: Add xcb and xlib functions to api-special-cases test test/api-special-cases.c | 91 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 91 insertions(+), 0 deletions(-) commit c4068fe9414bad663f77c030ac96fa4b4cba87ba Author: Benjamin Otte <otte@redhat.com> Date: Mon Jul 5 23:14:33 2010 +0200 test: Add ps, pdf and svg to the api-special-cases test test/api-special-cases.c | 103 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 103 insertions(+), 0 deletions(-) commit 3e008e8ab0a1c5254bd1d8a58c9e9a89846fe7ac Author: Benjamin Otte <otte@redhat.com> Date: Mon Jul 5 23:14:19 2010 +0200 svg: Set error when extracting from finished surface Caught by api-special-cases test src/cairo-svg-surface.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-) commit 2e66cbaee2efc4a8eb2117f945d68e2816349cfe Author: Benjamin Otte <otte@redhat.com> Date: Mon Jul 5 23:10:12 2010 +0200 ps: Allow specifying if errors on extract_surface should be set Getters should not set errors on passed in input. So we don't. Caught by api-special-cases test src/cairo-ps-surface.c | 39 ++++++++++++++++++++++----------------- 1 files changed, 22 insertions(+), 17 deletions(-) commit f5dfc3ce6eab3bf836f2d7f7cf72d2834c42d72f Author: Benjamin Otte <otte@redhat.com> Date: Mon Jul 5 23:08:08 2010 +0200 ps: Set error when extracting from finished surface Caught by api-special-cases test src/cairo-ps-surface.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-) commit 106357f6e28467f6db02e8d69c4aea459aca781c Author: Benjamin Otte <otte@redhat.com> Date: Mon Jul 5 23:07:24 2010 +0200 pdf: Set error when extracting from finished surface Caught by api-special-cases test src/cairo-pdf-surface.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-) commit 702aa19fdae8bd511c4374f580dde6503afd3341 Author: Benjamin Otte <otte@redhat.com> Date: Mon Jul 5 22:50:44 2010 +0200 gl: Fail properly when called with finished functions Caught by api-special-cases test src/cairo-gl-surface.c | 12 +++++++++++- 1 files changed, 11 insertions(+), 1 deletions(-) commit b87be76bdfcbd329c79a9f11b24d22010ad15dde Author: Benjamin Otte <otte@redhat.com> Date: Mon Jul 5 22:50:18 2010 +0200 test: Add gl functions to the tests test/api-special-cases.c | 39 ++++++++++++++++++++++++++++++++++++++- 1 files changed, 38 insertions(+), 1 deletions(-) commit 448653e7b9938100c3f2e30e026fbc4d9de7d0d5 Author: Benjamin Otte <otte@redhat.com> Date: Mon Jul 5 22:41:43 2010 +0200 Call _cairo_error() when setting the FINISHED error on surfaces src/cairo-surface-subsurface.c | 2 +- src/cairo-surface.c | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) commit 19da8e138d317c1770d8bbd21a49c657d954f126 Author: Benjamin Otte <otte@redhat.com> Date: Mon Jul 5 22:40:54 2010 +0200 tee: Add proper error handling Caught by api-special-cases src/cairo-tee-surface.c | 15 +++++++++++++++ 1 files changed, 15 insertions(+), 0 deletions(-) commit a9f30fc1f0c3e50715468b09707477973bf5268b Author: Benjamin Otte <otte@redhat.com> Date: Mon Jul 5 22:30:55 2010 +0200 test: Add recording and tee surface functions to api-special-cases test/api-special-cases.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 44 insertions(+), 0 deletions(-) commit 41abc0ca37855751ed06051a30c0d866977ed2bd Author: Benjamin Otte <otte@redhat.com> Date: Mon Jul 5 22:19:05 2010 +0200 test: add PNG functions test/api-special-cases.c | 36 ++++++++++++++++++++++++++++++++++++ 1 files changed, 36 insertions(+), 0 deletions(-) commit 897eaa3e97f865ad2c28442c26efaf4ba391cf03 Author: Benjamin Otte <otte@redhat.com> Date: Mon Jul 5 22:11:23 2010 +0200 test: Add a non-error surface check In that check, we call functions that require a specific surface type with surfaces of a different type and check that they don't crash and set the correct error. test/api-special-cases.c | 36 ++++++++++++++++++++++++++++++++++++ 1 files changed, 36 insertions(+), 0 deletions(-) commit 986ddf565215dc01065eade46921abe8a4b7912e Author: Benjamin Otte <otte@redhat.com> Date: Mon Jul 5 22:03:42 2010 +0200 test: add image surface functions to api-special-cases test test/api-special-cases.c | 90 +++++++++++++++++++++++++++++++++------------ 1 files changed, 66 insertions(+), 24 deletions(-) commit 72878d70ea75be03f47fa9d53f8305e76162054e Author: Benjamin Otte <otte@redhat.com> Date: Mon Jul 5 20:47:19 2010 +0200 test: Add a new test variant to api-special-cases test This variant tests a (hopefully) inert error surface. test/api-special-cases.c | 35 +++++++++++++++++++++++++++++++++++ 1 files changed, 35 insertions(+), 0 deletions(-) commit 9de25a0297c141a0776835920168afaa3ca77a87 Author: Benjamin Otte <otte@redhat.com> Date: Mon Jul 5 18:33:40 2010 +0200 configure: remove dolt libtool should be fast by now Makefile.am | 5 +- build/aclocal.dolt.m4 | 178 ------------------------------------------------- configure.ac | 1 - 3 files changed, 2 insertions(+), 182 deletions(-) commit 6744b78de17930285569da2158a334763e2bd333 Author: Benjamin Otte <otte@redhat.com> Date: Mon Jul 5 18:25:31 2010 +0200 subsurface: Fail if created from a finished surface Caught by api-special-cases test src/cairo-surface-subsurface.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 8fd1ecea12f15c2bda710065909a14415ba92bd8 Author: Benjamin Otte <otte@redhat.com> Date: Mon Jul 5 18:25:16 2010 +0200 surface: Fail if set_mime_data() is called on a finished surface Caught by api-special-cases test src/cairo-surface.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit e388ff1ae732970d6166780817ec121cf58ccd0e Author: Benjamin Otte <otte@redhat.com> Date: Mon Jul 5 18:24:23 2010 +0200 surface: Fail early if create_similar() is called on a finished surface Caught by api-special-cases test src/cairo-surface.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit c1689ef6f27f99c36e1a5f4de658363ca0aad25a Author: Benjamin Otte <otte@redhat.com> Date: Mon Jul 5 18:23:37 2010 +0200 surface: don't call begin_modification on finished surfaces Fixes https://bugs.launchpad.net/ubuntu/+source/cairo/+bug/600622 Caught by api-special-cases test src/cairo-surface.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit cf0245c1201d4884ff19e881e9c118784fa14884 Author: Benjamin Otte <otte@redhat.com> Date: Mon Jul 5 18:17:09 2010 +0200 tests: Add a testcase that checks APIs work consistently In particular, it checks that finished and surfaces in an error state do not do bad things, like cause crashes. So far this test only checks surface APIs, but it should be extended to cover all APIs. Please update this test when new APIs get added. Motivated by https://bugs.launchpad.net/ubuntu/+source/cairo/+bug/600622 test/Makefile.sources | 1 + test/api-special-cases.c | 360 ++++++++++++++++++++++++++++++++++++++++ test/api-special-cases.ref.png | Bin 0 -> 95 bytes 3 files changed, 361 insertions(+), 0 deletions(-) commit eb63284fc3ae9377003ca312be58ae8f5dbbfdbd Author: Benjamin Otte <otte@redhat.com> Date: Mon Jul 5 00:37:10 2010 +0200 configure: Use automake silent rules This replaces shave usage. If silent rules are not available, don't use them. configure.ac | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 68bbb6b4a0a3b9bc923ccf130b1ca4221a5e54bd Author: Benjamin Otte <otte@redhat.com> Date: Mon Jul 5 00:35:39 2010 +0200 configure: remove shave build/.gitignore | 2 - build/aclocal.shave.m4 | 77 --------------------------------------------- build/shave-libtool.in | 69 ---------------------------------------- build/shave.in | 82 ------------------------------------------------ configure.ac | 4 -- 5 files changed, 0 insertions(+), 234 deletions(-) commit 9ce87c67ff64083ec48edfefe83a1df3756c364c Author: Benjamin Otte <otte@redhat.com> Date: Sat Jul 3 02:54:55 2010 +0200 perf: print comment describing backend Use the descibe string to output information about the backend we're testing. perf/cairo-perf-trace.c | 31 ++++++++++++++++++++++++++++++- 1 files changed, 30 insertions(+), 1 deletions(-) commit fcfe7c67248ea171dc40c0dbd861e489a2df5941 Author: Benjamin Otte <otte@redhat.com> Date: Sat Jul 3 02:54:28 2010 +0200 boilerplate: Add describe string Print the pixman version we're using boilerplate/cairo-boilerplate.c | 21 ++++++++++++++++++--- 1 files changed, 18 insertions(+), 3 deletions(-) commit 0a7135148a634ea6692a4edd83193870a5d526b3 Author: Benjamin Otte <otte@redhat.com> Date: Sat Jul 3 02:54:08 2010 +0200 gl: Add describe string boilerplate/cairo-boilerplate-glx.c | 29 +++++++++++++++++++++++++---- 1 files changed, 25 insertions(+), 4 deletions(-) commit a1c4b001a548611b7d77e9280fdb5a82da275830 Author: Benjamin Otte <otte@redhat.com> Date: Wed Jun 30 18:27:54 2010 +0200 boilerplate: Add a describe vfunc This function is supposed to describe the backend in use. The describe function is optional - and therefore initialized as NULL everywhere. Note: It is well known that the xlib backend uses X. What is not known is what version the server supports or what graphics card it is running on. That is the information the describe vfunc is supposed to provide. boilerplate/Makefile.win32.features | 8 ++++++++ boilerplate/cairo-boilerplate-directfb.c | 4 ++-- boilerplate/cairo-boilerplate-drm.c | 2 ++ boilerplate/cairo-boilerplate-egl.c | 1 + boilerplate/cairo-boilerplate-glx.c | 4 ++++ boilerplate/cairo-boilerplate-pdf.c | 4 ++-- boilerplate/cairo-boilerplate-ps.c | 8 ++++---- boilerplate/cairo-boilerplate-quartz.c | 5 +++-- boilerplate/cairo-boilerplate-script.c | 2 +- boilerplate/cairo-boilerplate-skia.c | 4 ++-- boilerplate/cairo-boilerplate-svg.c | 8 ++++---- boilerplate/cairo-boilerplate-test-surfaces.c | 16 ++++++++-------- boilerplate/cairo-boilerplate-vg.c | 4 ++++ boilerplate/cairo-boilerplate-wgl.c | 2 ++ boilerplate/cairo-boilerplate-win32-printing.c | 4 ++-- boilerplate/cairo-boilerplate-win32.c | 4 ++-- boilerplate/cairo-boilerplate-xcb.c | 7 +++++++ boilerplate/cairo-boilerplate-xlib.c | 4 ++++ boilerplate/cairo-boilerplate.c | 10 +++++----- boilerplate/cairo-boilerplate.h | 4 ++++ build/Makefile.win32.features-h | 1 + src/Makefile.win32.features | 8 ++++++++ 22 files changed, 80 insertions(+), 34 deletions(-) commit 4c039b1cdfac5b5d6aa0c38f0779213fd14ec7de Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jul 2 17:01:12 2010 +0100 user-font: Check the status before destroying the context src/cairo-user-font.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 1f84f5682c6ff246b3d28c75c8731504f31c1ee1 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jul 2 13:19:17 2010 +0100 xlib: Apply translation to image surface upload. Fixes: Bug 28888 - cairo_paint with rgb images does not work correctly https://bugs.freedesktop.org/show_bug.cgi?id=28888 src/cairo-xlib-surface.c | 13 ++++++++----- 1 files changed, 8 insertions(+), 5 deletions(-) commit d2d6c96c24501d888422ea42d3c90d3c8f3647a0 Author: Andrea Canciani <ranma42@gmail.com> Date: Tue Jun 29 09:58:54 2010 +0200 user-font: correct handling of size 0 text Text with size 0 has a singular scale matrix, thus requires special handling to avoid invalidating the context where it is used. Fixes pthread-show-text and text-zero-len (they failed with assertion when ran using the user font backend). src/cairo-matrix.c | 9 +++++++ src/cairo-scaled-font.c | 5 +-- src/cairo-user-font.c | 60 ++++++++++++++++++++++++++++------------------ src/cairoint.h | 3 ++ 4 files changed, 50 insertions(+), 27 deletions(-) commit 6db247e13c6fa61879029b335c6fa649d810c11b Author: Andrea Canciani <ranma42@gmail.com> Date: Tue Jun 29 09:28:04 2010 +0200 user-font: ignore translation in scale matrix Currently the translation component of the scaled_font scale matrix is applied by gstate and only linear components should be applied in font backends. Fixes font-matrix-translation (when using user-font as font backend). src/cairo-user-font.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) commit 549431e98ed0be17b80f24f0e0c167c7ad632f4f Author: Andrea Canciani <ranma42@gmail.com> Date: Mon Jun 28 22:40:28 2010 +0200 ft-font: fix typo src/cairo-ft-font.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 97a88c5adb08a3181bad1f63a7bbdfe5784b4207 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jun 28 17:10:59 2010 +0100 xlib: Compile without fontconfig Create a cairo-fontconfig-private.h where we can add the missing defines in a common location rather than in the body of the code. src/Makefile.sources | 1 + src/cairo-fontconfig-private.h | 76 ++++++++++++++++++++++++++++++++++++++++ src/cairo-ft-font.c | 5 +-- src/cairo-surface-subsurface.c | 1 + src/cairo-xlib-screen.c | 20 +---------- 5 files changed, 80 insertions(+), 23 deletions(-) commit 7d6910014310344e5d16c97ffd1f1c9fbc01b143 Author: Andrea Canciani <ranma42@gmail.com> Date: Mon Jun 28 17:12:41 2010 +0200 quartz: remove unused declarations src/cairo-quartz-surface.c | 17 ----------------- 1 files changed, 0 insertions(+), 17 deletions(-) commit bd4c14b94eeb386b30439929e8e54a5d9b5d5fca Author: Andrea Canciani <ranma42@gmail.com> Date: Thu Jun 24 23:20:41 2010 +0200 quartz: remove unused os version info It was previously used to activate a workaround for text transformation whenrunning on some os versions. Now the workaround is not needed anymore. src/cairo-quartz-surface.c | 7 ------- 1 files changed, 0 insertions(+), 7 deletions(-) commit aa7e9c43b6381930455a68258dcc3e14dce2b0e4 Author: Andrea Canciani <ranma42@gmail.com> Date: Thu Jun 24 14:18:02 2010 +0200 quartz-font: correct and explain matrix computations glyph_path was taking into account the translation (which currently is already applied in gstate) and the sign of the elements of the matrices was not explained. src/cairo-quartz-font.c | 13 ++++++------- 1 files changed, 6 insertions(+), 7 deletions(-) commit b26f72fef99e9869a62cbb8e44a82837f87cf2c6 Author: Andrea Canciani <ranma42@gmail.com> Date: Thu Jun 24 22:34:36 2010 +0200 quartz: check return status If the font backend is unable to tell the extents of the operation, consider it unbound. src/cairo-quartz-surface.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit 9c0d761bfcdd28d52c83d74f46dd3c709ae0fa69 Author: Andrea Canciani <ranma42@gmail.com> Date: Thu Jun 24 15:26:03 2010 +0200 quartz: improve text transform handling Use scale instead of manually compositing font_matrix and ctm and composite it with the context ctm, so that no workaround for clipping is needed anymore. src/cairo-quartz-surface.c | 46 +++++++++++-------------------------------- 1 files changed, 12 insertions(+), 34 deletions(-) commit 9068b5768b8560fbf095f1c0eecb5c805232f794 Author: Andrea Canciani <ranma42@gmail.com> Date: Thu Jun 24 15:15:37 2010 +0200 quartz-font: silence compiler warnings Remove an unused function, explicitly ignore or check return values, don't define unused variables. src/cairo-quartz-font.c | 84 +++++++++++++++++------------------------------ 1 files changed, 30 insertions(+), 54 deletions(-) commit ca161a585a7ce09cfcd468ea7591c5959077a907 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Jun 26 14:50:57 2010 +0100 version: 1.9.9 Post-snapshot bump. cairo-version.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 0f1ff0daab7259ec16076f788760da4f35cb0cdc Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Jun 26 14:20:25 2010 +0100 test: Missing ref image. test/Makefile.am | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 45d1f461ce2d2e3af16a5a90ffd8980bffc5eaa8 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Jun 26 14:17:23 2010 +0100 version: 1.9.10 cairo-version.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 7a68a7bfd550b5e4b6635495e7de49fe306fbad4 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Jun 26 14:16:27 2010 +0100 NEWS for 1.9.10 snapshot NEWS | 28 ++++++++++++++++++++++++++++ 1 files changed, 28 insertions(+), 0 deletions(-) commit 8df41361196c7ba1b8d272507cc3d523cdcf5632 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Jun 26 09:52:11 2010 +0100 Regenerate default win32 headers. boilerplate/Makefile.win32.features | 8 -------- build/Makefile.win32.features-h | 1 - src/Makefile.win32.features | 8 -------- 3 files changed, 0 insertions(+), 17 deletions(-) commit 1373675ef7602363aeca0d9ec12be79719ea066d Author: Benjamin Otte <otte@redhat.com> Date: Fri Jun 25 14:10:12 2010 +0200 pop-group: Translate existing path properly This fixes the reverse case of the push_group case fixed a few commits ago. src/cairo.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) commit 59076776674e3ae47099f20e1d86064fbd856008 Author: Benjamin Otte <otte@redhat.com> Date: Fri Jun 25 14:08:49 2010 +0200 test: improve push-group-path-offset to also catch the pop_group() case cairo_pop_group() also trasnforms the path wrong, so we use cairo_fill() to copy data instead of cairo_paint(). (Also, unbust the testcase.) test/push-group-path-offset.c | 45 ++++++++++++++-------------------------- 1 files changed, 16 insertions(+), 29 deletions(-) commit 2e8571d95ca36f8ad9e20796990cdc0b3f763082 Author: Benjamin Otte <otte@redhat.com> Date: Fri Jun 25 13:41:22 2010 +0200 push-group: Fix path translation when pushing a group with device offsets With the previous code, the parent's device offset wasn't undone before applying the new device offset. Tested by push-group-path-offset test. src/cairo.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) commit a9b8d1a94ea624ea8b12a125bdf70c6f248e7ca7 Author: Benjamin Otte <otte@redhat.com> Date: Fri Jun 25 13:38:40 2010 +0200 test: Add a new test for a bug with device-offset tests All the credit for this one goes to make distcheck test/Makefile.sources | 1 + test/push-group-path-offset.c | 90 +++++++++++++++++++++++++++++++++++ test/push-group-path-offset.ref.png | Bin 0 -> 186 bytes 3 files changed, 91 insertions(+), 0 deletions(-) commit 1099a3515b6a69e2ff360d8e6b1df71e3ea5c213 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Jun 24 17:22:34 2010 +0100 drm/intel: Fix common off-by-one by rewriting the [XY]MAX macro. Many rectangles in the command stream are specified as inclusive rects, i.e. the max values are (width-1, height-1), which is easy to neglect. src/drm/cairo-drm-i915-private.h | 2 +- src/drm/cairo-drm-i915-surface.c | 24 ++++++------------------ src/drm/cairo-drm-i965-shader.c | 12 ++++++------ src/drm/cairo-drm-intel-command-private.h | 4 ++-- 4 files changed, 15 insertions(+), 27 deletions(-) commit fb6a00571c818c738d66bc04dc75e79491878f78 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jun 14 10:19:37 2010 +0100 drm: _cairo_color_get_content() compilation fixes src/drm/cairo-drm-i915-shader.c | 2 +- src/drm/cairo-drm-i965-shader.c | 5 +---- src/drm/cairo-drm-intel.c | 3 +-- 3 files changed, 3 insertions(+), 7 deletions(-) commit 42956b46436b9704be7619e1b61ab222923376d0 Author: Zoxc <zoxc32@gmail.com> Date: Sun Jun 20 21:07:57 2010 +0000 build: Added cairo deflate stream as a requirement for the script surface. src/Makefile.sources | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit b036a09972a19e63a85a4661a457525e2abe4026 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Thu Jun 24 14:59:18 2010 +0300 whitespace: Fixup formal arguments and tabs in boilerplate/ and perf/. Ran a script to align the formal parameters of functions and collapse spaces to tabs in code. boilerplate/cairo-boilerplate-beos.cpp | 42 +++++----- boilerplate/cairo-boilerplate-directfb.c | 86 ++++++++++---------- boilerplate/cairo-boilerplate-drm.c | 2 +- boilerplate/cairo-boilerplate-egl.c | 20 +++--- boilerplate/cairo-boilerplate-getopt.c | 12 ++-- boilerplate/cairo-boilerplate-glx.c | 60 +++++++------- boilerplate/cairo-boilerplate-pdf.c | 24 +++--- boilerplate/cairo-boilerplate-private.h | 2 +- boilerplate/cairo-boilerplate-ps.c | 49 ++++++------ boilerplate/cairo-boilerplate-qt.cpp | 18 ++-- boilerplate/cairo-boilerplate-quartz.c | 18 ++-- boilerplate/cairo-boilerplate-scaled-font.h | 2 +- boilerplate/cairo-boilerplate-script.c | 30 ++++---- boilerplate/cairo-boilerplate-skia.c | 18 ++-- boilerplate/cairo-boilerplate-svg.c | 59 +++++++------- boilerplate/cairo-boilerplate-system.c | 10 ++- boilerplate/cairo-boilerplate-system.h | 10 ++- boilerplate/cairo-boilerplate-test-surfaces.c | 100 ++++++++++++------------ boilerplate/cairo-boilerplate-vg.c | 36 ++++---- boilerplate/cairo-boilerplate-wgl.c | 58 +++++++------- boilerplate/cairo-boilerplate-win32-printing.c | 29 ++++--- boilerplate/cairo-boilerplate-win32.c | 18 ++-- boilerplate/cairo-boilerplate-xcb.c | 85 ++++++++++---------- boilerplate/cairo-boilerplate-xlib.c | 90 +++++++++++----------- boilerplate/cairo-boilerplate.c | 102 ++++++++++++----------- boilerplate/cairo-boilerplate.h | 44 ++++++----- perf/cairo-perf-chart.c | 38 ++++++--- perf/cairo-perf-compare-backends.c | 30 ++++--- perf/cairo-perf-diff-files.c | 37 +++++---- perf/cairo-perf-graph-files.c | 73 ++++++++++------- perf/cairo-perf-graph-widget.c | 60 +++++++++------ perf/cairo-perf-graph.h | 8 +- perf/cairo-perf-micro.c | 82 ++++++++++--------- perf/cairo-perf-os2.c | 10 +- perf/cairo-perf-posix.c | 24 +++--- perf/cairo-perf-print.c | 5 +- perf/cairo-perf-report.c | 62 +++++++++------ perf/cairo-perf-trace.c | 82 +++++++++++-------- perf/cairo-perf-win32.c | 6 +- perf/cairo-perf.h | 38 +++++---- perf/cairo-stats.c | 11 ++- perf/cairo-stats.h | 6 +- 42 files changed, 850 insertions(+), 746 deletions(-) commit 616e35d1fae703dc118ce503d25d4f57cfd16dfd Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Thu Jun 24 09:44:07 2010 +0300 boilerplate: Remove the xlib-window target from Renderless builds. I don't know why _cairo_boilerplate_xlib_window_create_surface() is in the Render-only section of the code, but since it is, this patch makes the boilerplate at least compile if we don't have Render support built in. boilerplate/cairo-boilerplate-xlib.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit aed744008dbaab49f28f9c54ad0850074ece5d66 Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk> Date: Thu Jun 24 05:38:14 2010 -0400 test: Fix typo in copyright statement test/bug-seams.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 5c7e1dd690af21943435676bfac320cfe863cf55 Author: Soeren Sandmann <sandmann@daimi.au.dk> Date: Thu Jun 24 10:11:48 2010 +0100 test: Add an example of seams. A pair of perfectly conjoint quads should not produce a seam when accumulating into a temporary mask. Yet here is an example of where they do! test/Makefile.am | 3 + test/Makefile.sources | 1 + test/bug-seams.c | 98 ++++++++++++++++++++++++++++++++++ test/bug-seams.ref.png | Bin 0 -> 1604 bytes test/bug-seams.xlib-fallback.ref.png | Bin 0 -> 2133 bytes test/bug-seams.xlib.ref.png | Bin 0 -> 1606 bytes 6 files changed, 102 insertions(+), 0 deletions(-) commit 413ec4b708a511eb2f3866165a35d3a8d97bd326 Author: Benjamin Otte <otte@redhat.com> Date: Tue Jun 22 23:19:32 2010 +0200 gl: Return a surface from _cairo_surface_create_in_error() On error, surface creation functions should always return a surface created with _cairo_surface_create_in_error() instead of a new surface in an error state. This simplifies internal code as no refcounting has to be done. src/cairo-gl-surface.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit a4e292507cf7c2f960d040edd57b56a976c73da6 Author: Benjamin Otte <otte@redhat.com> Date: Tue Jun 22 22:01:25 2010 +0200 gl: Propagate surface creation error instead of crashing src/cairo-gl-glyphs.c | 22 ++++++++++++++++------ 1 files changed, 16 insertions(+), 6 deletions(-) commit faa4e6761c8f74a1acaa7ccc5bc8bb23b2f5cdb1 Author: Benjamin Otte <otte@redhat.com> Date: Mon Jun 21 14:01:34 2010 +0200 egl: Copy glx code to detect the proper surface in acquire src/cairo-egl-context.c | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-) commit 76a721f7e94fb040f106b200c09c1a7b9ae83d36 Author: Benjamin Otte <otte@redhat.com> Date: Mon Jun 21 13:30:06 2010 +0200 egl: Remove unused prev_foo usage src/cairo-egl-context.c | 7 ------- 1 files changed, 0 insertions(+), 7 deletions(-) commit b8051ee985ed46c69f5fba1216ead1ebacecfd44 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Jun 19 18:09:27 2010 +0100 script: Pass the buffer length back to freetype. After querying the required size, inform the backend of the allocated size of the buffer. src/cairo-script-surface.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 8ac9a9df24eefc5f1125db87eb8eda2e94f54070 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Jun 19 13:23:50 2010 +0100 xcb: Return the status upon flushing the device. The vfunc was updated to expect the status return, so supply it. src/cairo-xcb-connection.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) commit 9fffc0e120df8947c34d9e423c69ab66b763d875 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Jun 19 11:15:13 2010 +0100 xlib: Precise and Imprecise were reversed. The intention was to switch to imprecise mode by default, using the exact rendering mode only upon request. src/cairo-xlib-surface.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit b322b2e61984c2e9e00fb44343ebe5e423246445 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Jun 19 10:26:05 2010 +0100 xlib: Perform image uploads inplace. Under the restrictive conditions where we are doing an untransformed contained upload of an image into a matching surface, perform it in place. The drivers will attempt to stream such uploads efficiently, far more so than our code. src/cairo-xlib-surface.c | 112 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 112 insertions(+), 0 deletions(-) commit c3eb95bf6670bbc06ef908481da95f3504c7dc4d Author: Benjamin Otte <otte@redhat.com> Date: Fri Jun 18 19:26:07 2010 +0200 egl: Fail properly if no configs are available instead of crashing boilerplate/cairo-boilerplate-egl.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit 3908d80f57bc0abef47721a5b8b9afd5041118e3 Author: Benjamin Otte <otte@redhat.com> Date: Fri Jun 18 16:11:20 2010 +0200 glx: Remove useless optimization trying to avoid glXMakeCurrent() The optimization is not performance-relevant. And having less code is always a good idea. src/cairo-glx-context.c | 19 ++----------------- 1 files changed, 2 insertions(+), 17 deletions(-) commit 64f90322f73c37ac5667292949bb45b0279239d9 Author: Benjamin Otte <otte@redhat.com> Date: Fri Jun 18 12:40:48 2010 +0200 gl: Refactor status handling in _cairo_gl_context_release() Previously, the code returned a status and required the caller to mangle this status with his own status. Now, the function takes the previous status ass an argument and does the mangling itself. Also contains fixes for all the callers to actually check the return value - which is now rather trivial as it just requires passing through the status variable. src/cairo-gl-composite.c | 6 +--- src/cairo-gl-device.c | 2 +- src/cairo-gl-glyphs.c | 14 ++++-------- src/cairo-gl-gradient.c | 3 +- src/cairo-gl-private.h | 14 +++++++----- src/cairo-gl-surface.c | 47 ++++++++++++++++++++++++--------------------- 6 files changed, 43 insertions(+), 43 deletions(-) commit fc3d521c121da237974e486f1b7735009764b441 Author: Benjamin Otte <otte@redhat.com> Date: Fri Jun 18 12:23:37 2010 +0200 gl: Inline the check_error() function src/cairo-gl-private.h | 23 +++++++---------------- 1 files changed, 7 insertions(+), 16 deletions(-) commit 9d7fa289132650261e546b39af2371c262f46d3c Author: Benjamin Otte <otte@redhat.com> Date: Fri Jun 18 12:18:05 2010 +0200 gl: Don't assert if there used to be a GL error When acquiring the GL context, do not assert that the GL context is not in an error state. Do not even call _cairo_error(). Handling GL errors in other code is not Cairo's responsibility. Instead just clear all previous errors so we don't accidentally set surfaces into error states to unrelated errors. src/cairo-gl-private.h | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 0f9a8cd18f14b1f23aaefe14db3b5ad07c84cff7 Author: Benjamin Otte <otte@redhat.com> Date: Fri Jun 18 12:17:36 2010 +0200 gl: Add a custom glGetError() function This function clears all errors and returns the first one that happened. src/cairo-gl-private.h | 19 ++++++++++++++++--- 1 files changed, 16 insertions(+), 3 deletions(-) commit 8048d3aa0a11ab1c054887682b8b2a899a87da0e Author: Benjamin Otte <otte@redhat.com> Date: Fri Jun 18 10:50:21 2010 +0200 gl: Remove custom fprintf fudging on GL errors Now that we probably call _cairo_error() on every GL error, there is no need to use custom methods to catch those errors. The usual breakpoint is enough. src/cairo-gl-private.h | 7 +------ src/cairo-gl-surface.c | 20 -------------------- 2 files changed, 1 insertions(+), 26 deletions(-) commit f4da5048bf87df0651ec83ca3f1ad6a5af7eb16d Author: Benjamin Otte <otte@redhat.com> Date: Fri Jun 18 10:44:15 2010 +0200 gl: cairo_warn about return value from cairo_gl_context_release() src/cairo-gl-private.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit d9179f480a43c7171806e2c33804aaae70a2cfa6 Author: Benjamin Otte <otte@redhat.com> Date: Fri Jun 18 00:43:09 2010 +0200 boilerplate: Reinstate glFinish() for wgl It was accidentally disabled. boilerplate/cairo-boilerplate-wgl.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 67e84d61230a2012c18d8bff60e8835aaa57be07 Author: Kristian Høgsberg <krh@bitplanet.net> Date: Thu Jun 17 17:38:00 2010 -0400 egl: Implement acquire and release for EGL backend src/cairo-egl-context.c | 46 +++++++++++++++++++++++++++++++++++++--------- 1 files changed, 37 insertions(+), 9 deletions(-) commit 7ab9ce1b9130dcd63b2b2b2516b77ef1ae531144 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Jun 17 15:47:04 2010 +0100 image: Make a local copy of the trap coordinates as the boxes alias. As we transform the array of trapezoids into an array of boxes in-place, we must take local copies of the coordinates before writing into the boxes otherwise we may inadvertently modify the trapezoidal coordinates. Fixes test/a1-bug. src/cairo-image-surface.c | 15 +++++++++++---- 1 files changed, 11 insertions(+), 4 deletions(-) commit f2645fa361003636d1da6ca38c3b61fef1b1ce4d Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Jun 17 15:38:53 2010 +0100 test: Add a1-bug Capture a bug report from "cairouser" where a1 rasterisation is now broken. test/Makefile.am | 3 ++ test/Makefile.sources | 1 + test/a1-bug.c | 61 +++++++++++++++++++++++++++++++++++++++++++ test/a1-bug.image16.ref.png | Bin 0 -> 3329 bytes test/a1-bug.ref.png | Bin 0 -> 3736 bytes test/a1-bug.xlib.ref.png | Bin 0 -> 3362 bytes 6 files changed, 65 insertions(+), 0 deletions(-) commit 800e977c2ea1e097c4b7332b18a5fc03089603c1 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Thu Jun 17 14:27:13 2010 +0300 perf: Allow comparing perf reports with only one difference. The cairo-perf-diff-files tool would ignore perf reports with just one test for no apparent reason. The traces take so long that it's useful to be able to compare runs with just one trace. perf/cairo-perf-diff-files.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 29b8cfd2b6cf590fcfe64e5ba5b4479c2748ac06 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Jun 17 10:11:31 2010 +0100 test/halo: Remove copied code. How did that get there? I obviously ran the test to generate the output, so where did it spring as it is the old version of the function? From 16364768d79570e7201a87f0a985c65acaff5560. Mysteries will never cease. test/halo.c | 36 ------------------------------------ 1 files changed, 0 insertions(+), 36 deletions(-) commit a9a22649e2ffa1cd3720c8555dc3c6aff2040e3d Author: Zoxc <zoxc32@gmail.com> Date: Wed Jun 16 21:33:30 2010 +0200 wgl: Only reset GL context on the dummy window. This changes the WGL context destruction code to only reset the GL context for the dummy window, since doing it on <nothing> is an invalid operation. src/cairo-wgl-context.c | 6 ++---- 1 files changed, 2 insertions(+), 4 deletions(-) commit ca35e09ece5107c3ebc9f111d4a3d96d69aa3d03 Author: Zoxc <zoxc32@gmail.com> Date: Mon Jun 14 20:34:52 2010 +0200 gl: Added wgl boilerplate and moved the glx and egl boilerplates into their own files. boilerplate/Makefile.sources | 4 +- boilerplate/Makefile.win32.features | 8 + boilerplate/cairo-boilerplate-egl.c | 141 ++++++++++ boilerplate/cairo-boilerplate-gl.c | 492 ----------------------------------- boilerplate/cairo-boilerplate-glx.c | 401 ++++++++++++++++++++++++++++ boilerplate/cairo-boilerplate-wgl.c | 236 +++++++++++++++++ build/Makefile.win32.features-h | 1 + src/Makefile.win32.features | 8 + 8 files changed, 798 insertions(+), 493 deletions(-) commit 2af3262895d74492a0f856f049d1524a527257bb Author: Zoxc <zoxc32@gmail.com> Date: Mon Jun 14 20:33:17 2010 +0200 wgl: Renamed hwnd field to wnd. src/cairo-wgl-context.c | 12 ++++++------ 1 files changed, 6 insertions(+), 6 deletions(-) commit 7a023a62f7517ad0d54f4d59c99909fadcc05e82 Author: Nicolaus L Helper <nlhepler@gmail.com> Date: Thu Jun 17 08:56:30 2010 +0100 ft,fc,xlib: LCD filtering patch. This adds internal API to retrieve the LCD filtering parameters from fontconfig, or as set on the Screen, and feed them to FreeType when rendering the glyph. References: Bug 10301 - LCD filtering patch https://bugs.freedesktop.org/show_bug.cgi?id=10301 Tested-by: Brandon Wright <bearoso@gmail.com> Forward-ported-by: Robert Hooker <sarvatt@gmail.cm> ickle: The API is clearly not ready for public consumption, the enum are poorly named, however this stands by itself as enabling system wide properties. src/cairo-font-options.c | 51 ++++- src/cairo-ft-font.c | 675 ++++++++++++++++++++++++++++++++------------- src/cairo-surface.c | 1 + src/cairo-types-private.h | 25 ++ src/cairo-xlib-screen.c | 28 ++ src/cairoint.h | 7 + 6 files changed, 597 insertions(+), 190 deletions(-) commit 36b4b0631cc220d01c411b596a4eef839338cd7c Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Jun 17 08:50:31 2010 +0100 image: Use consistent rounding modes for a1 rasterisation. When checking if the traps are equivalent to a set of rectangles, we need to use the same rounding mode as when converting the traps to a set of boxes and then filling them. Failure to do leads to a situation where (-127,-128) was thought to be equivalent to (0,0) but we attempted to fill from 0 to -1 instead. References: http://lists.cairographics.org/archives/cairo/2010-June/020115.html src/cairo-image-surface.c | 58 +++++++++++++++++++++++++++----------------- 1 files changed, 35 insertions(+), 23 deletions(-) commit 3306bcb1d91265d60c460aa64d3ee4a4acb430a1 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Jun 17 08:47:48 2010 +0100 fixed: Refactor code to use more inlines and less duplication of logic. This also has the side-effect of fixing the types in the problematic functions which hid Andrea's true fix for the unsigned FRAC_MASK. src/cairo-fixed-private.h | 18 +++++++++++++++--- 1 files changed, 15 insertions(+), 3 deletions(-) commit c0dee7964c4394b7963041f246855fd3b01f4ebb Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Jun 16 18:49:58 2010 +0100 test: Add a1-rasterisation Check the rounding criteria when rasterising. test/Makefile.am | 2 + test/Makefile.sources | 1 + test/a1-rasterisation-rectangles.ref.png | Bin 0 -> 1729 bytes test/a1-rasterisation-triangles.ref.png | Bin 0 -> 1729 bytes test/a1-rasterisation.c | 101 ++++++++++++++++++++++++++++++ 5 files changed, 104 insertions(+), 0 deletions(-) commit 16364768d79570e7201a87f0a985c65acaff5560 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Jun 16 15:09:22 2010 +0100 test/halo: Transformation seems key to the bug... test/halo.c | 36 ++++++++++++++++++++++++++++++++++++ 1 files changed, 36 insertions(+), 0 deletions(-) commit cb28e0bfeb47a72f14ee42f161ebf6b5eb61e76b Author: Andrea Canciani <ranma42@gmail.com> Date: Thu Jun 17 08:42:39 2010 +0200 test: correct options in getopt call 'k' was missing and 't' was present but unhandled. Options have been reordered according to the "USAGE" ordering. test/cairo-test-runner.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 3cd07559328b60e3da85debb805cb4a3fc4abc22 Author: Andrea Canciani <ranma42@gmail.com> Date: Wed Jun 16 22:54:08 2010 +0200 correct rounding computation cairo_fixed_integer_round[_down] were adding an unsigned mask value before shifting its result, causing the shift to be computed as logical (unsigned) right shift, thus producing incorrect values for negative inputs. Making the mask value signed fixes this issue. Bug report by cu: http://lists.cairographics.org/archives/cairo/2010-June/020115.html src/cairo-fixed-private.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 8689d75caaa9c6ee42976873d21684fa9f48834f Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Jun 16 15:09:22 2010 +0100 test/halo: Transformation seems key to the bug... Only it is actually transformation of the result that is required in order to magnify the effect to a detectable level. test/Makefile.am | 5 +++ test/halo-transform.image16.ref.png | Bin 0 -> 10983 bytes test/halo-transform.ps.ref.png | Bin 0 -> 8691 bytes test/halo-transform.ref.png | Bin 0 -> 15086 bytes test/halo-transform.xlib.ref.png | Bin 0 -> 15346 bytes test/halo.c | 64 +++++++++++++++++++++++++++++++++- test/halo.image16.ref.png | Bin 5328 -> 6172 bytes test/halo.ps.ref.png | Bin 0 -> 5220 bytes test/halo.ref.png | Bin 7524 -> 8839 bytes test/halo.xlib.ref.png | Bin 7404 -> 8835 bytes 10 files changed, 67 insertions(+), 2 deletions(-) commit 71936a1f414807a51c68de111362c2d5499bdfa7 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Jun 15 21:36:15 2010 +0100 test/aliasing: Add a few more colour combinations. In particular, compare red against its inverse, cyan. Etc. test/aliasing.c | 6 +++++- test/aliasing.image16.ref.png | Bin 20810 -> 97251 bytes test/aliasing.ref.png | Bin 22980 -> 104672 bytes test/aliasing.xlib.ref.png | Bin 24018 -> 104315 bytes 4 files changed, 5 insertions(+), 1 deletions(-) commit e2220a1f3a7b483e615f5bb993a014d20b0f788a Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Jun 15 11:45:54 2010 +0100 configure: Try an alternate name for system glew. configure.ac | 10 ++++++---- 1 files changed, 6 insertions(+), 4 deletions(-) commit 25ec0c1e9b5af2ba68200b79b252de5c1b371d0a Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Jun 15 10:59:01 2010 +0100 build: Enable system GLEW on non-UNIX platforms configure.ac | 12 +++++++++--- 1 files changed, 9 insertions(+), 3 deletions(-) commit 52624446636bb5941ca2180afa2c0be275414cec Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Jun 15 10:40:36 2010 +0100 glew: Define NULL src/glew/glew.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit 56d06b088b9c355ca76a38191717a8e03aa5f59a Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jun 14 22:58:38 2010 +0100 test: Add an aliasing test case. Just a simple test in drawing neighbouring edges and looking for the effects of aliasing. test/Makefile.am | 3 + test/Makefile.sources | 1 + test/aliasing.c | 98 +++++++++++++++++++++++++++++++++++++++++ test/aliasing.image16.ref.png | Bin 0 -> 20810 bytes test/aliasing.ref.png | Bin 0 -> 22980 bytes test/aliasing.xlib.ref.png | Bin 0 -> 24018 bytes 6 files changed, 102 insertions(+), 0 deletions(-) commit 4b39f02bf7e8b4921518db4a2d8564514cb323a9 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jun 14 20:38:26 2010 +0100 test: Add halo halo uses text_path + stroke + (fill | show_text) to generate a "halo" around the string. This is to try to replicate a bug described by Ian Britten in the PDF backend where the rendering of the show_text looked distorted compared to the stroke. test/Makefile.am | 3 + test/Makefile.sources | 1 + test/halo.c | 98 +++++++++++++++++++++++++++++++++++++++++++++ test/halo.image16.ref.png | Bin 0 -> 5328 bytes test/halo.ref.png | Bin 0 -> 7524 bytes test/halo.xlib.ref.png | Bin 0 -> 7404 bytes 6 files changed, 102 insertions(+), 0 deletions(-) commit 072a200ec502bf5ac3e62702e6f14ed18171b1e0 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jun 14 16:05:14 2010 +0100 build: Add wgl to Makefile.sources and regenerate features. boilerplate/Makefile.win32.features | 10 ++++++++++ build/Makefile.win32.features | 1 + build/Makefile.win32.features-h | 3 +++ src/Makefile.sources | 6 ++++-- src/Makefile.win32.features | 14 ++++++++++++++ 5 files changed, 32 insertions(+), 2 deletions(-) commit 4a0bd91ff77c8afddde6d09495bc9ca7242f953d Author: Dmitri Vorobiev <dmitri.vorobiev@movial.com> Date: Mon Jun 14 16:40:39 2010 +0300 scaled-font: fine-tune caching This patch implements the ideas outlined by Behdad Esfahbod in the following mailing list message: http://lists.cairographics.org/archives/cairo/2010-June/020065.html Specifically, two things have been adjusted. First, the size of the look-up table was reduced to 64. Second, cache codepath is now bypassed for strings that are shorter than 16, not only for one-character strings. This allowed us to reduce the LUT initialization overhead while still retaining the advantage of caching for common-case string sizes. We have experimented with different LUT sizes, and it came out that the size of 64 is the best one in view of speed, at least for our language-neutral benchmark, which generated random strings of printable ASCII characters. Below is a table presenting benchmark results for different values of LUT size: =============================================================================== Benchmark | [1] | [2] | [3] | [4] | [5] | [6] | [7] =============================================================================== 8px text, 1 chars | 0.41 | 0.41 | 0 | 0.41 | 0 | 0.41 | 0 8px text, 10 chars | 2.13 | 2.21 | 3.76 | 2.19 | 2.82 | 2.09 | -1.88 8px text, 20 chars | 2.97 | 3.04 | 2.36 | 3.01 | 1.35 | 2.98 | 0.34 12px text, 1 chars | 0.94 | 0.94 | 0 | 0.95 | 1.06 | 0.94 | 0 12px text, 10 chars | 4.73 | 4.89 | 3.38 | 4.9 | 3.59 | 4.82 | 1.9 12px text, 20 chars | 6.32 | 6.42 | 1.58 | 6.46 | 2.22 | 6.32 | 0 16px text, 1 chars | 1.75 | 1.76 | 0.57 | 1.77 | 1.14 | 1.76 | 0.57 16px text, 10 chars | 8.13 | 8.45 | 3.94 | 8.43 | 3.69 | 8.44 | 3.81 16px text, 20 chars | 10.41 | 10.69 | 2.69 | 10.64 | 2.21 | 10.65 | 2.31 24px text, 1 chars | 3.3 | 3.3 | 0 | 3.32 | 0.61 | 3.3 | 0 24px text, 10 chars | 14.68 | 14.97 | 1.98 | 14.97 | 1.98 | 14.87 | 1.29 24px text, 20 chars | 17.93 | 18.01 | 0.45 | 18.06 | 0.73 | 17.81 | -0.67 96px text, 1 chars | 23.65 | 23.38 | -1.14 | 23.74 | 0.38 | 23.65 | 0 96px text, 5 chars | 50.52 | 51.34 | 1.62 | 51.48 | 1.9 | 51.41 | 1.76 96px text, 10 chars | 57.5 | 58.11 | 1.06 | 58.27 | 1.34 | 58.04 | 0.94 =============================================================================== [1]: Git head, Mpix/s [2]: {GLYPH_LUT_SIZE = 32, CACHING_THRESHOLD = 16} [3]: Gain of {32, 16} w.r.t. Git head [4]: {GLYPH_LUT_SIZE = 64, CACHING_THRESHOLD = 16} [5]: Gain of {64, 16} w.r.t. Git head [6]: {GLYPH_LUT_SIZE = 128, CACHING_THRESHOLD = 16} [7]: Gain of {128, 16} w.r.t. Git head The benchmark itself can be found from this mailing list message: http://lists.cairographics.org/archives/cairo/2010-June/020064.html src/cairo-scaled-font.c | 61 ++++++++++++++++++++++++++++++++++------------ 1 files changed, 45 insertions(+), 16 deletions(-) commit 505a0456d2498112155db7e7f275a14dc98f643e Author: Zoxc <zoxc32@gmail.com> Date: Mon Jun 14 01:20:54 2010 +0200 gl: Added WGL context and surface. build/configure.ac.features | 1 + configure.ac | 9 ++ src/cairo-gl.h | 16 +++ src/cairo-wgl-context.c | 253 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 279 insertions(+), 0 deletions(-) commit fd6c38b9e006feefa20ce4f54d3108dad51c828d Author: Zoxc <zoxc32@gmail.com> Date: Mon Jun 14 01:04:10 2010 +0200 win32: Fixed compile errors in Windows backend. src/cairo-win32-printing-surface.c | 9 ++++----- src/cairo-win32-surface.c | 4 ++-- 2 files changed, 6 insertions(+), 7 deletions(-) commit 5f10139cd92383c657e328ffad41874c4f668551 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Jun 13 12:33:10 2010 +0100 NEWS: A couple more tweaks I only spotted these in the release announcement. NEWS | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) commit 4932aaa3173799c8f3ac30e4c9a594c20c83a121 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Jun 13 12:02:53 2010 +0100 version: 1.9.9 Post-snapshot bump. cairo-version.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 3a20b10cd0d94406fbd5fe3bb3d4820a95364537 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Jun 13 10:27:03 2010 +0100 version: 1.9.8 Snapshot time! cairo-version.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit b612a230865a1a62f9cdcb051de9b57b509646b2 Author: Andrea Canciani <ranma42@gmail.com> Date: Sun Jun 13 12:29:24 2010 +0200 test: update quartz ref images in makefile test/Makefile.am | 143 +++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 109 insertions(+), 34 deletions(-) commit 0693af2328606a4c7e4c888d2a1cd346e6bef405 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Jun 13 10:22:37 2010 +0100 test: Move all output below test/output/ make distcheck complains of remanents being left under test/ after a clean, notably the files used to check the capabilities of a similar surface and the fallback-resolution output. test/cairo-test.c | 53 ++++++++++++++++++++++++------------------- test/fallback-resolution.c | 30 +++++++++++++++++++++--- 2 files changed, 56 insertions(+), 27 deletions(-) commit ffc3a39c95e918fa2fcd14c1b1063b9a9acceebf Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Jun 12 20:04:36 2010 +0100 NEWS: Minor tweaks. NEWS | 46 +++++++++++++++++++++++----------------------- 1 files changed, 23 insertions(+), 23 deletions(-) commit b6e16b8d2950cdadf2e2b14b0e7502d4a9ebdc09 Author: Andrea Canciani <ranma42@gmail.com> Date: Sat Jun 12 10:33:35 2010 +0200 test: quartz ref image refresh test/a1-image-sample.quartz.xfail.png | Bin 0 -> 972 bytes test/a1-mask-sample.quartz.xfail.png | Bin 0 -> 972 bytes test/a1-traps-sample.quartz.xfail.png | Bin 0 -> 122 bytes test/big-line.quartz.ref.png | Bin 0 -> 993 bytes test/caps-joins-curve.quartz.ref.png | Bin 0 -> 5199 bytes test/clear.quartz.argb32.ref.png | Bin 0 -> 691 bytes test/clear.quartz.rgb24.ref.png | Bin 0 -> 606 bytes test/clip-disjoint.quartz.ref.png | Bin 0 -> 5476 bytes test/clip-fill-rule.quartz.rgb24.ref.png | Bin 0 -> 363 bytes test/clip-fill-unbounded.quartz.argb32.ref.png | Bin 0 -> 1436 bytes test/clip-fill-unbounded.quartz.rgb24.ref.png | Bin 0 -> 1368 bytes test/clip-fill.quartz.ref.png | Bin 0 -> 875 bytes test/clip-group-shapes-circles.quartz.ref.png | Bin 0 -> 1518 bytes test/clip-nesting.quartz.argb32.ref.png | Bin 0 -> 1048 bytes test/clip-nesting.quartz.ref.png | Bin 1067 -> 0 bytes test/clip-nesting.quartz.rgb24.ref.png | Bin 956 -> 937 bytes test/clip-operator.quartz.argb32.ref.png | Bin 0 -> 9586 bytes test/clip-operator.quartz.ref.png | Bin 9539 -> 0 bytes test/clip-operator.quartz.rgb24.ref.png | Bin 4412 -> 4104 bytes test/clip-push-group.quartz.ref.png | Bin 203 -> 166 bytes test/clip-shape.quartz.ref.png | Bin 0 -> 3229 bytes test/clip-stroke-unbounded.quartz.argb32.ref.png | Bin 0 -> 1493 bytes test/clip-stroke-unbounded.quartz.rgb24.ref.png | Bin 0 -> 1356 bytes test/clip-stroke.quartz.ref.png | Bin 0 -> 1305 bytes test/clip-text.quartz.ref.png | Bin 0 -> 854 bytes test/clip-twice.quartz.argb32.ref.png | Bin 0 -> 1171 bytes test/clip-twice.quartz.ref.png | Bin 1171 -> 0 bytes test/clip-twice.quartz.rgb24.ref.png | Bin 1111 -> 1095 bytes test/clipped-group.quartz.ref.png | Bin 0 -> 308 bytes test/culled-glyphs.quartz.ref.png | Bin 0 -> 493 bytes test/dash-caps-joins.quartz.ref.png | Bin 4727 -> 0 bytes test/dash-caps-joins.quartz.xfail.png | Bin 0 -> 4446 bytes test/dash-curve.quartz.ref.png | Bin 47965 -> 0 bytes test/dash-curve.quartz.xfail.png | Bin 0 -> 42238 bytes test/dash-scale.quartz.ref.png | Bin 8079 -> 7614 bytes test/dash-state.quartz.ref.png | Bin 8698 -> 0 bytes test/dash-state.quartz.xfail.png | Bin 0 -> 6957 bytes test/degenerate-arc.quartz.ref.png | Bin 0 -> 552 bytes test/degenerate-curve-to.quartz.ref.png | Bin 0 -> 247 bytes test/degenerate-dash.quartz.xfail.png | Bin 0 -> 1560 bytes test/degenerate-path.quartz.argb32.xfail.png | Bin 0 -> 200 bytes test/degenerate-path.quartz.ref.png | Bin 232 -> 0 bytes test/degenerate-path.quartz.rgb24.ref.png | Bin 198 -> 0 bytes test/degenerate-path.quartz.rgb24.xfail.png | Bin 0 -> 172 bytes test/degenerate-pen.quartz.ref.png | Bin 1144 -> 0 bytes test/degenerate-rel-curve-to.quartz.ref.png | Bin 0 -> 246 bytes test/extend-pad-border.quartz.ref.png | Bin 0 -> 432 bytes test/extend-pad-similar.quartz.xfail.png | Bin 0 -> 270 bytes test/extend-pad.quartz.xfail.png | Bin 0 -> 270 bytes test/fill-alpha-pattern.quartz.ref.png | Bin 0 -> 7943 bytes test/fill-alpha.quartz.ref.png | Bin 0 -> 2704 bytes test/fill-and-stroke-alpha-add.quartz.ref.png | Bin 603 -> 542 bytes test/fill-and-stroke-alpha.quartz.ref.png | Bin 550 -> 0 bytes test/fill-and-stroke.quartz.argb32.ref.png | Bin 0 -> 273 bytes test/fill-and-stroke.quartz.ref.png | Bin 286 -> 0 bytes test/fill-and-stroke.quartz.rgb24.ref.png | Bin 264 -> 249 bytes ...ill-degenerate-sort-order.quartz.argb32.ref.png | Bin 0 -> 2451 bytes test/fill-degenerate-sort-order.quartz.ref.png | Bin 2470 -> 0 bytes ...fill-degenerate-sort-order.quartz.rgb24.ref.png | Bin 2098 -> 2079 bytes test/fill-image.quartz.ref.png | Bin 0 -> 1297 bytes test/fill-rule.quartz.argb32.ref.png | Bin 0 -> 2060 bytes test/fill-rule.quartz.ref.png | Bin 2079 -> 0 bytes test/fill-rule.quartz.rgb24.ref.png | Bin 1790 -> 1771 bytes test/filter-bilinear-extents.quartz.xfail.png | Bin 0 -> 308 bytes test/filter-nearest-offset.quartz.xfail.png | Bin 0 -> 2130 bytes test/filter-nearest-transformed.quartz.xfail.png | Bin 0 -> 534 bytes test/finer-grained-fallbacks.quartz.argb32.ref.png | Bin 0 -> 988 bytes test/finer-grained-fallbacks.quartz.rgb24.ref.png | Bin 0 -> 763 bytes test/font-matrix-translation.quartz.ref.png | Bin 1090 -> 996 bytes test/ft-show-glyphs-table.quartz.xfail.png | Bin 0 -> 827 bytes .../ft-text-vertical-layout-type1.quartz.xfail.png | Bin 0 -> 3635 bytes test/ft-text-vertical-layout-type3.quartz.ref.png | Bin 0 -> 3573 bytes test/glyph-cache-pressure.quartz.ref.png | Bin 3654 -> 3284 bytes test/gradient-constant-alpha.quartz.argb32.ref.png | Bin 0 -> 214 bytes test/group-unaligned.quartz.ref.png | Bin 0 -> 363 bytes test/huge-radial.quartz.ref.png | Bin 0 -> 84690 bytes test/inverse-text.quartz.ref.png | Bin 0 -> 2565 bytes test/joins.quartz.ref.png | Bin 0 -> 5833 bytes test/leaky-dash.quartz.ref.png | Bin 241 -> 195 bytes test/leaky-dashed-rectangle.quartz.ref.png | Bin 0 -> 339 bytes test/leaky-dashed-stroke.quartz.ref.png | Bin 0 -> 9229 bytes test/line-width-scale.quartz.ref.png | Bin 6434 -> 5623 bytes test/linear-gradient-reflect.quartz.ref.png | Bin 878 -> 780 bytes test/linear-gradient-subset.quartz.ref.png | Bin 0 -> 887 bytes test/linear-gradient.quartz.ref.png | Bin 1164 -> 1060 bytes test/long-dashed-lines.quartz.ref.png | Bin 2313 -> 2068 bytes test/mask-alpha.quartz.argb32.ref.png | Bin 641 -> 622 bytes test/mask-transformed-image.quartz.ref.png | Bin 0 -> 3909 bytes test/mask-transformed-similar.quartz.ref.png | Bin 0 -> 3909 bytes test/mask.quartz.argb32.ref.png | Bin 0 -> 10575 bytes test/mask.quartz.ref.png | Bin 10682 -> 0 bytes test/mask.quartz.rgb24.ref.png | Bin 8418 -> 8354 bytes test/new-sub-path.quartz.ref.png | Bin 383 -> 370 bytes test/new-sub-path.quartz.rgb24.ref.png | Bin 357 -> 0 bytes test/operator-clear.quartz.argb32.ref.png | Bin 0 -> 1228 bytes test/operator-clear.quartz.ref.png | Bin 1459 -> 0 bytes test/operator-clear.quartz.rgb24.ref.png | Bin 1293 -> 1096 bytes test/operator-source.quartz.argb32.ref.png | Bin 0 -> 4754 bytes test/operator-source.quartz.ref.png | Bin 4637 -> 0 bytes test/operator-source.quartz.rgb24.ref.png | Bin 3533 -> 3535 bytes test/over-above-source.quartz.argb32.ref.png | Bin 0 -> 511 bytes test/over-above-source.quartz.ref.png | Bin 530 -> 0 bytes test/over-above-source.quartz.rgb24.ref.png | Bin 456 -> 437 bytes test/over-around-source.quartz.argb32.ref.png | Bin 0 -> 593 bytes test/over-around-source.quartz.ref.png | Bin 612 -> 0 bytes test/over-around-source.quartz.rgb24.ref.png | Bin 491 -> 0 bytes test/over-between-source.quartz.argb32.ref.png | Bin 0 -> 551 bytes test/over-between-source.quartz.ref.png | Bin 570 -> 0 bytes test/over-between-source.quartz.rgb24.ref.png | Bin 467 -> 0 bytes test/path-append.quartz.ref.png | Bin 0 -> 6395 bytes test/pthread-same-source.quartz.xfail.png | Bin 0 -> 957 bytes test/pthread-show-text.quartz.ref.png | Bin 0 -> 42996 bytes test/push-group-color.quartz.ref.png | Bin 0 -> 3127 bytes test/push-group.quartz.argb32.ref.png | Bin 0 -> 3932 bytes test/push-group.quartz.rgb24.ref.png | Bin 0 -> 3659 bytes test/radial-gradient.quartz.ref.png | Bin 92334 -> 0 bytes test/random-intersections-curves-eo.quartz.ref.png | Bin 0 -> 326366 bytes test/random-intersections-curves-nz.quartz.ref.png | Bin 0 -> 324940 bytes test/random-intersections-eo.quartz.ref.png | Bin 197778 -> 179179 bytes test/random-intersections-nonzero.quartz.ref.png | Bin 0 -> 180871 bytes ...recording-surface-pattern.quartz.argb32.ref.png | Bin 0 -> 4570 bytes test/recording-surface-pattern.quartz.ref.png | Bin 4572 -> 0 bytes .../recording-surface-pattern.quartz.rgb24.ref.png | Bin 4063 -> 4058 bytes test/rectilinear-dash.quartz.xfail.png | Bin 0 -> 494 bytes test/rectilinear-stroke.quartz.xfail.png | Bin 0 -> 209 bytes test/reflected-stroke.quartz.ref.png | Bin 5293 -> 0 bytes test/rel-path.quartz.ref.png | Bin 212 -> 0 bytes test/rel-path.quartz.rgb24.ref.png | Bin 228 -> 0 bytes test/rotate-image-surface-paint.quartz.ref.png | Bin 257 -> 356 bytes test/rotated-clip.quartz.ref.png | Bin 0 -> 3923 bytes test/rounded-rectangle-fill.quartz.ref.png | Bin 0 -> 684 bytes test/scale-offset-image.quartz.ref.png | Bin 0 -> 9054 bytes test/scale-offset-similar.quartz.ref.png | Bin 0 -> 9054 bytes test/select-font-face.quartz.ref.png | Bin 2970 -> 2645 bytes test/self-intersecting.quartz.xfail.png | Bin 0 -> 233 bytes test/show-text-current-point.quartz.ref.png | Bin 3093 -> 2773 bytes test/smask-fill.quartz.ref.png | Bin 0 -> 2076 bytes test/smask-mask.quartz.ref.png | Bin 0 -> 3357 bytes test/smask-paint.quartz.ref.png | Bin 0 -> 3499 bytes test/smask-stroke.quartz.ref.png | Bin 0 -> 1697 bytes test/smask-text.quartz.ref.png | Bin 0 -> 1904 bytes test/smask.quartz.ref.png | Bin 0 -> 4067 bytes test/source-clip-scale.quartz.ref.png | Bin 148 -> 126 bytes test/spline-decomposition.quartz.xfail.png | Bin 0 -> 19560 bytes test/stroke-ctm-caps.quartz.ref.png | Bin 1109 -> 899 bytes test/stroke-image.quartz.ref.png | Bin 1802 -> 1350 bytes test/subsurface-pad.quartz.xfail.png | Bin 0 -> 197 bytes test/surface-pattern-big-scale-down.quartz.ref.png | Bin 0 -> 258 bytes ...urface-pattern-operator.quartz.argb32.xfail.png | Bin 0 -> 5917 bytes ...surface-pattern-operator.quartz.rgb24.xfail.png | Bin 0 -> 2546 bytes ...e-pattern-scale-down-extend-none.quartz.ref.png | Bin 0 -> 391 bytes ...-pattern-scale-down-extend-pad.quartz.xfail.png | Bin 0 -> 397 bytes ...attern-scale-down-extend-reflect.quartz.ref.png | Bin 0 -> 475 bytes ...pattern-scale-down-extend-repeat.quartz.ref.png | Bin 0 -> 397 bytes test/surface-pattern-scale-down.quartz.ref.png | Bin 3188 -> 2276 bytes test/surface-pattern-scale-up.quartz.xfail.png | Bin 0 -> 3294 bytes test/surface-pattern.quartz.xfail.png | Bin 0 -> 9216 bytes test/text-antialias-gray.quartz.ref.png | Bin 1041 -> 956 bytes test/text-antialias-none.quartz.ref.png | Bin 300 -> 270 bytes test/text-antialias-subpixel.quartz.ref.png | Bin 1065 -> 949 bytes test/text-glyph-range.quartz.ref.png | Bin 0 -> 2191 bytes test/text-pattern.quartz.argb32.ref.png | Bin 0 -> 2148 bytes test/text-pattern.quartz.ref.png | Bin 2158 -> 0 bytes test/text-pattern.quartz.rgb24.ref.png | Bin 1874 -> 1867 bytes test/text-rotate.quartz.ref.png | Bin 17820 -> 16655 bytes test/trap-clip.quartz.argb32.ref.png | Bin 0 -> 6060 bytes test/trap-clip.quartz.ref.png | Bin 6041 -> 0 bytes test/trap-clip.quartz.rgb24.ref.png | Bin 5385 -> 5694 bytes test/unantialiased-shapes.quartz.ref.png | Bin 4394 -> 3868 bytes test/unbounded-operator.quartz.ref.png | Bin 4066 -> 0 bytes test/unbounded-operator.quartz.rgb24.ref.png | Bin 1918 -> 0 bytes test/user-font-proxy.quartz.ref.png | Bin 0 -> 19795 bytes test/user-font-rescale.quartz.ref.png | Bin 0 -> 15982 bytes test/user-font.quartz.ref.png | Bin 0 -> 5960 bytes test/xcomposite-projection.quartz.ref.png | Bin 0 -> 639 bytes 175 files changed, 0 insertions(+), 0 deletions(-) commit 0d5a15f23812575c80db44ca23075293cc0dbfad Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Jun 12 20:00:24 2010 +0100 check: Disable running cairo-perf-micro Since this takes days to run now and should not find any bugs that are not covered by the test-suite it seems like a pointless exercise. Especially as I am trying to make a release! perf/Makefile.am | 15 ++++----------- 1 files changed, 4 insertions(+), 11 deletions(-) commit e9fb39daee9ef3f80e4aedbda68027b36ce94fe3 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Jun 12 19:40:42 2010 +0100 NEWS: take two. NEWS | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 75 insertions(+), 6 deletions(-) commit 62899e5e23a798bb3e9b60c9e793555e973b7823 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Jun 12 18:51:31 2010 +0100 NEWS: Boring stub for 1.9.10. NEWS | 19 +++++++++++++++++++ 1 files changed, 19 insertions(+), 0 deletions(-) commit fc372b1d9dea1ed4cb4229eaaad62a2d8e112a03 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Jun 12 16:50:30 2010 +0100 test: Missing ref images test/Makefile.am | 8 ++++---- test/coverage-triangles.xlib.xfail.png | Bin 0 -> 15859 bytes 2 files changed, 4 insertions(+), 4 deletions(-) commit 8737bc8b17ff0c437bb57df018bb7c540a394a7c Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Jun 12 16:49:46 2010 +0100 gl: start returning the failure status aftern an invalid GL op. src/cairo-gl-composite.c | 1 + src/cairo-gl-device.c | 26 +++++++++++++++++++------- src/cairo-gl-glyphs.c | 10 +++++++--- src/cairo-gl-private.h | 45 ++++++++++++++++++++++++++++++++++----------- src/cairo-gl-surface.c | 40 +++++++++++++++++++++++++--------------- 5 files changed, 86 insertions(+), 36 deletions(-) commit 5b2f90bf532184e46829de4b2e2f9d0b10c1ff81 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Jun 12 16:49:11 2010 +0100 test: Forgotten ref image. test/clipped-group.xlib-fallback.ref.png | Bin 0 -> 344 bytes 1 files changed, 0 insertions(+), 0 deletions(-) commit cdd6f11716e3fbe579d68161caec220c7852fdff Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Jun 12 15:44:29 2010 +0100 test: Record the expected failure mode for partial-coverage-intersecting-quads As the diagonals of the quad intersect below the limits of Cairo's fixed point, we fail to take heed of the intersection. test/Makefile.am | 1 + test/partial-coverage-intersecting-quads.xfail.png | Bin 0 -> 262 bytes 2 files changed, 1 insertions(+), 0 deletions(-) commit 3d72b4aa70d106b5da093e6405c7e3890fa343cf Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Jun 12 15:32:31 2010 +0100 test/coverage: The comment was still wrong. Writing comments is hard. I give in. test/coverage.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit e6d1b3a8ce0b516aed7715b57d9ca5ab4fad6c2f Author: Andrea Canciani <ranma42@gmail.com> Date: Sat Jun 12 16:22:54 2010 +0200 test: update font family name Update the name of the test font family to DejaVu, so that backends unable to rely on fontconfig to match font names can find the correct font anyway. test/README | 10 +++++----- test/cairo-test.h | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) commit 3cb882d01b53cb3cec9be62d678dd4ef7ea2c1fd Author: Andrea Canciani <ranma42@gmail.com> Date: Sat Jun 12 16:20:37 2010 +0200 test: make test font family a define In order to make it easier to change the test font family, add it as a define in the global header and always reference the macro in the tests. test/cairo-test.h | 2 ++ test/clip-all.c | 2 +- test/clip-empty-save.c | 2 +- test/clip-empty.c | 2 +- test/clip-operator.c | 2 +- test/font-face-get-type.c | 2 +- test/font-matrix-translation.c | 2 +- test/ft-show-glyphs-positioning.c | 2 +- test/ft-show-glyphs-table.c | 2 +- test/ft-text-antialias-none.c | 2 +- test/ft-text-vertical-layout-type3.c | 2 +- test/get-path-extents.c | 2 +- test/glyph-cache-pressure.c | 2 +- test/inverse-text.c | 6 +++--- test/large-font.c | 2 +- test/operator-clear.c | 2 +- test/operator-source.c | 2 +- test/overlapping-glyphs.c | 2 +- test/pdf-features.c | 2 +- test/ps-features.c | 2 +- test/select-font-face.c | 6 +++--- test/select-font-no-show-text.c | 2 +- test/show-text-current-point.c | 2 +- test/smask-text.c | 2 +- test/smask.c | 2 +- test/text-antialias-gray.c | 2 +- test/text-antialias-none.c | 2 +- test/text-antialias-subpixel.c | 2 +- test/text-glyph-range.c | 2 +- test/text-pattern.c | 2 +- test/text-rotate.c | 2 +- test/text-transform.c | 2 +- test/text-zero-len.c | 2 +- test/unbounded-operator.c | 2 +- test/user-font-rescale.c | 6 +++--- 35 files changed, 42 insertions(+), 40 deletions(-) commit b1e4df928fb59ee295830d5c0fa26330714f88f2 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Jun 12 15:28:28 2010 +0100 test/coverage: Refine comments Joonas didn't like me putting incorrect labels in my comments. Said they were misleading and worse than useless. Harsh. test/coverage.c | 20 +++++++++++++------- 1 files changed, 13 insertions(+), 7 deletions(-) commit 968374b6335199cbf02c8c4733537388da2a45f5 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Jun 12 15:14:17 2010 +0100 test/coverage: Add a comment describing the column_triangle geometry() test/coverage.c | 20 ++++++++++++++++++++ 1 files changed, 20 insertions(+), 0 deletions(-) commit 299263f8c912d3468d51ed22bcb6ab96275709f0 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Jun 12 13:48:12 2010 +0100 test: Disable tests that are too slow to run by default. Introduce a slow mode [-s] to the runner, and add "slow" to the requirements for the very long running tests like the coverage stress tests. test/cairo-test-runner.c | 17 +++++++++++++++-- test/coverage.c | 12 ++++++------ test/half-coverage.c | 4 ++-- test/mask-glyphs.c | 2 +- test/partial-coverage.c | 16 ++++++++-------- 5 files changed, 32 insertions(+), 19 deletions(-) commit 53139261c7ba1a4cc0b869cb48c136b0362a3b0c Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Jun 12 13:40:17 2010 +0100 test: Use exact matching on test names by default. Specifying individual tests to run is more common than using a group chosen from a keyword, so change the default matching mode and introduce '-k' to select by keyword. test/cairo-test-runner.c | 45 ++++++++++++++++++++++----------------------- 1 files changed, 22 insertions(+), 23 deletions(-) commit 97288b0859bae6cea1e3bff84b632e00f1d10917 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Jun 12 13:34:27 2010 +0100 test: More minute geometry exercised by partial-coverage. Moving beyond the capabilities of cairo... test/Makefile.am | 2 + test/partial-coverage-intersecting-quads.ref.png | Bin 0 -> 189 bytes ...partial-coverage-intersecting-triangles.ref.png | Bin 0 -> 202 bytes test/partial-coverage.c | 131 ++++++++++++++++++++ 4 files changed, 133 insertions(+), 0 deletions(-) commit 4e3ef57bc892b0b046c486390adc7164a1de64de Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Jun 12 13:18:42 2010 +0100 test: More coverage coverage. A couple of different shapes that aim to test the tessellation side of the rasterisers more... And worryingly there does seem to be an unexpected systematic error. test/Makefile.am | 8 + test/coverage-column-triangles.ref.png | Bin 0 -> 208 bytes test/coverage-column-triangles.xlib.xfail.png | Bin 0 -> 12745 bytes test/coverage-intersecting-quads.ref.png | Bin 0 -> 253 bytes test/coverage-intersecting-quads.xlib.xfail.png | Bin 0 -> 15296 bytes test/coverage-intersecting-triangles.ref.png | Bin 0 -> 209 bytes .../coverage-intersecting-triangles.xlib.xfail.png | Bin 0 -> 16728 bytes test/coverage-row-triangles.ref.png | Bin 0 -> 208 bytes test/coverage-row-triangles.xlib.xfail.png | Bin 0 -> 12671 bytes test/coverage.c | 249 +++++++++++++++++++- 10 files changed, 251 insertions(+), 6 deletions(-) commit 9b7cc7641b691a3b9e3d5edd51053c9a095d9c5a Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Jun 12 10:41:09 2010 +0100 cairo: Create error objects for cairo_t Perform an early check for error status and prevent creation of a full object. This means that we do not pass down error objects to the initialisation routines and so can survive without paranoia inside the library. It also has brings consistency that like the other constructors, no object is created in error and we can skip the cairo_destroy() if we choose (and we don't waste one of the precious zero-alloc context slots. Fixes crash in test/a8-mask introduced by 1a544361e845. src/cairo-debug.c | 2 + src/cairo-mutex-list-private.h | 1 + src/cairo.c | 76 ++++++++++++++++++++++++++++++++++------ src/cairoint.h | 3 ++ 4 files changed, 71 insertions(+), 11 deletions(-) commit 9b6617a3b3b31d52e6646400b16ec56c754bfebd Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jun 11 21:58:34 2010 +0100 image: Apply component alpha to composite masks. If we need to pattern requires component alpha, then we must take a copy of the image and enable component alpha for pixman. Fixes test/text-antialias-subpixel on xlib-fallback -- i.e. we will finally render subpixel antialiased text on ancient XServers. src/cairo-image-surface.c | 40 ++++++++++++++++++++++++---------------- 1 files changed, 24 insertions(+), 16 deletions(-) commit 7440fc07f77b112b00957f5459129dba23a5683f Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jun 11 21:29:02 2010 +0100 test: xlib ref image refresh test/Makefile.am | 26 ++++++++++++++----- ...clip-fill-unbounded.xlib-fallback.rgb24.ref.png | Bin 1429 -> 1438 bytes test/clip-fill-unbounded.xlib.argb32.ref.png | Bin 1758 -> 1759 bytes test/clip-fill-unbounded.xlib.rgb24.ref.png | Bin 1426 -> 1430 bytes test/clip-group-shapes-circles.xlib.ref.png | Bin 0 -> 1534 bytes ...-group-shapes-unaligned-rectangles.xlib.ref.png | Bin 0 -> 431 bytes ...ip-stroke-unbounded.xlib-fallback.rgb24.ref.png | Bin 1429 -> 1437 bytes test/clip-stroke-unbounded.xlib.argb32.ref.png | Bin 1792 -> 1785 bytes test/clip-stroke-unbounded.xlib.rgb24.ref.png | Bin 1426 -> 1442 bytes test/clip-stroke.xlib-fallback.ref.png | Bin 1490 -> 1491 bytes test/clip-stroke.xlib.ref.png | Bin 1490 -> 1491 bytes test/clipped-group.xlib.ref.png | Bin 0 -> 289 bytes test/coverage-rectangles.xlib.xfail.png | Bin 0 -> 15981 bytes test/finer-grained-fallbacks.xlib-fallback.ref.png | Bin 0 -> 919 bytes test/finer-grained-fallbacks.xlib.ref.png | Bin 1111 -> 1110 bytes test/finer-grained-fallbacks.xlib.rgb24.ref.png | Bin 1114 -> 856 bytes test/ft-text-vertical-layout-type1.xlib.ref.png | Bin 3639 -> 3625 bytes test/ft-text-vertical-layout-type3.xlib.ref.png | Bin 3605 -> 3597 bytes test/leaky-dashed-rectangle.xlib.ref.png | Bin 347 -> 344 bytes test/linear-gradient-subset.xlib.ref.png | Bin 0 -> 782 bytes test/pthread-show-text.xlib-fallback.ref.png | Bin 0 -> 42073 bytes ...m-intersections-curves-nz.xlib-fallback.ref.png | Bin 264288 -> 264277 bytes test/random-intersections-curves-nz.xlib.ref.png | Bin 264288 -> 264277 bytes test/recording-surface-pattern.xlib.argb32.ref.png | Bin 0 -> 3055 bytes test/recording-surface-pattern.xlib.rgb24.ref.png | Bin 0 -> 3124 bytes test/scale-offset-image.xlib-fallback.xfail.png | Bin 8706 -> 8686 bytes test/scale-offset-image.xlib.ref.png | Bin 0 -> 9136 bytes test/scale-offset-image.xlib.xfail.png | Bin 9132 -> 0 bytes test/scale-offset-similar.xlib-fallback.xfail.png | Bin 8706 -> 8686 bytes test/scale-offset-similar.xlib.xfail.png | Bin 8696 -> 8698 bytes test/self-intersecting.xlib.ref.png | Bin 252 -> 208 bytes test/smask-text.xlib-fallback.ref.png | Bin 0 -> 1874 bytes test/smask.xlib-fallback.ref.png | Bin 0 -> 3423 bytes test/subsurface.xlib.ref.png | Bin 0 -> 1782 bytes test/text-rotate.xlib-fallback.ref.png | Bin 0 -> 16592 bytes 35 files changed, 19 insertions(+), 7 deletions(-) commit a049889c64131b170b66ed8906309f6adee80fa5 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jun 11 21:26:26 2010 +0100 pattern: Remove incorrect optimisations from _cairo_pattern_aquire_surface() Safe reduction of patterns is performed in gstate, so not only are the extra checks in _cairo_pattern_acquire_surface redundant there are also unsafe. Simply remove them. Fixes test/radial-gradient-extend [xlib-fallback] src/cairo-pattern.c | 110 ++++++++------------------------------------------- 1 files changed, 17 insertions(+), 93 deletions(-) commit 00bc1d1578dc2640db64315270b00073697fb9fa Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jun 11 20:31:29 2010 +0100 pattern: Remove extraordinary _cairo_pattern_fini_snapshot(). Miraculously the circular references from self-copy have disappeared and the forced finish within _cairo_pattern_fini_snapshot() now quite explosive. By replacing them with an ordinary _cairo_pattern_fini() the crash from test/smask-image-mask disappear along and valgrind remains happy. Fixes test/smask-image-mask and similar. src/cairo-pattern.c | 17 ----------------- src/cairo-recording-surface.c | 24 ++++++++++++------------ src/cairoint.h | 3 --- 3 files changed, 12 insertions(+), 32 deletions(-) commit 1098e203dc21529f138bfabfa7558f61b8427ea0 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jun 11 18:07:28 2010 +0100 test: pdf ref image refresh test/Makefile.am | 11 +++++++++++ test/clear-source.pdf.xfail.png | Bin 0 -> 974 bytes test/clip-fill-unbounded.pdf.argb32.ref.png | Bin 0 -> 1244 bytes test/clip-stroke-unbounded.pdf.argb32.xfail.png | Bin 0 -> 1351 bytes test/clip-unbounded.pdf.argb32.xfail.png | Bin 0 -> 95 bytes test/clip-unbounded.pdf.rgb24.xfail.png | Bin 0 -> 95 bytes test/filter-nearest-offset.pdf.xfail.png | Bin 2152 -> 4522 bytes test/filter-nearest-transformed.pdf.xfail.png | Bin 532 -> 532 bytes test/pthread-show-text.pdf.ref.png | Bin 0 -> 47015 bytes test/radial-gradient-source.pdf.argb32.ref.png | Bin 0 -> 235290 bytes test/rotate-image-surface-paint.pdf.xfail.png | Bin 358 -> 442 bytes ...scale-source-surface-paint.pdf.argb32.xfail.png | Bin 0 -> 157 bytes .../scale-source-surface-paint.pdf.rgb24.xfail.png | Bin 0 -> 152 bytes test/surface-pattern-operator.pdf.argb32.xfail.png | Bin 0 -> 5485 bytes test/surface-pattern-operator.pdf.rgb24.xfail.png | Bin 0 -> 2095 bytes 15 files changed, 11 insertions(+), 0 deletions(-) commit 1c91d019c54afde0edb022312491b086588ce6c4 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jun 11 17:47:08 2010 +0100 test: ps ref image refresh. Update to gs-8.71 and some additional reference images for the new tests. test/Makefile.am | 116 +++++++++++--------- test/README | 2 +- test/big-line.ps.ref.png | Bin 0 -> 946 bytes test/bug-bo-rectangular.ps.xfail.png | Bin 0 -> 945 bytes test/caps-joins-curve.ps.ref.png | Bin 3728 -> 3715 bytes test/caps-joins.ps.ref.png | Bin 2282 -> 2268 bytes test/caps-sub-paths.ps.ref.png | Bin 0 -> 163 bytes test/caps.ps.ref.png | Bin 1466 -> 1478 bytes test/clear-source.ps.xfail.png | Bin 0 -> 552 bytes test/clip-disjoint.ps.ref.png | Bin 0 -> 4680 bytes test/clip-fill-rule.ps.argb32.ref.png | Bin 0 -> 251 bytes test/clip-fill-rule.ps.rgb24.ref.png | Bin 0 -> 234 bytes test/clip-fill-rule.ps2.argb32.ref.png | Bin 310 -> 0 bytes test/clip-fill-rule.ps2.rgb24.ref.png | Bin 302 -> 0 bytes test/clip-fill-rule.ps3.argb32.ref.png | Bin 310 -> 0 bytes test/clip-fill-rule.ps3.rgb24.ref.png | Bin 302 -> 0 bytes test/clip-fill-unbounded.ps.argb32.xfail.png | Bin 0 -> 1244 bytes test/clip-image.ps.ref.png | Bin 0 -> 2498 bytes test/clip-nesting.ps.argb32.ref.png | Bin 0 -> 441 bytes test/clip-nesting.ps.rgb24.ref.png | Bin 0 -> 492 bytes test/clip-nesting.ps2.argb32.ref.png | Bin 651 -> 0 bytes test/clip-nesting.ps2.rgb24.ref.png | Bin 636 -> 0 bytes test/clip-nesting.ps3.argb32.ref.png | Bin 651 -> 0 bytes test/clip-nesting.ps3.rgb24.ref.png | Bin 636 -> 0 bytes test/clip-push-group.ps.ref.png | Bin 0 -> 120 bytes test/clip-push-group.ps2.argb32.ref.png | Bin 179 -> 0 bytes test/clip-push-group.ps2.rgb24.ref.png | Bin 179 -> 0 bytes test/clip-push-group.ps3.argb32.ref.png | Bin 179 -> 0 bytes test/clip-push-group.ps3.rgb24.ref.png | Bin 179 -> 0 bytes test/clip-stroke-unbounded.ps.argb32.ref.png | Bin 0 -> 1351 bytes test/clip-stroke.ps.xfail.png | Bin 0 -> 662 bytes test/clip-twice.ps.argb32.ref.png | Bin 0 -> 492 bytes test/clip-twice.ps.rgb24.ref.png | Bin 0 -> 409 bytes test/clip-twice.ps2.argb32.ref.png | Bin 575 -> 0 bytes test/clip-twice.ps2.rgb24.ref.png | Bin 541 -> 0 bytes test/clip-twice.ps3.argb32.ref.png | Bin 575 -> 0 bytes test/clip-twice.ps3.rgb24.ref.png | Bin 541 -> 0 bytes test/clipped-group.ps2.ref.png | Bin 343 -> 214 bytes test/clipped-group.ps3.ref.png | Bin 343 -> 214 bytes test/copy-path.ps.ref.png | Bin 0 -> 379 bytes test/copy-path.ps2.ref.png | Bin 474 -> 0 bytes test/copy-path.ps3.ref.png | Bin 474 -> 0 bytes test/dash-caps-joins.ps.ref.png | Bin 0 -> 3669 bytes test/dash-caps-joins.ps2.argb32.ref.png | Bin 3870 -> 0 bytes test/dash-caps-joins.ps2.rgb24.ref.png | Bin 3870 -> 0 bytes test/dash-caps-joins.ps3.argb32.ref.png | Bin 3870 -> 0 bytes test/dash-caps-joins.ps3.rgb24.ref.png | Bin 3870 -> 0 bytes test/dash-curve.ps2.ref.png | Bin 27293 -> 24355 bytes test/dash-curve.ps3.ref.png | Bin 27293 -> 24355 bytes test/dash-infinite-loop.ps.ref.png | Bin 0 -> 617 bytes test/dash-scale.ps.ref.png | Bin 0 -> 5965 bytes test/dash-scale.ps2.argb32.ref.png | Bin 6318 -> 0 bytes test/dash-scale.ps2.rgb24.ref.png | Bin 6316 -> 0 bytes test/dash-scale.ps3.argb32.ref.png | Bin 6318 -> 0 bytes test/dash-scale.ps3.rgb24.ref.png | Bin 6316 -> 0 bytes test/dash-state.ps2.ref.png | Bin 10219 -> 8740 bytes test/dash-state.ps3.ref.png | Bin 10219 -> 8740 bytes test/degenerate-arc.ps2.ref.png | Bin 585 -> 509 bytes test/degenerate-arc.ps3.ref.png | Bin 585 -> 509 bytes test/degenerate-curve-to.ps.xfail.png | Bin 202 -> 221 bytes test/degenerate-dash.ps.xfail.png | Bin 1835 -> 1837 bytes test/degenerate-path.ps.argb32.xfail.png | Bin 236 -> 234 bytes test/degenerate-path.ps.rgb24.xfail.png | Bin 186 -> 184 bytes test/degenerate-pen.ps.ref.png | Bin 0 -> 759 bytes test/degenerate-pen.ps2.ref.png | Bin 865 -> 0 bytes test/degenerate-pen.ps3.ref.png | Bin 865 -> 0 bytes test/degenerate-rel-curve-to.ps.ref.png | Bin 0 -> 225 bytes test/degenerate-rel-curve-to.ps.xfail.png | Bin 202 -> 0 bytes test/fill-and-stroke.ps.argb32.ref.png | Bin 0 -> 257 bytes test/fill-and-stroke.ps.rgb24.ref.png | Bin 0 -> 225 bytes test/fill-and-stroke.ps2.argb32.ref.png | Bin 310 -> 0 bytes test/fill-and-stroke.ps2.rgb24.ref.png | Bin 319 -> 0 bytes test/fill-and-stroke.ps3.argb32.ref.png | Bin 310 -> 0 bytes test/fill-and-stroke.ps3.rgb24.ref.png | Bin 319 -> 0 bytes .../fill-degenerate-sort-order.ps.argb32.xfail.png | Bin 1901 -> 1903 bytes test/fill-degenerate-sort-order.ps.rgb24.xfail.png | Bin 1645 -> 1638 bytes test/fill-image.ps.ref.png | Bin 1799 -> 1645 bytes test/fill-rule.ps2.argb32.ref.png | Bin 2253 -> 1878 bytes test/fill-rule.ps2.rgb24.ref.png | Bin 2031 -> 1524 bytes test/fill-rule.ps3.argb32.ref.png | Bin 2253 -> 1878 bytes test/fill-rule.ps3.rgb24.ref.png | Bin 2031 -> 1524 bytes test/finer-grained-fallbacks.ps2.argb32.ref.png | Bin 1173 -> 1168 bytes test/finer-grained-fallbacks.ps2.rgb24.ref.png | Bin 1154 -> 936 bytes test/finer-grained-fallbacks.ps3.argb32.ref.png | Bin 1173 -> 1168 bytes test/finer-grained-fallbacks.ps3.rgb24.ref.png | Bin 1154 -> 936 bytes test/ft-text-vertical-layout-type1.ps.ref.png | Bin 1634 -> 2088 bytes test/ft-text-vertical-layout-type3.ps.ref.png | Bin 1636 -> 2134 bytes test/group-unaligned.ps.ref.png | Bin 332 -> 321 bytes test/group-unaligned.ps.rgb24.xfail.png | Bin 0 -> 371 bytes test/implicit-close.ps.ref.png | Bin 0 -> 252 bytes test/joins.ps.ref.png | Bin 5496 -> 4230 bytes test/leaky-dashed-rectangle.ps.ref.png | Bin 444 -> 358 bytes test/leaky-dashed-stroke.ps.ref.png | Bin 0 -> 5293 bytes test/leaky-dashed-stroke.ps2.ref.png | Bin 5511 -> 0 bytes test/leaky-dashed-stroke.ps3.ref.png | Bin 5511 -> 0 bytes test/leaky-polygon.ps.ref.png | Bin 0 -> 289 bytes test/leaky-polygon.ps2.ref.png | Bin 354 -> 0 bytes test/leaky-polygon.ps3.ref.png | Bin 354 -> 0 bytes test/line-width-scale.ps2.ref.png | Bin 3911 -> 3431 bytes test/line-width-scale.ps3.ref.png | Bin 3911 -> 3431 bytes test/linear-gradient-subset.ps3.ref.png | Bin 0 -> 619 bytes test/long-dashed-lines.ps2.ref.png | Bin 1516 -> 1329 bytes test/long-dashed-lines.ps3.ref.png | Bin 1516 -> 1329 bytes test/new-sub-path.ps2.argb32.ref.png | Bin 556 -> 398 bytes test/new-sub-path.ps3.argb32.ref.png | Bin 556 -> 398 bytes test/operator-alpha-alpha.ps.xfail.png | Bin 1338 -> 3429 bytes test/over-around-source.ps2.argb32.ref.png | Bin 522 -> 508 bytes test/over-around-source.ps3.argb32.ref.png | Bin 522 -> 508 bytes test/over-below-source.ps2.argb32.ref.png | Bin 503 -> 368 bytes test/over-below-source.ps2.rgb24.ref.png | Bin 0 -> 362 bytes test/over-below-source.ps3.argb32.ref.png | Bin 503 -> 368 bytes test/over-below-source.ps3.rgb24.ref.png | Bin 0 -> 362 bytes test/path-append.ps.ref.png | Bin 4516 -> 4525 bytes test/pixman-rotate.ps.argb32.ref.png | Bin 0 -> 355 bytes test/push-group-color.ps3.ref.png | Bin 0 -> 2561 bytes test/random-intersections-curves-eo.ps.ref.png | Bin 151676 -> 151668 bytes test/random-intersections-curves-nz.ps.ref.png | Bin 134732 -> 134746 bytes test/random-intersections-eo.ps.ref.png | Bin 78806 -> 78037 bytes test/random-intersections-nonzero.ps.ref.png | Bin 77299 -> 76450 bytes test/recording-surface-pattern.ps.argb32.ref.png | Bin 0 -> 3064 bytes test/recording-surface-pattern.ps.rgb24.ref.png | Bin 0 -> 3147 bytes test/recording-surface-pattern.ps2.argb32.ref.png | Bin 3257 -> 0 bytes test/recording-surface-pattern.ps2.rgb24.ref.png | Bin 3873 -> 0 bytes test/recording-surface-pattern.ps3.argb32.ref.png | Bin 3257 -> 0 bytes test/recording-surface-pattern.ps3.rgb24.ref.png | Bin 3873 -> 0 bytes test/reflected-stroke.ps.ref.png | Bin 0 -> 3368 bytes test/reflected-stroke.ps2.ref.png | Bin 3898 -> 0 bytes test/reflected-stroke.ps3.ref.png | Bin 3898 -> 0 bytes test/rounded-rectangle-fill.ps.ref.png | Bin 0 -> 551 bytes test/rounded-rectangle-stroke.ps.ref.png | Bin 0 -> 568 bytes test/scale-offset-image.ps.ref.png | Bin 7289 -> 7697 bytes test/spline-decomposition.ps.ref.png | Bin 9028 -> 8939 bytes test/stroke-image.ps.ref.png | Bin 1641 -> 1682 bytes test/subsurface.ps.ref.png | Bin 0 -> 1651 bytes test/surface-pattern-big-scale-down.ps.ref.png | Bin 0 -> 235 bytes test/surface-pattern-big-scale-down.ps.xfail.png | Bin 238 -> 0 bytes test/text-glyph-range.ps.ref.png | Bin 0 -> 1253 bytes test/text-glyph-range.ps2.ref.png | Bin 1389 -> 0 bytes test/text-glyph-range.ps3.ref.png | Bin 1389 -> 0 bytes test/text-rotate.ps.ref.png | Bin 0 -> 8765 bytes test/text-rotate.ps2.ref.png | Bin 6851 -> 0 bytes test/text-rotate.ps3.ref.png | Bin 6851 -> 0 bytes test/text-transform.ps.ref.png | Bin 0 -> 3430 bytes test/text-transform.ps2.ref.png | Bin 4154 -> 0 bytes test/text-transform.ps3.ref.png | Bin 4154 -> 0 bytes test/trap-clip.ps2.argb32.ref.png | Bin 4849 -> 4839 bytes test/trap-clip.ps2.rgb24.ref.png | Bin 5617 -> 4729 bytes test/trap-clip.ps3.argb32.ref.png | Bin 5591 -> 4751 bytes test/trap-clip.ps3.rgb24.ref.png | Bin 5512 -> 4553 bytes test/twin.ps.ref.png | Bin 2142 -> 2136 bytes test/user-font-proxy.ps.ref.png | Bin 7766 -> 7837 bytes test/user-font-rescale.ps.ref.png | Bin 0 -> 6781 bytes test/user-font-rescale.ps2.ref.png | Bin 8041 -> 0 bytes test/user-font-rescale.ps3.ref.png | Bin 8041 -> 0 bytes test/xlib-expose-event.ps.ref.png | Bin 0 -> 39035 bytes 155 files changed, 65 insertions(+), 53 deletions(-) commit 1a544361e845e4881990624a597f9dc2b82d1c73 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jun 11 16:04:41 2010 +0100 gstate: Update cached matrix state after device transform changes on the target Commit 8d67186cb291cb877e52b987e2ac18c2a1175a57 caches whether the device transform is identity on context creation. However, the api is quite lax and allows the user to modify the device transform *after* he has started to use the surface in a context, as apparently WebKit does. Since this is not the only instance where we may need to invalidate caches if the user modifies state, introduce a simple mechanism for hooking into notifications of property changes. Fixes test/clip-device-offset. src/Makefile.sources | 1 + src/cairo-gstate-private.h | 3 ++ src/cairo-gstate.c | 28 ++++++++++++++++++++--- src/cairo-observer.c | 50 +++++++++++++++++++++++++++++++++++++++++++ src/cairo-surface-private.h | 1 + src/cairo-surface.c | 6 +++++ src/cairo-types-private.h | 6 +++++ src/cairoint.h | 5 ++++ 8 files changed, 96 insertions(+), 4 deletions(-) commit f74b11415a1f7682dd50c222baa8815ef93681dc Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jun 11 14:06:15 2010 +0100 test: Use a group to render PDF correctly using poppler. In order to support blend modes, we need to use a clear background whilst rendering the PDF, which inspired the use of DEST_OVER to avoid having to render to an intermediate surface. However, the adjunct of using subpixel text means that we cannot simply using the alpha channel as the sole mask and so need to render to an intermediate and paint it over an opaque background. test/any2ppm.c | 9 ++++++--- test/pdf2png.c | 9 ++++++--- 2 files changed, 12 insertions(+), 6 deletions(-) commit 7f227ec8d3f981dbbf2ca1914bf7fd29d9cdfd05 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jun 11 12:54:15 2010 +0100 Revert "test/pdf2png: Don't use DEST_OVER as poppler starts using subpixel text." This reverts commit 506b2ebe714d61a64972b607a42a55e48d1c722a. We have conflicting requirements here. In order to support extended blend modes correctly we need to use DEST_OVER, at the expense of supporting subpixel text. More thought required. test/any2ppm.c | 9 +++++---- test/pdf2png.c | 10 +++++----- 2 files changed, 10 insertions(+), 9 deletions(-) commit c761e0c5bb55e8869521ad5b4a2447ea9abcb4d1 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jun 11 12:40:36 2010 +0100 test: Restrict the coverage tests to raster targets. Typo inside the requirements failed to prevent the tests running on the vector backends. test/coverage.c | 4 ++-- test/half-coverage.c | 4 ++-- test/partial-coverage.c | 18 +++++++++--------- 3 files changed, 13 insertions(+), 13 deletions(-) commit b49c944fe4abb9f3c70fac02a71061bf8d07259a Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jun 11 12:38:17 2010 +0100 test: Add a convenience script to disable the screensaver when testing If the screensaver activates, it can cause failures when attempting to render into an xlib window, so inhibit if we know how. test/Makefile.am | 2 +- test/run-cairo-test-suite.sh | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletions(-) commit 4e4724d48c63d0cd4ec507ce72dcc55fb6e5f584 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jun 11 12:19:56 2010 +0100 gl: make check insists "cairoint.h" is first. src/cairo-gl-gradient.c | 5 ++--- 1 files changed, 2 insertions(+), 3 deletions(-) commit 4edbcf1b1d046c9c626a0c0ad10d3c71f17984f2 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jun 11 12:17:19 2010 +0100 color: Mark _cairo_color_get_content() as private. src/cairoint.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 506b2ebe714d61a64972b607a42a55e48d1c722a Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jun 11 12:04:39 2010 +0100 test/pdf2png: Don't use DEST_OVER as poppler starts using subpixel text. Using DEST_OVER in this form to paint the background white fails in the presence of subpixel geometry (particular text), so remove the hack and simply paint the background white prior to passing the surface to poppler. KISS. test/any2ppm.c | 9 ++++----- test/pdf2png.c | 10 +++++----- 2 files changed, 9 insertions(+), 10 deletions(-) commit edb73b6dcf1adce40d6c10c492e3f78556e22b85 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jun 11 11:16:42 2010 +0100 xlib: Adjust trapezoid precision based on antialias. Render supports two modes of precision when rendering trapezoids. Precise specifies points sampling on a 15x17 grid, ala pixman. Imprecise allows the driver more freedom in the methods used, which may be more amenable to acceleration. Choose to use the imprecise mode by default, but still allow users to force the more rigidly specified precision by changing the antialias mode. src/cairo-xlib-surface-private.h | 1 + src/cairo-xlib-surface.c | 31 +++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 0 deletions(-) commit 290749bdb5c634c030db81722214661c34344403 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jun 11 10:59:17 2010 +0100 polygon: Reorder conditionals based on likelihood. The vast majority of edges will be unclipped, so process those first. src/cairo-polygon.c | 30 +++++++++++++++--------------- 1 files changed, 15 insertions(+), 15 deletions(-) commit 55037bfb2454a671332d961e061c712ab5471580 Author: Karl Tomlinson <karlt+@karlt.net> Date: Fri Jun 11 10:35:43 2010 +0100 xlib: Find matching Visual for XRenderFormat Not only is this useful for users to know which Visual matches any particular Cairo surface, it should also close a few obscure bugs of not converting images correctly on upload. Fixes: Bug 28492 - cairo_xlib_surface_create_with_xrender_format does not create visual for resulting surface https://bugs.freedesktop.org/show_bug.cgi?id=28492 Mozilla Bug 567065 - Try to create offscreen Xlib surface from existing visual if possible https://bugzilla.mozilla.org/show_bug.cgi?id=567065 Mozilla Bug 445250 - cairo_draw_with_xlib should provide a non-NULL visual to callback https://bugzilla.mozilla.org/show_bug.cgi?id=445250 Reported-by: Oleg Romashin <romaxa@gmail.com> src/cairo-xlib-surface.c | 74 ++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 65 insertions(+), 9 deletions(-) commit cf426bce8ebd3aff5d50c6a54bbd731132b3d312 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jun 11 10:05:09 2010 +0100 test: Add a simple coverage test. This test case should be much clearer than half-coverage over what it purports to actually test. In each pixel, it draws a single geometric primitive that coverages a known percentage of the pixel and then we measure how close the rasterisers are to that ideal. test/Makefile.am | 2 + test/Makefile.sources | 1 + test/coverage-rectangles.ref.png | Bin 0 -> 259 bytes test/coverage-triangles.ref.png | Bin 0 -> 253 bytes test/coverage.c | 135 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 138 insertions(+), 0 deletions(-) commit bd3d9ef3d1dbc5364e79e6afb47d9e124cb61ca4 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jun 11 09:12:16 2010 +0100 test: Distinguish tests that throw an error from a normal fail. Hitting an error in a test case is almost as bad as crashing, and the severity may be lost amidst "normal" failures. So introduce a new class of ERROR so that we can immediately spot these during a test run, and appropriately log them afterwards. test/cairo-test-runner.c | 89 ++++++++++++++++++++++++++++++++++++++++++++- test/cairo-test.c | 20 ++++++++++- test/cairo-test.h | 1 + 3 files changed, 107 insertions(+), 3 deletions(-) commit eeafeebd2ec8ad8a9e7053aaaa0f845b58563b3b Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jun 11 09:06:20 2010 +0100 path: Exponentially grow buffer based on populated points and ops. Instead of simply doubling the buffer size every time we overflow a point or an op, enlarge the buffer to fit twice the number of used points and ops. We expect paths to be fairly consistent in the mix of operations, and this allows the buffer size to tune itself to actual usage and reduce wastage. src/cairo-path-fixed-private.h | 3 ++- src/cairo-path-fixed.c | 39 +++++++++++++++++++-------------------- 2 files changed, 21 insertions(+), 21 deletions(-) commit b0056a86b4f6c92fa7eb89baf8483a46979c8cf1 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Jun 10 18:27:22 2010 +0100 test: Exercise partial coverage some more. Add some overlapping triangles (coarse enough for them to be resolved using Cairo's 24.8 fixed point without loss of precision) to exercise handling of overlapping subpixel geometry. test/Makefile.am | 4 + ...tial-coverage-overlap-half-triangles-eo.ref.png | Bin 0 -> 189 bytes ...partial-coverage-overlap-half-triangles.ref.png | Bin 0 -> 189 bytes ...overage-overlap-three-quarter-triangles.ref.png | Bin 0 -> 186 bytes ...artial-coverage-three-quarter-reference.ref.png | Bin 0 -> 186 bytes test/partial-coverage.c | 284 ++++++++++++++++++-- 6 files changed, 269 insertions(+), 19 deletions(-) commit 836f6166597eaa687b10e5f26fe71e099c434aa1 Author: Andrea Canciani <ranma42@gmail.com> Date: Wed Jun 9 19:09:22 2010 +0200 gl: support single stop gradients src/cairo-gl-gradient-private.h | 2 +- src/cairo-gl-gradient.c | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) commit d17e2c5e23eac302b7463a08205088147da1172a Author: Andrea Canciani <ranma42@gmail.com> Date: Thu Jun 10 10:52:16 2010 +0200 ps: support single stop gradients src/cairo-ps-surface.c | 9 ++++----- 1 files changed, 4 insertions(+), 5 deletions(-) commit eb7fc351156bd66921ac3b3ffbd1fba6ba743ffb Author: Andrea Canciani <ranma42@gmail.com> Date: Thu Jun 10 10:51:50 2010 +0200 pdf: support single stop gradients src/cairo-pdf-surface.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) commit e2660a0eac5f6081bf052db16b8bd85c814d19d8 Author: Andrea Canciani <ranma42@gmail.com> Date: Wed Jun 9 16:59:29 2010 +0200 pattern: improve single stop gradients handling None-extended single stop gradients are now explicitly made clear. src/cairo-pattern.c | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-) commit 7a024bc206aae790c7357be83474126037335ab1 Author: Andrea Canciani <ranma42@gmail.com> Date: Wed Jun 9 17:59:47 2010 +0200 test: exercise ps crash with single stop gradients PS crashes only when using the source operator, as it will otherwise fallback to rasterization of the gradients. test/linear-gradient-one-stop.argb32.ref.png | Bin 0 -> 225 bytes test/linear-gradient-one-stop.c | 2 +- test/linear-gradient-one-stop.ref.png | Bin 344 -> 0 bytes test/linear-gradient-one-stop.rgb24.ref.png | Bin 0 -> 174 bytes test/radial-gradient-one-stop.argb32.ref.png | Bin 0 -> 1392 bytes test/radial-gradient-one-stop.c | 2 +- test/radial-gradient-one-stop.ref.png | Bin 1422 -> 0 bytes test/radial-gradient-one-stop.rgb24.ref.png | Bin 0 -> 1153 bytes 8 files changed, 2 insertions(+), 2 deletions(-) commit a0f8cfe64660c0043db15f9b9cbf1298bf1838d1 Author: Andrea Canciani <ranma42@gmail.com> Date: Tue Jun 8 17:04:00 2010 +0200 pattern: improve degenerate gradients handling Degenerate radial gradients are now considered clear. src/cairo-pattern.c | 35 +++++++++++++++++++++++++---------- 1 files changed, 25 insertions(+), 10 deletions(-) commit bccd89b4177b5f5bd05def9bee5f0927a9f25e4a Author: Andrea Canciani <ranma42@gmail.com> Date: Tue Jun 8 15:45:09 2010 +0200 gstate: correct optimizations Gradient were previously hand-optimized (without properly checking for extend modes). By properly using _cairo_pattern functions we avoid code duplication and bugs. Fixes linear-gradient-extend, radial-gradient-extend. src/cairo-gstate.c | 85 ++++++++++----------------------------------------- 1 files changed, 17 insertions(+), 68 deletions(-) commit 06c6207ad4205f211be70e324c6d32ea7d28dca8 Author: Andrea Canciani <ranma42@gmail.com> Date: Tue Jun 1 19:40:14 2010 +0200 pattern: add gradient_is_solid function It contains in a single place the logic needed to check if a gradient pattern is solid (within a specified region). src/cairo-pattern.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++ src/cairoint.h | 5 ++++ 2 files changed, 58 insertions(+), 0 deletions(-) commit 561625ee3bd2732457eaaf28937edf557ee7661d Author: Andrea Canciani <ranma42@gmail.com> Date: Tue Jun 1 19:39:02 2010 +0200 pattern: improve clear/opaque check functions _cairo_pattern_is_opaque was missing some checks about the extend type. Conversely _cairo_pattern_is_clear was being too strict about gradients. src/cairo-pattern.c | 112 +++++++++++++++++++++++++++++++++++++++++++++++---- src/cairoint.h | 4 ++ 2 files changed, 108 insertions(+), 8 deletions(-) commit baaf312e047a9bea6f54e63cd6534c2ed7448523 Author: Andrea Canciani <ranma42@gmail.com> Date: Mon Apr 19 09:53:00 2010 +0200 pattern: remove content field from solid patterns The content field in solid patterns had ill-defined semantic (or no semantic at all), thus it can be removed. src/cairo-color.c | 16 ++++++++++++++++ src/cairo-gl-surface.c | 2 +- src/cairo-gstate.c | 14 +++++--------- src/cairo-pattern.c | 37 ++++++++++--------------------------- src/cairo-script-surface.c | 9 +++------ src/cairo-surface.c | 4 ++-- src/cairo-types-private.h | 1 - src/cairo-xlib-surface.c | 6 +++--- src/cairo.c | 4 ++-- src/cairoint.h | 9 +++++---- 10 files changed, 47 insertions(+), 55 deletions(-) commit 7461947eb1a5f002a5931303843a5a2deca0e383 Author: Andrea Canciani <ranma42@gmail.com> Date: Mon Apr 19 09:51:26 2010 +0200 surface: remove content argument from is_similar The content argument was basically unuses. Xlib change extracted from ickle's wip/compositor branch. src/cairo-directfb-surface.c | 2 +- src/cairo-pattern.c | 5 ++--- src/cairo-surface.c | 5 ++--- src/cairo-win32-surface.c | 3 +-- src/cairo-xlib-surface.c | 30 ++---------------------------- src/cairoint.h | 6 ++---- 6 files changed, 10 insertions(+), 41 deletions(-) commit ef5f9b5c61750207947587173d21b46e2d299f33 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Jun 10 14:13:53 2010 +0100 test: Update partial coverage. Gah, no wonder the output looked wrong for the triangles, they only covered half the pixel. So separate triangles into two cases. test/Makefile.am | 2 + test/partial-coverage-half-reference.ref.png | Bin 0 -> 189 bytes test/partial-coverage-half-triangles.ref.png | Bin 0 -> 189 bytes test/partial-coverage.c | 98 ++++++++++++++++++++++++- 4 files changed, 96 insertions(+), 4 deletions(-) commit 8d67186cb291cb877e52b987e2ac18c2a1175a57 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Jun 10 11:36:58 2010 +0100 gstate: Track whether the combination of ctm * device is identity. In the fairly common condition that both the ctm and the device transforms are identity, the function overhead of calling the matrix multiplication on the point overwhelmingly dominates. src/cairo-clip.c | 1 + src/cairo-gstate-private.h | 310 ++++++++++++++++++++++++++++++++++++++++++++ src/cairo-gstate.c | 18 +++- src/cairoint.h | 295 ----------------------------------------- 4 files changed, 327 insertions(+), 297 deletions(-) commit 1349728d1ef63ed562a3fd0ee3c0a89aaba77616 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Jun 10 11:26:12 2010 +0100 test: Add partial coverage. Another experiment in measuring consistency of rasterisation stratagems across the backends. test/Makefile.am | 3 + test/Makefile.sources | 1 + test/partial-coverage-rectangles.ref.png | Bin 0 -> 202 bytes test/partial-coverage-reference.ref.png | Bin 0 -> 202 bytes test/partial-coverage-triangles.ref.png | Bin 0 -> 202 bytes test/partial-coverage.c | 213 ++++++++++++++++++++++++++++++ 6 files changed, 217 insertions(+), 0 deletions(-) commit 486118361ad0c2e68fa9f6b44ddb10e84d237eca Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Jun 10 11:28:26 2010 +0100 test: Fix half-coverage colouration. Hmm, red over red makes the test pointless. The test still remains of highly dubious quality, as it primarily serves as a rendercheck more than a test of Cairo. The best hope for this test is that it inspires a better one. And incorporate the notes made by Joonas. test/half-coverage.c | 28 +++++++++++++++++++++++++++- 1 files changed, 27 insertions(+), 1 deletions(-) commit 5cb764850f7c405085739647bac2809045e7cdf3 Author: Dmitri Vorobiev <dmitri.vorobiev@movial.com> Date: Wed Jun 9 19:20:27 2010 +0300 scaled-font: optimize cairo_scaled_font_text_to_glyphs() This patch serves two purposes. First, it factors out the heavy part of the cairo_scaled_font_text_to_glyphs() routine thus allowing GCC to better optimize the cache cleanup loop. Keeping the look-up table indices in a separate array speeds up array initialization even further. Second, this patch introduces a shortcut for the case when the string to be rendered consists of a single character. In this case, caching is not necessary at all. We have a benchmark that uses Cairo to render a large amount of random strings of consisting of printable ASCII characters. Below are Oprofile results collected while running this benchmark. It is easy to see that the heavy part becomes noticeably lighter. Before: Profiling through timer interrupt samples % app name symbol name 198755 13.5580 libcairo.so.2.10907.0 cairo_scaled_font_text_to_glyphs 88580 6.0424 libcairo.so.2.10907.0 _cairo_scaled_glyph_lookup 81127 5.5340 libcairo.so.2.10907.0 _cairo_hash_table_lookup 68186 4.6513 libcairo.so.2.10907.0 cairo_scaled_font_glyph_extents 47145 3.2160 libcairo.so.2.10907.0 _composite_glyphs_via_mask 46327 3.1602 libcairo.so.2.10907.0 _cairo_scaled_font_glyph_device_extents 44817 3.0572 libcairo.so.2.10907.0 _composite_glyphs 40431 2.7580 libcairo.so.2.10907.0 .plt After (note that cairo_scaled_font_text_to_glyphs_internal_single() was inlined): Profiling through timer interrupt samples % app name symbol name 107264 7.6406 libcairo.so.2.10907.0 cairo_scaled_font_text_to_glyphs_internal_multiple 87888 6.2604 libcairo.so.2.10907.0 _cairo_scaled_glyph_lookup 79011 5.6281 libcairo.so.2.10907.0 _cairo_hash_table_lookup 71723 5.1090 libcairo.so.2.10907.0 cairo_scaled_font_glyph_extents 48084 3.4251 libcairo.so.2.10907.0 _composite_glyphs_via_mask 46636 3.3220 libcairo.so.2.10907.0 _cairo_scaled_font_glyph_device_extents 44740 3.1869 libcairo.so.2.10907.0 _composite_glyphs 42472 3.0254 libc-2.8.so _int_malloc 39194 2.7919 libcairo.so.2.10907.0 _cairo_gstate_transform_glyphs_to_backend 38614 2.7506 libcairo.so.2.10907.0 .plt 37063 2.6401 libcairo.so.2.10907.0 _cairo_ft_ucs4_to_index 36856 2.6253 libc-2.8.so random 36376 2.5911 libcairo.so.2.10907.0 _cairo_scaled_glyphs_equal 34545 2.4607 libcairo.so.2.10907.0 cairo_matrix_transform_point 31690 2.2573 libc-2.8.so malloc 29395 2.0939 libcairo.so.2.10907.0 _cairo_matrix_is_identity 26142 1.8621 libcairo.so.2.10907.0 _cairo_utf8_to_ucs4 24406 1.7385 libc-2.8.so free 24059 1.7138 libcairo.so.2.10907.0 cairo_scaled_font_text_to_glyphs [ickle: slightly amended for stylistic consistency.] src/cairo-scaled-font.c | 168 ++++++++++++++++++++++++++++++++--------------- 1 files changed, 114 insertions(+), 54 deletions(-) commit c43399fa68696aa62599fb71752850dd46c15c82 Author: Andrea Canciani <ranma42@gmail.com> Date: Wed Jun 9 17:53:09 2010 +0200 gl: fix compilation on MacOS X MacOS X uses different defines to avoid multiple inclusion of GL header files. Adding them to glew.h fixes the compilation when GL is enabled. src/glew/GL/glew.h | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 6eb5f859f1d38783dc43541e7e87b0c5f91691d8 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Jun 9 10:40:32 2010 +0100 bo: And disable DEBUG_TRAPS again. Meh. I'm going back to bed. Thanks Joonas for catching this. src/cairo-bentley-ottmann.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 85af0ec37456b4eb47c39326b24370a9ccc43092 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Jun 9 10:33:29 2010 +0100 test: Add half-coverage to exercise the rasteriser with subpixel geometry. test/Makefile.sources | 1 + test/half-coverage.c | 129 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 130 insertions(+), 0 deletions(-) commit 56c081bdc6d29df932e6993109586ff275d8de12 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Jun 9 10:33:01 2010 +0100 bo: Fix debugging for changes in internal traps api. src/cairo-bentley-ottmann.c | 10 +++++++--- 1 files changed, 7 insertions(+), 3 deletions(-) commit a946d39555136adc4eff3b68a62ba37f6d9a6299 Author: Benjamin Otte <otte@redhat.com> Date: Tue Jun 8 21:09:51 2010 +0200 gl: Add support for clip regions to the span renderer Clip surface support is still missing, but i suppose that'd need a tiny bit more code... src/cairo-gl-surface.c | 16 +++++++++++++--- 1 files changed, 13 insertions(+), 3 deletions(-) commit f61b3f25aff454800a9d6013012d41633139d896 Author: Benjamin Otte <otte@redhat.com> Date: Tue Jun 8 12:03:36 2010 +0200 gl: Add an assertion that we always have a texture When painting, the sources must be textures and not windows, and we did that wrong previously. This assertion makes sure that never happens again. src/cairo-gl-composite.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit c6c9a24a1df1826cab78bd8ef1c5a1074bafa0d7 Author: Benjamin Otte <otte@redhat.com> Date: Tue Jun 8 04:11:33 2010 +0200 gl: Use CAIRO_COLOR_BLACK ... instead of creating black on our own - and wrong, too. src/cairo-gl-surface.c | 8 +------- 1 files changed, 1 insertions(+), 7 deletions(-) commit 19bc6793d1d9b209d5a03a727288504b1e71f7c4 Author: Benjamin Otte <otte@redhat.com> Date: Tue Jun 8 04:00:02 2010 +0200 gl: Only clone texture surfaces Using non-texture surfaces as source or mask will fail, so we need to fallback. Caught by the subsurface-modify-child test. src/cairo-gl-surface.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) commit 44483d843e4fe1f5db5cf213f76913d683265bb4 Author: Benjamin Otte <otte@redhat.com> Date: Tue Jun 8 03:59:10 2010 +0200 gl: Fix argument order oops... src/cairo-gl-surface.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 72bf1a536775138d79787729994ec9cfe2193be7 Author: Benjamin Otte <otte@redhat.com> Date: Tue Jun 8 01:50:12 2010 +0200 Update my copyright notices to preferred version No more copyright headers containing my name. test/clear-source.c | 35 ++++++++++++++++++----------------- test/clip-fill-no-op.c | 35 ++++++++++++++++++----------------- test/clip-stroke-no-op.c | 35 ++++++++++++++++++----------------- test/pthread-same-source.c | 35 ++++++++++++++++++----------------- test/pthread-similar.c | 35 ++++++++++++++++++----------------- test/xcomposite-projection.c | 35 ++++++++++++++++++----------------- test/zero-mask.c | 35 ++++++++++++++++++----------------- 7 files changed, 126 insertions(+), 119 deletions(-) commit 10d95c7020ca94903d474beb9c8ede89c186cbe3 Author: Andrea Canciani <ranma42@gmail.com> Date: Tue Jun 8 20:48:25 2010 +0200 test: add/update reference images Add missing reference images and update one-stop references according to current subset policy (outside the defined range, the gradient is clear). test/degenerate-linear-gradient.ref.png | Bin 0 -> 232 bytes test/degenerate-radial-gradient.ref.png | Bin 0 -> 428 bytes test/linear-gradient-one-stop.ref.png | Bin 468 -> 344 bytes test/radial-gradient-one-stop.ref.png | Bin 3772 -> 1422 bytes 4 files changed, 0 insertions(+), 0 deletions(-) commit dd0f8872711d9896416cca2027f578f7d58d228f Author: Andrea Canciani <ranma42@gmail.com> Date: Mon Jun 7 17:34:12 2010 +0200 test: fix typo test/linear-gradient-extend.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 9b88b5dce5327cbd13ea05de949c502fe41f91f7 Author: Andrea Canciani <ranma42@gmail.com> Date: Tue Jun 8 10:45:06 2010 +0200 test: add degenerate gradient and single stop tests Add tests for degeneratate linear gradients (with start point equal to the end point), degenerate radial gradients (start radius and end radius equal to zero, same start and end circle) and gradients (both linear and radial) with just a single stop. test/Makefile.sources | 6 ++- test/degenerate-linear-gradient.c | 81 +++++++++++++++++++++++++ test/degenerate-radial-gradient.c | 93 ++++++++++++++++++++++++++++ test/linear-gradient-one-stop.c | 90 +++++++++++++++++++++++++++ test/linear-gradient-one-stop.ref.png | Bin 0 -> 468 bytes test/radial-gradient-one-stop.c | 107 +++++++++++++++++++++++++++++++++ test/radial-gradient-one-stop.ref.png | Bin 0 -> 3772 bytes 7 files changed, 376 insertions(+), 1 deletions(-) commit 7d8359721b581845260c0442a174e48b061484a7 Author: Benjamin Otte <otte@redhat.com> Date: Mon Jun 7 16:46:46 2010 +0200 gl: Fix span renderer doing bad stuff for CLEAR and SOURCE SOURCE will fallback now, CLEAR is identical to DEST_OUT with white. src/cairo-gl-surface.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) commit ef8fd1355ea03b8566ef31642b32133d3543e4e8 Author: Benjamin Otte <otte@redhat.com> Date: Mon Jun 7 15:03:37 2010 +0200 gl: Fix span renderer for unbounded spans The span renderer used to not output rects for the top and bottom rows when they didn't contain any spans. src/cairo-gl-surface.c | 72 ++++++++++++++++++++++++++++++++--------------- 1 files changed, 49 insertions(+), 23 deletions(-) commit 1d11af083f5368c88032a33ff40d0e21c139db18 Author: Benjamin Otte <otte@redhat.com> Date: Sat Jun 5 15:22:44 2010 +0200 gl: Add a simple spans renderer for stroke/fill It's very simple as clipped polygons or ANTIALIAS_NONE still return UNSUPPORTED. Also, no optimizations are done, so even pixel-aligned rectangles use the full span rendering. Still, there are no performance regressions in the benchmark traces and firefox-talos-svg and swfdec-giant-steps both got ~15% faster. src/cairo-gl-surface.c | 178 +++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 175 insertions(+), 3 deletions(-) commit 550335efeddf813c1bec493513254fdbd34a9ace Author: Benjamin Otte <otte@redhat.com> Date: Sat Jun 5 15:19:44 2010 +0200 Remove _cairo_surface_composite_trapezoids_as_polygon() The function computed the composite rectangles wrong and was only used in a gl fallback anyway. So instead of trying to fix it, just remove it and make sure gl doesn't fallback. src/cairo-gl-surface.c | 14 -------- src/cairo-spans-private.h | 12 ------- src/cairo-spans.c | 75 --------------------------------------------- src/cairoint.h | 12 ------- 4 files changed, 0 insertions(+), 113 deletions(-) commit 1e003fce8f7239aaf4608747d63287e0c715ee51 Author: Benjamin Otte <otte@redhat.com> Date: Sat Jun 5 14:58:32 2010 +0200 gl: Fix vertex size changes not causing updates of the operands Check vertex size stays identical when setting up vertices. src/cairo-gl-composite.c | 17 ++++++++++------- 1 files changed, 10 insertions(+), 7 deletions(-) commit 39143400ddd0d4e63a72ce91c423f764e466e405 Author: Benjamin Otte <otte@redhat.com> Date: Fri Jun 4 12:25:52 2010 +0200 gl: Add a gradient texture cache For firefox-planet-gnome, 19135 times a gradient gets rendered using only 10 different gradients. So we get a 100% hit rate in the cache. Unfortunately, texture upload is not the biggest problem of this test, as the performance increase is only moderate - at least on i965: 34.3s => 33.5s src/cairo-gl-device.c | 12 +++++++- src/cairo-gl-gradient-private.h | 18 +++++++++--- src/cairo-gl-gradient.c | 58 +++++++++++++++++++++++++++++++++++++-- src/cairo-gl-private.h | 2 + 4 files changed, 81 insertions(+), 9 deletions(-) commit 932ab2641ea3183171c3b5699c96c4709fc6bd49 Author: Benjamin Otte <otte@redhat.com> Date: Thu Jun 3 18:54:18 2010 +0200 device: flush before setting finished Otherwise APIs critical for flushing - in particular acquiring the device - do not work. src/cairo-device.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 35e219d08f1c202399655db183ca0105a1c2166f Author: Benjamin Otte <otte@redhat.com> Date: Thu Jun 3 17:50:59 2010 +0200 gl: Make gradient textures a separate object This is necessary so we can do proper refcounting and don't delete the gradient texture prematurely. src/Makefile.sources | 4 +- src/cairo-gl-composite.c | 156 +++------------------------ src/cairo-gl-gradient-private.h | 80 ++++++++++++++ src/cairo-gl-gradient.c | 223 +++++++++++++++++++++++++++++++++++++++ src/cairo-gl-private.h | 9 +- 5 files changed, 327 insertions(+), 145 deletions(-) commit 9c17a477d29f633a4850ef8b458cbca82a19afc4 Author: Benjamin Otte <otte@redhat.com> Date: Thu Jun 3 17:40:56 2010 +0200 gl: Use the generic functions for filter/extend in gradients src/cairo-gl-composite.c | 26 ++++++++------------------ src/cairo-gl-private.h | 2 ++ 2 files changed, 10 insertions(+), 18 deletions(-) commit df93802765afcf883abef5549bd5dff3465e2d79 Author: Benjamin Otte <otte@redhat.com> Date: Thu Jun 3 17:38:28 2010 +0200 gl: Create separate functions for setting extend and filter src/cairo-gl-composite.c | 47 +++++++++++++++++++++++++++------------------ 1 files changed, 28 insertions(+), 19 deletions(-) commit 10e71806d2e1929aa127642a397fa6ccef434b5b Author: Benjamin Otte <otte@redhat.com> Date: Wed Jun 2 20:04:57 2010 +0200 gl: Switch to deferred rendering 1) call _cairo_gl_composite_flush() or cairo_surface_flush() where needed 2) Destroy texture operands when necessary 3) get rid of _cairo_gl_composite_end() With this patch, vertices are not flushed immediately anymore, but only when needed or when a new set of vertices is emitted that requires an incompatible setup. This improves performance a lot in particular for text. (gnome-terminal-vim gets 10x faster) src/cairo-gl-composite.c | 40 ++++++++++++++++++++++------------------ src/cairo-gl-glyphs.c | 4 ---- src/cairo-gl-private.h | 4 ---- src/cairo-gl-surface.c | 12 ++++++------ 4 files changed, 28 insertions(+), 32 deletions(-) commit f2f79ca1b3455000df4138ab500ae03b6584250c Author: Benjamin Otte <otte@redhat.com> Date: Wed Jun 2 19:57:47 2010 +0200 gl: Make using shaders an explicit argument This is preparation for a followup patch src/cairo-gl-composite.c | 15 ++++++++------- 1 files changed, 8 insertions(+), 7 deletions(-) commit 19c1d8316e22fc37c7cdaf6c3e56519c06d10561 Author: Benjamin Otte <otte@redhat.com> Date: Wed Jun 2 18:14:28 2010 +0200 gl: Special case blend mode for CAIRO_CONTENT_COLOR This ensures that alpha stays at 1 for RGB in all cases. src/cairo-gl-composite.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 1f249064cc5c19a39ffe0faaa8825c8f8b6a2175 Author: Benjamin Otte <otte@redhat.com> Date: Wed Jun 2 18:11:04 2010 +0200 gl: rework _cairo_gl_set_operator() 1) store the current operator. This will be useful later to check if the operator changed. 2) pass the context instead of the destination as first argument. The destination is known to be the current target. src/cairo-gl-composite.c | 16 +++++++++------- src/cairo-gl-device.c | 3 +++ src/cairo-gl-private.h | 1 + 3 files changed, 13 insertions(+), 7 deletions(-) commit f66500d8b052251ea3ce06f06d2fa4c8dec2ff3b Author: Benjamin Otte <otte@redhat.com> Date: Wed Jun 2 15:53:48 2010 +0200 gl: Only resetup textures if we need to src/cairo-gl-composite.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 45 insertions(+), 0 deletions(-) commit d9dcafd61ad6aeecb4538e9fd44e3443a8a50bf1 Author: Benjamin Otte <otte@redhat.com> Date: Wed Jun 2 15:26:45 2010 +0200 gl: Do not reset the current target on release This now also requires a call to cairo_device_flush(). src/cairo-gl-device.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit ce36be5c67fa5b574eb11eb98cdd8c9cd7e09335 Author: Benjamin Otte <otte@redhat.com> Date: Wed Jun 2 15:23:57 2010 +0200 glx: When acquiring device, use the correct drawable src/cairo-glx-context.c | 16 +++++++++++++--- 1 files changed, 13 insertions(+), 3 deletions(-) commit 5819bb07eb7ac64f0e2fbe6a46cc3db0de1d92ce Author: Benjamin Otte <otte@redhat.com> Date: Wed Jun 2 15:23:08 2010 +0200 gl: Store the vertex offset in the operand src/cairo-gl-composite.c | 1 + src/cairo-gl-private.h | 1 + 2 files changed, 2 insertions(+), 0 deletions(-) commit c75460c54d88ce9a50ac59c15a10684043ca4b0e Author: Benjamin Otte <otte@redhat.com> Date: Sun May 30 22:01:10 2010 +0200 gl: Introduce a temporary texture unit ...and use it for image uploads. This makes sure that the texture units used for SOURCE and MASK get not clobbered when images get uploaded to textures. src/cairo-gl-composite.c | 2 ++ src/cairo-gl-device.c | 17 +++++++++++++++++ src/cairo-gl-private.h | 8 +++++++- src/cairo-gl-surface.c | 2 ++ 4 files changed, 28 insertions(+), 1 deletions(-) commit 1ddff8aba35466fe6689536bc5f2d7eeefaea02c Author: Benjamin Otte <otte@redhat.com> Date: Sun May 30 21:25:20 2010 +0200 gl: Only allocate a framebuffer if we need one This way, we don't clobber the current target when creating textures for image surfaces. src/cairo-gl-device.c | 26 ++++++++++++++++++++++++++ src/cairo-gl-private.h | 2 +- src/cairo-gl-surface.c | 20 ++------------------ 3 files changed, 29 insertions(+), 19 deletions(-) commit 1c15510c3d00553aba9ec4fd4e6764da3cdb0a41 Author: Benjamin Otte <otte@redhat.com> Date: Sun May 30 20:12:31 2010 +0200 Call cairo_surface_flush() before setting finished With the current code, the surface will never be flushed as the flush function checks if the surface is finished, and if so, doesn't call the vfunc. Ooops. src/cairo-surface.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 467d5e7f90b9edfb62ca71e67608704424a10aca Author: Benjamin Otte <otte@redhat.com> Date: Fri May 28 21:56:57 2010 +0200 gl: Flush properly in set_destination src/cairo-gl-device.c | 33 +++++++++++++++++---------------- 1 files changed, 17 insertions(+), 16 deletions(-) commit e15348d8d0bbff6968b1f640e63315d159f143f5 Author: Benjamin Otte <otte@redhat.com> Date: Fri May 28 21:55:26 2010 +0200 gl: Don't reset vertex size src/cairo-gl-composite.c | 10 ++++++---- src/cairo-gl-device.c | 1 + 2 files changed, 7 insertions(+), 4 deletions(-) commit a8d6ac1efc3f1f5ff4f92f4e7a3492e62518f3f7 Author: Benjamin Otte <otte@redhat.com> Date: Fri May 28 21:51:08 2010 +0200 gl: Remove check if we're between begin/end This will be useless soon, because we will keep the current state alive as long as possible. src/cairo-gl-composite.c | 1 - src/cairo-gl-private.h | 7 ------- 2 files changed, 0 insertions(+), 8 deletions(-) commit 8f675fb801f7864aa52778d4d53d7ab68f4e664b Author: Benjamin Otte <otte@redhat.com> Date: Fri May 28 21:46:52 2010 +0200 gl: Stop disabling the vertex array and the array buffer src/cairo-gl-composite.c | 12 ++++-------- src/cairo-gl-device.c | 4 ++++ 2 files changed, 8 insertions(+), 8 deletions(-) commit bef0b541497eb5a621df0b5528e08adb0beff961 Author: Benjamin Otte <otte@redhat.com> Date: Fri May 28 21:08:17 2010 +0200 gl: Do not reset shaders on _end() Instead, keep the shader around until cairo_device_flush() is called. src/cairo-gl-composite.c | 35 ++++++++++++++++++++++------------- src/cairo-gl-device.c | 3 +++ src/cairo-gl-private.h | 6 ++++++ 3 files changed, 31 insertions(+), 13 deletions(-) commit 534c14729921cbc2f8e24575eb792de9ddb96e23 Author: Benjamin Otte <otte@redhat.com> Date: Fri May 28 21:06:58 2010 +0200 region: clarify docs of cairo_region_equal() src/cairo-region.c | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-) commit 0fc6f08981604ffdd0109362dcbbd9773501cd9a Author: Benjamin Otte <otte@redhat.com> Date: Fri May 28 20:45:52 2010 +0200 gl: Make _shader_by_type() a getter And refactor code to do the current_shader assigning itself. src/cairo-gl-composite.c | 16 +++++++++++----- src/cairo-gl-private.h | 5 +++-- src/cairo-gl-shaders.c | 13 ++++++++----- 3 files changed, 22 insertions(+), 12 deletions(-) commit 2971ca049881298cd171cf27cd3beb49d2c0572f Author: Benjamin Otte <otte@redhat.com> Date: Fri May 28 20:39:22 2010 +0200 gl: bind all shader variables at the same place Avoids the need to bind the shader when creating it. src/cairo-gl-composite.c | 26 ++++++++++++++++++++------ src/cairo-gl-shaders.c | 11 ----------- 2 files changed, 20 insertions(+), 17 deletions(-) commit e11d8370e0503f085beaa355d85fa6991cd497da Author: Benjamin Otte <otte@redhat.com> Date: Fri May 28 17:37:19 2010 +0200 gl: Set GL_BLEND and GL_SCISSOR_TEST globally Note that we do set them unconditionally in _begin() because a flush might have cleared them. src/cairo-gl-composite.c | 11 +++-------- src/cairo-gl-device.c | 8 ++++++++ src/cairo-gl-surface.c | 1 + 3 files changed, 12 insertions(+), 8 deletions(-) commit 7747f6d9146c19419fdc4fbbdf72eed42dfa731d Author: Benjamin Otte <otte@redhat.com> Date: Fri May 28 17:19:56 2010 +0200 gl: Introduce flush functions The flush functions will clear the state that will in the future be kep unconditionally. src/cairo-gl-composite.c | 6 +++--- src/cairo-gl-device.c | 22 +++++++++++++++++++++- src/cairo-gl-private.h | 4 ++++ src/cairo-gl-surface.c | 36 ++++++++++++++++++++++++++++++++---- 4 files changed, 60 insertions(+), 8 deletions(-) commit 5c74beaaa5dedd82f891f1cc109142f7b6e222a8 Author: Benjamin Otte <otte@redhat.com> Date: Fri May 28 17:19:45 2010 +0200 docs: fix typo src/cairo-surface.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 92d7b1eee96e6b1448aaf3c95a44238fa0eeff48 Author: Benjamin Otte <otte@redhat.com> Date: Fri May 28 16:19:12 2010 +0200 device: Make flush vfunc return a cairo_status_t Mirror the behavior of the surface flush vfunc: Make it return a status and if it's an error set it on the device. src/cairo-device-private.h | 2 +- src/cairo-device.c | 9 +++++++-- src/cairo-xml-surface.c | 4 +++- 3 files changed, 11 insertions(+), 4 deletions(-) commit 63e3cf3888d5b55295a04c4af28e876c04245b85 Author: Benjamin Otte <otte@redhat.com> Date: Fri May 28 15:09:23 2010 +0200 gl: Move unsetting the state into the operand destroy function src/cairo-gl-composite.c | 43 +++++++++++++++++++++++++++++-------------- 1 files changed, 29 insertions(+), 14 deletions(-) commit b9b85dbf3706fe9e50f40b5fda655e71931c2d7f Author: Benjamin Otte <otte@redhat.com> Date: Fri May 28 13:42:11 2010 +0200 gl: get rid of the operand's pattern variable Now someone just needs to teach cairo-gl to not use cairo_pattern_acquire_surface() and we could avoid the nasty hack in cairo_gl_operand_destroy(). src/cairo-gl-composite.c | 21 ++++++++++----------- src/cairo-gl-private.h | 2 -- 2 files changed, 10 insertions(+), 13 deletions(-) commit ae9517a39fdddec389553a64116140e222970ef0 Author: Benjamin Otte <otte@redhat.com> Date: Fri May 28 13:18:28 2010 +0200 gl: Check mask's attributes for component alpha ... and don't duplicate that information into the cairo_gl_composite_t src/cairo-gl-composite.c | 14 ++++++++------ src/cairo-gl-private.h | 1 - 2 files changed, 8 insertions(+), 7 deletions(-) commit f72afc09d0b99030f5766e7bbbb05f6db606e195 Author: Benjamin Otte <otte@redhat.com> Date: Fri May 28 13:14:09 2010 +0200 gl: Merge fixed function setup into general texture setup src/cairo-gl-composite.c | 84 ++++++++++++++++++--------------------------- 1 files changed, 34 insertions(+), 50 deletions(-) commit dd1faaf02e2a75ca8b9c484abd15726f5c6d3ac4 Author: Benjamin Otte <otte@redhat.com> Date: Fri May 28 12:54:54 2010 +0200 gl: Move function I wanna use it elsewhere and keep the diff small. src/cairo-gl-composite.c | 58 +++++++++++++++++++++++----------------------- 1 files changed, 29 insertions(+), 29 deletions(-) commit d03800313623fb2b9e7d15c6a659ceaaee2882e8 Author: Benjamin Otte <otte@redhat.com> Date: Fri May 28 12:51:08 2010 +0200 gl: Simplify mask operand setup code Component alpha just has one different value src/cairo-gl-composite.c | 40 +++++++--------------------------------- 1 files changed, 7 insertions(+), 33 deletions(-) commit e20261dddaa194ab4e980da8681e9378d7fd7ef1 Author: Benjamin Otte <otte@redhat.com> Date: Fri May 28 12:48:59 2010 +0200 gl: Get rid of operand argument to emit functions src/cairo-gl-composite.c | 34 +++++++++++++++------------------- src/cairo-gl-glyphs.c | 2 +- src/cairo-gl-private.h | 2 -- src/cairo-gl-surface.c | 11 +++-------- 4 files changed, 19 insertions(+), 30 deletions(-) commit 8062fb352e6cd1d961f0fbc660779f4ad94c7508 Author: Benjamin Otte <otte@redhat.com> Date: Fri May 28 11:03:09 2010 +0200 gl: Add an enum for tex units Instead of hardcoding 0 for source and 1 for mask, use an enum. It's also clearer when functions take a cairo_gl_tex_t argument instead of a GLuint. src/cairo-gl-composite.c | 20 ++++++++++---------- src/cairo-gl-private.h | 5 +++++ src/cairo-gl-shaders.c | 34 ++++++++++++---------------------- 3 files changed, 27 insertions(+), 32 deletions(-) commit 5db362dd6792af20282e0e9a2805ee6f1b921e44 Author: Benjamin Otte <otte@redhat.com> Date: Fri May 28 10:24:33 2010 +0200 gl: Keep a copy of the current operand in the context Note that they are currently only valid as long as the cairo_gl_composite_t exists, but that will be changed soon. src/cairo-gl-composite.c | 20 ++++++++++++++++---- src/cairo-gl-private.h | 2 ++ 2 files changed, 18 insertions(+), 4 deletions(-) commit a05f062c806ac014d0daffa1d74bdb0dd90a8a26 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 26 19:23:18 2010 +0200 gl: Move struct definitions in header src/cairo-gl-private.h | 66 ++++++++++++++++++++++++------------------------ 1 files changed, 33 insertions(+), 33 deletions(-) commit 85d4c6c55b85c52d8f86247f00659e37354abd49 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 26 21:23:40 2010 +0200 gl: operand->texture.surface cannot be NULL src/cairo-gl-composite.c | 10 +++------- 1 files changed, 3 insertions(+), 7 deletions(-) commit 9486ad5fbdad047b5194f6bed68a08bb4c594610 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 26 19:16:41 2010 +0200 gl: Remove composite_t argument from _flush() function src/cairo-gl-composite.c | 17 +++++++---------- src/cairo-gl-glyphs.c | 2 +- src/cairo-gl-private.h | 3 +-- 3 files changed, 9 insertions(+), 13 deletions(-) commit 16e420b4dca5325ab295a27103299a916f334b05 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 26 19:13:53 2010 +0200 gl: Remove dependency on composite_t in draw function src/cairo-gl-composite.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit e46215ec6b94355b741acf5dfdd264d6396b4bc8 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 26 18:44:20 2010 +0200 gl: Remove unneeded and broken workaround We now ensure the values are properly zeroed when setting the operator. src/cairo-gl-composite.c | 14 +------------- 1 files changed, 1 insertions(+), 13 deletions(-) commit b2d709b5c7e463437189b8e4a2c53a3317437825 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 26 17:41:01 2010 +0200 gl: Switch src alpha handling to a tiny on/off function Instead of doing setup every time, we just set this one flag. Much nicer. src/cairo-gl-composite.c | 22 +++++++--------------- 1 files changed, 7 insertions(+), 15 deletions(-) commit 53fd451f85974d2ed0d6f29a0a0549fd4c7035fe Author: Benjamin Otte <otte@redhat.com> Date: Wed May 26 17:32:14 2010 +0200 gl: Avoid redundant mask setup The mask doesn't change, so no need to set it up twice src/cairo-gl-composite.c | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-) commit 1b3675fc4b9c7f6ad4d9edd9b27bee10c2502b81 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 26 17:28:05 2010 +0200 gl: Split fixed-function operand setup into own function src/cairo-gl-composite.c | 151 +++++++++++++--------------------------------- 1 files changed, 42 insertions(+), 109 deletions(-) commit 02da871050f6be02ba0231e545d6613a42c3a7e6 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 26 17:02:29 2010 +0200 gl: Unify fixed function setup code src/cairo-gl-composite.c | 15 ++++----------- 1 files changed, 4 insertions(+), 11 deletions(-) commit 74f9094162fba54c29859e25ad5be085604aa0b6 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 26 15:46:39 2010 +0200 gl: switch OPERAND0 and OPERAND1 in the fixed function path This should not change anything as we multiply the values. But it allows unifying parts of the code, which will happen in another patch. src/cairo-gl-composite.c | 42 +++++++++++++++++++++--------------------- 1 files changed, 21 insertions(+), 21 deletions(-) commit c6aac5d0134f1473d3867c1b6a4b40753700ffcb Author: Benjamin Otte <otte@redhat.com> Date: Wed May 26 15:42:56 2010 +0200 gl: Move the pre shader to the context, too It's required when flushing, too. src/cairo-gl-composite.c | 10 +++++----- src/cairo-gl-private.h | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) commit 61bc3067ca5fa4aeaef537c397c37826facc7621 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 26 15:28:32 2010 +0200 gl: Store the clip region in the context This is necessary because we want to get rid of keeping the composite stuff around. src/cairo-gl-composite.c | 15 ++++++++++----- src/cairo-gl-device.c | 2 ++ src/cairo-gl-private.h | 1 + 3 files changed, 13 insertions(+), 5 deletions(-) commit db79880d9a836d50e9202caa5c73e22a2b6b97b3 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 26 13:03:12 2010 +0200 gl: Make gl_composite_begin() acquire the context Also remove the previous places for context acquisition. This completes fixing the potential ABBA deadlock I talked about a few commits ago. src/cairo-gl-composite.c | 21 +++++++++++++++++---- src/cairo-gl-glyphs.c | 7 ++++++- src/cairo-gl-private.h | 4 ++-- src/cairo-gl-surface.c | 26 +++++--------------------- 4 files changed, 30 insertions(+), 28 deletions(-) commit 1320a168fa5b73fd42438040a4bf8ee9ad222a0e Author: Benjamin Otte <otte@redhat.com> Date: Wed May 26 12:26:49 2010 +0200 gl: Remove unused code We don't need to acquire/release the context, we're not using it. src/cairo-gl-glyphs.c | 11 +---------- 1 files changed, 1 insertions(+), 10 deletions(-) commit 8f5c3b706b5bad6b0851a3e27752f7d1a3ca8a72 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 26 12:16:01 2010 +0200 gl: Make composite_set_clip_region not require the context src/cairo-gl-composite.c | 3 +-- src/cairo-gl-glyphs.c | 2 +- src/cairo-gl-private.h | 3 +-- src/cairo-gl-surface.c | 2 +- 4 files changed, 4 insertions(+), 6 deletions(-) commit ac6abcbac7f79e5717c44e251135dcba8ab00b27 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 26 12:14:24 2010 +0200 gl: Make composite_set_source/mask/mask_spans not require a context src/cairo-gl-composite.c | 77 ++++++++++++++++++++++++---------------------- src/cairo-gl-glyphs.c | 5 +-- src/cairo-gl-private.h | 9 ++--- src/cairo-gl-surface.c | 13 +++---- 4 files changed, 51 insertions(+), 53 deletions(-) commit 88a70d66fcdbca7e489baa48cd145bb69c3e28e0 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 26 11:59:36 2010 +0200 gl: Add API for querying if we need GL_TEXTURE_RECTANGLE_EXT We need to do that querying outside of taking the lock, so we want to be able to query the device, not the context. src/cairo-gl-composite.c | 11 +++++------ src/cairo-gl-glyphs.c | 2 +- src/cairo-gl-private.h | 6 ++++++ 3 files changed, 12 insertions(+), 7 deletions(-) commit 9c6e1338a1c7d61b4cc84bcdc5c38573a34cd561 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 26 11:36:22 2010 +0200 gl: Make cairo_gl_composite_t not require a gl context anymore First patch in a series. The idea is to make all gl operations in Cairo work like this: 1) prepare cairo_gl_composite_t 2) acquire device 3) begin composite operation 4) emit vertexes 5) end operation 6) release device 7) cleanup composite operation This both reduces the time required with the device locked, cleans the API and more importantly avoids ABBA deadlocks, as we currently call acquire_pattern() with the device lock held. src/cairo-gl-composite.c | 6 ++---- src/cairo-gl-glyphs.c | 7 +++---- src/cairo-gl-private.h | 6 ++---- src/cairo-gl-surface.c | 19 ++++++++----------- 4 files changed, 15 insertions(+), 23 deletions(-) commit 60f0cb9c60556f94af903dd6f9da0628a05a1f7f Author: Benjamin Otte <otte@redhat.com> Date: Sat May 22 18:42:44 2010 +0200 gl: Flush surface at the right times src/cairo-gl-composite.c | 2 ++ src/cairo-gl-device.c | 2 ++ src/cairo-gl-surface.c | 2 ++ 3 files changed, 6 insertions(+), 0 deletions(-) commit ffeeae462ea0f8c7af326f3bcc66b88881bd8fdd Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Jun 6 16:50:34 2010 +0100 Revert "gstate: reduce a couple more operators" This reverts commit a85c6c1e36273d534f01ade0714b0592b6bed5ab. Soeren found that this introduced a regression when displaying pages in evince, and since I'm not overly enthralled at the added complexity here for very little gain, remove the reduction and leave it clear for a more complete solution in the future. src/cairo-gstate.c | 15 +-------------- 1 files changed, 1 insertions(+), 14 deletions(-) commit 44e628a6f4e6b9b21ad67b08869186a779d0db5a Author: Makoto Kato <m_kato@ga2.so-net.ne.jp> Date: Mon May 31 18:22:40 2010 +0900 openvg: fix build break src/cairo-vg-surface.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit cc080a1e2731a42045709d789587070da944145c Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu May 27 20:51:55 2010 +0100 gl: Unmap the vertex buffer prior to using in DaawArrays() "It is an INVALID_OPERTION error to source data from a buffer object that is currently mapped." mesa is currently lax in this regard, but the Nvidia libGL conforms to the spec and thus was causing failures. src/cairo-gl-composite.c | 23 ++++++++++++----------- 1 files changed, 12 insertions(+), 11 deletions(-) commit b3e15bd5c307352065555c6c3ae5f0bd15b9a791 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu May 27 18:43:03 2010 +0100 gl: _cairo_set_shader_by_type() cannot return UNSUPPORTED So remove the superfuous test. src/cairo-gl-composite.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) commit 59bd34e6a3661483f60bb01be8b406a5c38e1131 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu May 27 18:35:40 2010 +0100 gl: Check for an error device when creating surfaces. src/cairo-gl-surface.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit 53f086105975c1c2bd4c43a1b0613ebde3580e95 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu May 27 18:27:53 2010 +0100 gl: Make _cairo_gl_shader_(init|compile) static Only used within _cairo_gl_shaders.c, so remove the private symbol. src/cairo-gl-private.h | 10 ---------- src/cairo-gl-shaders.c | 41 +++++++++++++++++++++++++---------------- 2 files changed, 25 insertions(+), 26 deletions(-) commit dd0866cdc878a0be438a117051ccc64f12f81970 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu May 27 17:52:11 2010 +0100 boilerplate: Exercise RENDER capable windows. Ensure that the drivers actually work when rendering to a normal window. boilerplate/cairo-boilerplate-xlib.c | 107 ++++++++++++++++++++++++++++++++++ 1 files changed, 107 insertions(+), 0 deletions(-) commit 2dc42af9422a15f902934a53c074e4194991a9e4 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon May 17 16:32:20 2010 +0100 script: Update csi-exec to match new interface. util/cairo-script/csi-exec.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 2f0f4ed0e2ae5657dedfe180b7be3a2496753ba8 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu May 20 21:54:51 2010 +0100 freed-pool: Don't access beyond the end of the array. Argh. This bug has been here for quite some time and only showed itself with a corrupt pointer on ppc32. Since the erroneous write is inside the block, it remained undetected by valgrind. src/cairo-freed-pool-private.h | 8 +++++--- src/cairo-freed-pool.c | 4 +++- 2 files changed, 8 insertions(+), 4 deletions(-) commit 97b4aeba44e5f4b23b3ed417b991570b46d4736e Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu May 20 21:54:16 2010 +0100 atomic: Add memory barriers if required for intel primitives src/cairo-atomic-private.h | 16 ++++++++++++++++ 1 files changed, 16 insertions(+), 0 deletions(-) commit 24e684c267404528b40fa49b55272d73bd44167d Author: Benjamin Otte <otte@gnome.org> Date: Thu May 20 22:37:18 2010 +0200 gl: spans need the dummy texture Thanks Eric. That took me half a day. src/cairo-gl-composite.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit d7a564d8eed32b4417fdb4c8c5d91467e4ae1019 Author: Benjamin Otte <otte@redhat.com> Date: Thu May 20 22:10:06 2010 +0200 gl: Don't set is_clear 1) It's wrong. 2) The core functions set the flag correctly already. src/cairo-gl-surface.c | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-) commit f9cf07b126293d00df085d4fbfa337e1132e0258 Author: Benjamin Otte <otte@redhat.com> Date: Thu May 20 16:08:38 2010 +0200 gl: Fix coverage passing for spans not being endian safe. src/cairo-gl-composite.c | 29 ++++++++++++++++------------- src/cairo-gl-private.h | 2 +- src/cairo-gl-surface.c | 4 ++-- 3 files changed, 19 insertions(+), 16 deletions(-) commit 2a0f34c6da2eb4f10b198d04894fc1413352e041 Author: Benjamin Otte <otte@redhat.com> Date: Thu May 20 11:23:18 2010 +0200 gl: Allow NONE and SPANS sampler for source, too src/cairo-gl-shaders.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) commit 1586f7740ad436447ac75c6b869da7446172a63c Author: Benjamin Otte <otte@gnome.org> Date: Thu May 20 13:17:52 2010 +0200 gl: Refactor fixed function setup code In particular get rid of the _cairo_gl_set_tex_combine_constant_color() function by inlining it and move common glTexEnv calls out of the switch statement. src/cairo-gl-composite.c | 130 ++++++++++++++++----------------------------- 1 files changed, 46 insertions(+), 84 deletions(-) commit 4889090c76bdab5e4eb887593caf5d5a34f90864 Author: Benjamin Otte <otte@gnome.org> Date: Thu May 20 12:13:43 2010 +0200 gl: set the active texture before fiddling with with glTexEnv fixes the fixed function pipeline src/cairo-gl-composite.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-) commit 3cff2da912150868390bf4b9df166c88b3dfcf2e Author: Benjamin Otte <otte@gnome.org> Date: Thu May 20 12:03:18 2010 +0200 gl: Remove unused variables src/cairo-gl-composite.c | 9 --------- 1 files changed, 0 insertions(+), 9 deletions(-) commit 4c7dd1be4526c85b47f1fe1d4663e7fbec0926b1 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 19 22:03:18 2010 +0200 gl: Move vertex array setup code into the texture setup code src/cairo-gl-composite.c | 35 ++++++++++++++--------------------- 1 files changed, 14 insertions(+), 21 deletions(-) commit d9d5976bdf333a5a7ea7707bc3076696f3c079d2 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 19 21:54:32 2010 +0200 gl: Add an assertion that a context cannot call _begin() twice Evert _begin() call must be followed by an _end() call to avoid any nastiness. Just like GL. :) src/cairo-gl-composite.c | 2 ++ src/cairo-gl-private.h | 7 +++++++ 2 files changed, 9 insertions(+), 0 deletions(-) commit 5b8b1fe1cb692530b40db330c3040cd85a8b6bd7 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 19 21:10:26 2010 +0200 gl: Move vertex buffer handling from setup into context We can only emit one vertex buffer at a time anyway. src/cairo-gl-composite.c | 34 ++++++++++++++++++---------------- src/cairo-gl-private.h | 8 ++++---- 2 files changed, 22 insertions(+), 20 deletions(-) commit 0d5f2eab77f055b063538dcd345a1e0db480f3bc Author: Benjamin Otte <otte@redhat.com> Date: Wed May 19 20:49:49 2010 +0200 gl: Actuall do fall back to fixed function paths. Previously we were just returning UNSUPPORTED all the time. I guess that explains why my code got so slow... src/cairo-gl-composite.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) commit bb7ca71c1af416ca084f03089f5fe762403635dd Author: Benjamin Otte <otte@redhat.com> Date: Wed May 19 20:47:31 2010 +0200 gl: Don't store the shader in the composite_t anymore Now that we have ctx->current_shader, there's no need to keep it in the composite setup code. src/cairo-gl-composite.c | 30 ++++++++++++++---------------- src/cairo-gl-private.h | 10 ++++------ src/cairo-gl-shaders.c | 16 ++++++---------- 3 files changed, 24 insertions(+), 32 deletions(-) commit 6c477b4a945a8f8b866bb2f5e125d4a0328d05f4 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 19 20:10:19 2010 +0200 gl: Move shader checking in the TexEnv setup code As the previously generic setup code only contains non-shader code now, we can check in advance that no shader is in use and do all the other stuff without checks. src/cairo-gl-composite.c | 208 ++++++++++++++++++++++------------------------ 1 files changed, 101 insertions(+), 107 deletions(-) commit 73262edd8201de8ab8a01e01f83af5b5d6470f9e Author: Benjamin Otte <otte@redhat.com> Date: Wed May 19 19:25:03 2010 +0200 gl: Move texture setup code into its own file This ensures textures don't need to be (re)set when doing component alpha and running 2 shaders. src/cairo-gl-composite.c | 208 ++++++++++++++++++++-------------------------- 1 files changed, 92 insertions(+), 116 deletions(-) commit 970c879dd897019f90b0c8ff5a18781be4935c55 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 19 18:34:00 2010 +0200 gl: Binding variables only works for the current shader So make the code reflect that. src/cairo-gl-composite.c | 27 ++++++++++++--------------- src/cairo-gl-private.h | 6 ------ src/cairo-gl-shaders.c | 22 ++++++++-------------- 3 files changed, 20 insertions(+), 35 deletions(-) commit 065969d78f23c634ebcb2b931cbb1fe184f2cedf Author: Benjamin Otte <otte@redhat.com> Date: Wed May 19 18:21:06 2010 +0200 gl: Separate binding to shaders from setting operands That way we only need to bind to shaders when creating them, but not everytime we switch shaders on text output. src/cairo-gl-composite.c | 156 +++++++++++++++++++++++----------------------- src/cairo-gl-shaders.c | 2 +- 2 files changed, 79 insertions(+), 79 deletions(-) commit c53f7778bcf274f64f801ef9ee1641a088842f60 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 19 16:50:57 2010 +0200 gl: Use the mask, not the source Not that we'd ever have constant color component-alpha masks, but that's an entirely different topic. src/cairo-gl-composite.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit 26e8e506b66022910c262da0618ef5be8c5a080e Author: Benjamin Otte <otte@redhat.com> Date: Wed May 19 13:19:56 2010 +0200 gl: Add _cairo_gl_surface_is_texture() It's more explicit then just checking surface->fb != 0 Also, it makes improving that check easier. src/cairo-gl-device.c | 4 ++-- src/cairo-gl-private.h | 6 ++++++ src/cairo-gl-surface.c | 11 ++++++----- 3 files changed, 14 insertions(+), 7 deletions(-) commit e4cb46b50015f792b0e8c7b49f3b42f2c3c0ad00 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 19 12:10:10 2010 +0200 gl: Implement texture upload to window with composite() Instead of custom code that does basically the same thing, use a temporary surface and _cairo_gl_surface_composite() to upload images. src/cairo-gl-shaders.c | 2 +- src/cairo-gl-surface.c | 131 +++++++++++++++++------------------------------ 2 files changed, 49 insertions(+), 84 deletions(-) commit 7c8759e279f51ea722c07e4b0c70f4a49f34393d Author: Benjamin Otte <otte@redhat.com> Date: Wed May 19 11:46:12 2010 +0200 gl: cache the current shader in the context src/cairo-gl-private.h | 4 +++- src/cairo-gl-shaders.c | 7 +++++++ 2 files changed, 10 insertions(+), 1 deletions(-) commit 6864ca6c25aa8147a562d7f693a95025dde807a8 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 19 11:10:11 2010 +0200 gl: Move _cairo_gl_set_operator() to the file it's used in Also make it a private function. src/cairo-gl-composite.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++ src/cairo-gl-private.h | 4 --- src/cairo-gl-surface.c | 57 ---------------------------------------------- 3 files changed, 57 insertions(+), 61 deletions(-) commit 0d2d4c59026c31da084e6797d109a230341b396d Author: Benjamin Otte <otte@redhat.com> Date: Tue May 18 21:56:55 2010 +0200 gl: Detect color-pattern clears of surfaces ... and use glClear() there. The common case here is a solid color and OPERATOR_OVER. src/cairo-gl-private.h | 3 --- src/cairo-gl-surface.c | 38 +++++++++++++++++++++++++++++--------- 2 files changed, 29 insertions(+), 12 deletions(-) commit b70eb275c4aa54f7c90a985b5de67da12ac08a30 Author: Benjamin Otte <otte@redhat.com> Date: Tue May 18 21:56:18 2010 +0200 gl: detect image uploads and fast-path them src/cairo-gl-surface.c | 23 +++++++++++++++++++++++ 1 files changed, 23 insertions(+), 0 deletions(-) commit 8adbf3aa19fd9fb8200973ecd72cdebfd9a5364d Author: Benjamin Otte <otte@redhat.com> Date: Tue May 18 20:12:44 2010 +0200 gl: Use _cairo_gl_surface_draw_image() when caching glyphs src/cairo-gl-glyphs.c | 47 ++++++++--------------------------------------- 1 files changed, 8 insertions(+), 39 deletions(-) commit 915aa64ef077fe3b6094d0f1c8bd87ab5acc4868 Author: Benjamin Otte <otte@redhat.com> Date: Tue May 18 13:01:30 2010 +0200 gl: Actually check errors for _cairo_gl_composite_begin() src/cairo-gl-glyphs.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 0222cc7d76b0dc724630b660687f98a2460eb0b9 Author: Benjamin Otte <otte@redhat.com> Date: Tue May 18 13:00:34 2010 +0200 gl: Get rid of _cairo_gl_composite_set_mask_texture() Now that the glyph cache contains real surfaces, there's no longer a need to have a special function for it. src/cairo-gl-composite.c | 16 ---------------- src/cairo-gl-glyphs.c | 15 ++++++++------- src/cairo-gl-private.h | 6 ------ 3 files changed, 8 insertions(+), 29 deletions(-) commit 208d9f2a7e1f66ff2764c41fe67f65e27279b2ab Author: Benjamin Otte <otte@redhat.com> Date: Tue May 18 12:49:59 2010 +0200 gl: Make glyph cache a real surface This has the huge advantage that we can use real surface functions on it. src/cairo-gl-glyphs.c | 67 ++++++++++++++++++------------------------------ src/cairo-gl-private.h | 3 +- 2 files changed, 26 insertions(+), 44 deletions(-) commit 050117996339cfe35add1f2cd44d0e5578d4a981 Author: Benjamin Otte <otte@redhat.com> Date: Tue May 18 12:02:54 2010 +0200 surface: Add _cairo_surface_release_device_reference() API See the API documentation for that function about its intended purpose. src/cairo-surface-private.h | 1 + src/cairo-surface.c | 26 +++++++++++++++++++++++++- src/cairoint.h | 3 +++ 3 files changed, 29 insertions(+), 1 deletions(-) commit c489f67d1d1d6079f9b58b726ed42beea1dfc44e Author: Benjamin Otte <otte@redhat.com> Date: Mon May 17 20:45:42 2010 +0200 gl: Make a bunch of functions static They are no longer used outside of cairo_gl_composite_t. src/cairo-gl-composite.c | 8 ++++---- src/cairo-gl-private.h | 16 ---------------- 2 files changed, 4 insertions(+), 20 deletions(-) commit c8008e118a54d62690d6555c9ffabf734c39e69f Author: Benjamin Otte <otte@redhat.com> Date: Mon May 17 19:16:20 2010 +0200 gl: Don't name the union in cairo_gl_operand_t Gets rid of ultra-long variable names. src/cairo-gl-composite.c | 152 +++++++++++++++++++++++----------------------- src/cairo-gl-private.h | 2 +- 2 files changed, 77 insertions(+), 77 deletions(-) commit 53260148ea9abacdc510826765c1d63f486add6c Author: Andrea Canciani <ranma42@gmail.com> Date: Fri May 14 21:04:22 2010 +0200 quartz: fix repeating radial gradients on 64 bits Quartz API uses the type CGFloat, which is double on 64 bits, float on 32 bits architectures src/cairo-quartz-surface.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 0104976dc853b60de14080a749a6f729852f1b22 Author: Andrea Canciani <ranma42@gmail.com> Date: Fri May 14 21:03:19 2010 +0200 quartz: silence compiler warnings All the possible enum values have to be explicitly handled in switch statements. src/cairo-quartz-surface.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit ac94a00a4d3acb36f011330b78d1311534fe90e0 Author: Andrea Canciani <ranma42@gmail.com> Date: Fri May 14 19:33:15 2010 +0200 quartz: fallback for A1 images on little endian archs Quartz uses a bit ordering that is consistent with cairo on big endian architectures, but isn't on little endian architectures. Fixes a1-mask and large-source-roi (on little endian) src/cairo-quartz-surface.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit f40e3b09a130a9ccbe310120fd5cfc7ad7828a4d Author: Andrea Canciani <ranma42@gmail.com> Date: Thu May 13 12:15:19 2010 +0200 quartz-font: Silence 0x0 CGContext warning Silence Quartz complaints about operations on empty contexts: <Error>: CGContextSetFont: invalid context 0x0 <Error>: CGContextSetFontSize: invalid context 0x0 <Error>: CGContextSetTextMatrix: invalid context 0x0 <Error>: CGContextSetAlpha: invalid context 0x0 <Error>: CGContextShowGlyphsAtPoint: invalid context 0x0 src/cairo-quartz-font.c | 77 +++++++++++++++++++++++++--------------------- 1 files changed, 42 insertions(+), 35 deletions(-) commit 1687e6169463947554f5476674a577e67e2c543b Author: Andrea Canciani <ranma42@gmail.com> Date: Thu May 13 11:54:32 2010 +0200 quartz-font: Conform context and antialias handling to quartz-surface A8 surfaces are now kAlphaOnly surfaces in quartz-font too. Subpixel font smoothing can be enabled. src/cairo-quartz-font.c | 38 ++++++++++++++++++++++++++++---------- 1 files changed, 28 insertions(+), 10 deletions(-) commit d68bbc0fe5706634e4c025bdcb311905b7f008e4 Author: Benjamin Otte <otte@gnome.org> Date: Mon May 17 20:57:08 2010 +0200 gl: Add missing NULL-check in non-shader code src/cairo-gl-composite.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 7f22372edf10f5eab53ea132d9226f6d5b49eb9a Author: Benjamin Otte <otte@redhat.com> Date: Mon May 17 14:20:17 2010 +0200 gl: Get rid of src and mask argument to composite_init() This was thought of as a way to detect self-painting, but it's better to check that later in _begin() - when we check it. src/cairo-gl-composite.c | 2 -- src/cairo-gl-glyphs.c | 2 +- src/cairo-gl-private.h | 2 -- src/cairo-gl-surface.c | 9 ++++----- 4 files changed, 5 insertions(+), 10 deletions(-) commit 75f15babed8409fb1eaae514411de01d57072c80 Author: Benjamin Otte <otte@redhat.com> Date: Mon May 17 14:17:47 2010 +0200 gl: Implement fill_rectangles with composite Tiny performance improvement, but a lot less code. src/cairo-gl-surface.c | 204 ++++++++++-------------------------------------- 1 files changed, 41 insertions(+), 163 deletions(-) commit e7c5b4f79fa24b75026c93bc9244115d2ee23930 Author: Benjamin Otte <otte@redhat.com> Date: Mon May 17 13:56:22 2010 +0200 gl: make _set_mask() accept NULL That way, it can be used to unset the mask. src/cairo-gl-composite.c | 3 +++ src/cairo-gl-surface.c | 14 ++++++-------- 2 files changed, 9 insertions(+), 8 deletions(-) commit 145db7a427e594f1d68a6c0f4afe5e365e219cf0 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon May 17 12:37:46 2010 +0100 gl: Check status after composite_begin Skip the unnecessary work in _cairo_gl_surface_composite() if we fail to setup the GL composite operation. src/cairo-gl-surface.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 8695c41e80ce932fd5dd434307b92f323a937c7c Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon May 17 12:36:54 2010 +0100 gl: Throw a _cairo_error when detecting a GLerror This allows us to easily set an breakpoint and inspect cairo's state when we do something illegal. src/cairo-gl-private.h | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) commit 1c18ab02c8d41be8e5886cbb34aeda5099189fef Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon May 17 11:42:26 2010 +0100 gl: Rename cairo_gl_shader_program_t to cairo_gl_shader_t And complete the move of the shaders into the cairo_gl_shader namespace. Of particular note, the bind_*_to_shader become _cairo_gl_shader_bind_*() and have proper types. src/cairo-gl-composite.c | 138 +++++++------- src/cairo-gl-device.c | 14 +- src/cairo-gl-private.h | 93 +++++---- src/cairo-gl-shaders.c | 508 +++++++++++++++++++++++++-------------------- src/cairo-gl-surface.c | 54 ++---- 5 files changed, 424 insertions(+), 383 deletions(-) commit 2325d755b03958d8ead9a995c0d1d03e4f93af0c Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon May 17 10:33:46 2010 +0100 gl: Pretty print the error GLenum. src/cairo-gl-private.h | 3 ++- src/cairo-gl-surface.c | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletions(-) commit 7ef1bd22ded512f4fad3959796d7f40c4ddc5824 Author: Benjamin Otte <otte@redhat.com> Date: Mon May 17 01:12:34 2010 +0200 gl: Update copyright statements - add 2010 Red Hat copyright for my code - include myself as author - update contributors list src/cairo-gl-composite.c | 5 ++++- src/cairo-gl-device.c | 5 ++++- src/cairo-gl-glyphs.c | 5 +++++ src/cairo-gl-private.h | 6 ++++-- src/cairo-gl-shaders.c | 8 +++++++- src/cairo-gl-surface.c | 5 ++++- 6 files changed, 28 insertions(+), 6 deletions(-) commit 0b69e51b526a609a2dc5f1d2fb9c49f240feb57b Author: Benjamin Otte <otte@redhat.com> Date: Mon May 17 00:56:21 2010 +0200 gl: Assert that binding values to shaders never fails As that would be a programming error, we can use an assert and get rid of return values that we weren't checking anyway. src/cairo-gl-composite.c | 129 +++++++++++++++++++--------------------------- src/cairo-gl-private.h | 12 ++-- src/cairo-gl-shaders.c | 114 ++++++++++++++++------------------------- src/cairo-gl-surface.c | 15 +++--- 4 files changed, 111 insertions(+), 159 deletions(-) commit 0bb11e8f5bcdc8a6f8384197b39c2ad48eaab1cd Author: Benjamin Otte <otte@redhat.com> Date: Mon May 17 00:49:01 2010 +0200 gl: Use GL_TRIANGLES instead of GL_QUADS It seems to increase performance by 1-2% on average and up to 30% in some cases (on i965). src/cairo-gl-composite.c | 16 +++++++++++----- 1 files changed, 11 insertions(+), 5 deletions(-) commit 2b771da47a87f86f378314bfe8033874d9444914 Author: Benjamin Otte <otte@redhat.com> Date: Sun May 16 23:58:47 2010 +0200 xlib: ensure variable isn't uninitialized src/cairo-xlib-surface.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) commit b768a33a602942825e5ec651ae7bafd6d5fc33ac Author: Benjamin Otte <otte@redhat.com> Date: Sun May 16 21:10:45 2010 +0200 gl: Set composite->has_component_alpha based on mask Previously it was set when initing the composite structure, but that doesn't allow resetting it when a new mask is used. src/cairo-gl-composite.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) commit 1cde4601df8a3689450e2a0e15888c53aff12983 Author: Benjamin Otte <otte@redhat.com> Date: Sun May 16 21:05:16 2010 +0200 gl: Replace _cairo_gl_operand_init() with setters for src/mask Now cairo_gl_operand_t is no longer exposed outside of cairo-gl-composite.c src/cairo-gl-composite.c | 34 +++++++++++++++++++++++++++++++++- src/cairo-gl-glyphs.c | 10 +++++----- src/cairo-gl-private.h | 25 ++++++++++++++++--------- src/cairo-gl-surface.c | 26 +++++++++++++------------- 4 files changed, 67 insertions(+), 28 deletions(-) commit 6575cb7a95e109ab39eda58603ed6a76581a41b0 Author: Benjamin Otte <otte@redhat.com> Date: Sun May 16 20:39:00 2010 +0200 gl: Convert glyphs path to use cairo_gl_composite_t src/cairo-gl-composite.c | 122 +++++++++++++----- src/cairo-gl-glyphs.c | 331 +++++---------------------------------------- src/cairo-gl-private.h | 22 +++ 3 files changed, 150 insertions(+), 325 deletions(-) commit 8937f2b4b5e4bcb8ada1e478df6a7329c0b80a5a Author: Benjamin Otte <otte@redhat.com> Date: Sun May 16 13:19:48 2010 +0200 gl: Require ARB_vertex_buffer_object extension unconditionally <anholt> we shouldn't bother with non-vbo support. there's no justification for a driver not supporting it. src/cairo-gl-composite.c | 1 - src/cairo-gl-device.c | 5 +++-- src/cairo-gl-glyphs.c | 3 --- src/cairo-gl-private.h | 7 ------- src/cairo-gl-surface.c | 12 ++++-------- 5 files changed, 7 insertions(+), 21 deletions(-) commit 29dfd5b488e16ec8be879b2415635df93b874afc Author: Benjamin Otte <otte@redhat.com> Date: Sun May 16 03:36:05 2010 +0200 gl: Remove unused variables src/cairo-gl-surface.c | 7 +------ 1 files changed, 1 insertions(+), 6 deletions(-) commit 4144488f516214b675d25d48add8cbd83fd17025 Author: Benjamin Otte <otte@redhat.com> Date: Sun May 16 03:29:04 2010 +0200 gl: Convert span renderer to use cairo_gl_composite_begin/end() Adds two new APIs to the composite API: - _cairo_gl_composite_set_mask_spans() Tells the composite renderer to use the color values for spans. - _cairo_gl_composite_set_clip_region() Tells the composite renderer to use GL_SCISSORS_TEST to clip when drawing. This function is very unperformant, so if it can be avoided, it probably shouldn't be used. src/cairo-gl-composite.c | 72 +++++++++++++- src/cairo-gl-private.h | 10 ++ src/cairo-gl-surface.c | 247 ++++++---------------------------------------- 3 files changed, 110 insertions(+), 219 deletions(-) commit 6e81d85e3682f14e1c5dbe97dda2cc1fcd32df3a Author: Benjamin Otte <otte@redhat.com> Date: Sun May 16 03:27:28 2010 +0200 gl: Change _cairo_gl_composite_emit_rect() Two changes: - The function now takes x1/y1,x2/y2 instead of x,y,width,height - The function takes a color uint32_t. This will be used by spans. src/cairo-gl-composite.c | 27 +++++++++++++++------------ src/cairo-gl-private.h | 9 +++++---- src/cairo-gl-surface.c | 10 ++++++---- 3 files changed, 26 insertions(+), 20 deletions(-) commit f8398cc2d83eb9ac37874f71d4f8805dbf0df412 Author: Benjamin Otte <otte@redhat.com> Date: Sun May 16 02:34:18 2010 +0200 gl: remove unused variables from span renderer src/cairo-gl-surface.c | 7 ------- 1 files changed, 0 insertions(+), 7 deletions(-) commit f5c5077def47b91b57dfbc8c2622b4aaf5ca8fbb Author: Benjamin Otte <otte@redhat.com> Date: Sun May 16 02:06:43 2010 +0200 gl: Support component alpha in gl_composite_t Use that to get rid of cairo_gl_surface_composite_component_alpha() src/cairo-gl-composite.c | 165 ++++++++++++++++++++++++++-- src/cairo-gl-glyphs.c | 2 +- src/cairo-gl-private.h | 4 + src/cairo-gl-surface.c | 280 +--------------------------------------------- 4 files changed, 167 insertions(+), 284 deletions(-) commit 88c118f891ca9ba472b8acff33829de845bb507c Author: Benjamin Otte <otte@redhat.com> Date: Sun May 16 00:24:17 2010 +0200 gl: Implement _composite_emit_rect() and _composite_end() And use it in cairo_gl_surface_composite() src/cairo-gl-composite.c | 164 ++++++++++++++++++++++++++++++++++++++++++++++ src/cairo-gl-private.h | 19 +++++ src/cairo-gl-surface.c | 107 +++--------------------------- 3 files changed, 192 insertions(+), 98 deletions(-) commit b96735f7b465a16182c4c8555878ba16b947e8f9 Author: Benjamin Otte <otte@redhat.com> Date: Sat May 15 22:12:12 2010 +0200 gl: Add _cairo_gl_composite_begin() function This is the first step at adding the following function set: _cairo_gl_composite_begin() _cairo_gl_composite_emit_*() _cairo_gl_composite_end() which will take care of proiding a unified model for emitting vertexes using vbos instead of the 5 different methods we currently have. src/cairo-gl-composite.c | 30 ++++++++++++++++++++++++++++++ src/cairo-gl-private.h | 6 ++++++ src/cairo-gl-surface.c | 22 +--------------------- 3 files changed, 37 insertions(+), 21 deletions(-) commit 211a8b8234d24dd8e00332cb0b0e625ac1ffef58 Author: Benjamin Otte <otte@redhat.com> Date: Sat May 15 21:27:58 2010 +0200 gl: make _cairo_operand_destroy private src/cairo-gl-composite.c | 2 +- src/cairo-gl-private.h | 3 --- 2 files changed, 1 insertions(+), 4 deletions(-) commit bf1060252abaa97eb5ce149f8b99055b42096c67 Author: Benjamin Otte <otte@redhat.com> Date: Sat May 15 21:26:55 2010 +0200 gl: make show_glyphs use the cairo_composite_t API src/cairo-gl-glyphs.c | 17 ++++++++++------- 1 files changed, 10 insertions(+), 7 deletions(-) commit 948290de12c5f451d361903f0f52e0cde5527180 Author: Benjamin Otte <otte@redhat.com> Date: Sat May 15 20:33:00 2010 +0200 gl: Make the span renderer use the new composite APIs src/cairo-gl-surface.c | 32 ++++++++++++++++++++------------ 1 files changed, 20 insertions(+), 12 deletions(-) commit 7ad8c3b45691ce0c8a86180bb3c1117b9a9980c0 Author: Benjamin Otte <otte@redhat.com> Date: Sat May 15 20:07:44 2010 +0200 gl: Move composite code into own file This allows designing a cleaner interface for cairo_composite_t as there will not be static functions that get called outside of the "published" interfaces. src/Makefile.sources | 3 +- src/cairo-gl-composite.c | 898 ++++++++++++++++++++++++++++++++++++++++++++++ src/cairo-gl-private.h | 8 + src/cairo-gl-surface.c | 851 +------------------------------------------- 4 files changed, 910 insertions(+), 850 deletions(-) commit 3ff32b00f0f85a853163c20b101ac5dd6a07da77 Author: Benjamin Otte <otte@redhat.com> Date: Sat May 15 18:20:56 2010 +0200 gl: cairo_gl_compsite_setup_t => cairo_gl_composite_t src/cairo-gl-glyphs.c | 4 ++-- src/cairo-gl-private.h | 26 +++++++++++++------------- src/cairo-gl-surface.c | 46 +++++++++++++++++++++++----------------------- 3 files changed, 38 insertions(+), 38 deletions(-) commit c16edee26fb9f1669ee0ce1a61f0c54d802c6c7b Author: Benjamin Otte <otte@redhat.com> Date: Sat May 15 17:33:24 2010 +0200 gl: use glBlendFuncSeparate() This way we can treat alpha-only textures correctly and don't have to emit different shaders for it. Also gets rid of GL_OPERAND_TEXTURE_ALPHA. src/cairo-gl-glyphs.c | 9 +++------ src/cairo-gl-private.h | 1 - src/cairo-gl-shaders.c | 37 ------------------------------------- src/cairo-gl-surface.c | 37 +++++++++++++------------------------ 4 files changed, 16 insertions(+), 68 deletions(-) commit 4f5221a834a883262cce607d247f607d6c200363 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 12 21:12:37 2010 +0200 gl: acquire device manually in finish, as the default way will error We'll get CAIRO_STATUS_DEVICE_FINISHED, d'oh src/cairo-gl-device.c | 16 ++++++++-------- 1 files changed, 8 insertions(+), 8 deletions(-) commit 3f6300444928d12bf4a6e2f6f2c5fec1de7dba8e Author: Benjamin Otte <otte@redhat.com> Date: Wed May 12 20:53:20 2010 +0200 gl: Put shaders into a cache This allows to grow the complexity of the shaders without enlarging the static array to unreasonable sizes. The cache size of 64 is essentially random. src/cairo-gl-device.c | 2 + src/cairo-gl-private.h | 8 ++- src/cairo-gl-shaders.c | 111 ++++++++++++++++++++++++++++++++++++++++-------- 3 files changed, 100 insertions(+), 21 deletions(-) commit 08b04caf52518f1672694341355b5f5418008e78 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 12 18:10:04 2010 +0200 gl: Add cairo_gl_composite_setup_init/fini() functions Simplifies the main code paths, and can be extended to do dest copies. src/cairo-gl-private.h | 13 +++++++ src/cairo-gl-surface.c | 91 +++++++++++++++++++++++++++-------------------- 2 files changed, 65 insertions(+), 39 deletions(-) commit aa14df0db5e4f236a9668ceda4e148e7d3ba0e9f Author: Benjamin Otte <otte@redhat.com> Date: Wed May 12 17:01:47 2010 +0200 gl: move operator check component alpha compositing checks the operator itself src/cairo-gl-surface.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) commit a3ee0a7f113ed38df66580ff7e38a79759b0c933 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 12 16:57:32 2010 +0200 gl: Programmatically generate fragment shaders src/cairo-gl-shaders.c | 428 +++++++++++++++++++++--------------------------- src/cairo-gl-surface.c | 6 +- 2 files changed, 186 insertions(+), 248 deletions(-) commit fe43b13052f7063f880aeeebda1880a6a2097922 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 12 13:57:06 2010 +0200 gl: Automatically generate the vertex shader source The idea is being able to generate shaders from the given input on-demand. This allows creating more advanced shaders, such as those that include the destination (for self-painting and unsupported-by-blending operator) or painting images in weird formats (extra translation step in shader, think YUV). src/cairo-gl-device.c | 2 +- src/cairo-gl-private.h | 21 +++--- src/cairo-gl-shaders.c | 195 +++++++++++++++++++++++++++++------------------- src/cairo-gl-surface.c | 3 +- 4 files changed, 132 insertions(+), 89 deletions(-) commit 405eee07ad9a5bc325b339b8588facb905fb28f5 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 12 00:02:28 2010 +0200 gl: Get rid of cairo_gl_shader_source/mask_t Use the cairo_gl_operand_type_t instead. Those enums are pretty much identical. src/cairo-gl-glyphs.c | 13 +++-- src/cairo-gl-private.h | 67 ++++++++------------- src/cairo-gl-shaders.c | 60 ++++++++++--------- src/cairo-gl-surface.c | 153 +++++++++++++++++++++++++++++------------------- 4 files changed, 157 insertions(+), 136 deletions(-) commit 5149bb87d7b547766ce6ff4976217454adbab562 Author: Benjamin Otte <otte@redhat.com> Date: Tue May 11 21:35:13 2010 +0200 gl: s/_cairo_gl_set_destination/_cairo_gl_context_set_destination/ It's an operation on the context, so name it accordingly src/cairo-gl-device.c | 2 +- src/cairo-gl-glyphs.c | 2 +- src/cairo-gl-private.h | 2 +- src/cairo-gl-surface.c | 16 ++++++++-------- 4 files changed, 11 insertions(+), 11 deletions(-) commit 9f34e403f38192d711304fbde4dedbaa8e15fd6e Author: Benjamin Otte <otte@redhat.com> Date: Tue May 11 13:15:16 2010 +0200 gl: Share vertex shaders Previously, we created a new vertex shader for every shader program we used. Now the code shares identical vertex shaders between programs. src/cairo-gl-device.c | 17 ++++- src/cairo-gl-private.h | 27 ++++++-- src/cairo-gl-shaders.c | 179 +++++++++++++++++++++++++++-------------------- src/cairo-gl-surface.c | 7 +-- 4 files changed, 142 insertions(+), 88 deletions(-) commit 562c323ae8689907d7a62a7c2f5c10fb8d055608 Author: Adrian Johnson <ajohnson@redneon.com> Date: Sun May 16 17:47:13 2010 +0930 cff: Use correct glyph advance when subsetting cff fonts Previously the glyph advance in font units was used for the widths in the PDF font dictionary. This only works for cff fonts that use a [0.001 0 0 0.001 0 0] font matrix. src/cairo-cff-subset.c | 38 +++++++++++++++++------------- src/cairo-pdf-surface.c | 19 ++++++++------- src/cairo-scaled-font-subsets-private.h | 6 ++-- 3 files changed, 34 insertions(+), 29 deletions(-) commit edcefa87ed0a8ff59b54ef9251182ce68f9158ba Author: Adrian Johnson <ajohnson@redneon.com> Date: Wed May 12 23:12:55 2010 +0930 type1: Use correct glyph advance when subsetting type 1 fonts Previously the glyph advance in font units was used for the widths in the PDF font dictionary. This only works for Type 1 fonts that use a [0.001 0 0 0.001 0 0] font matrix. https://bugs.freedesktop.org/show_bug.cgi?id=28061 src/cairo-pdf-surface.c | 23 ++++++++++++----------- src/cairo-scaled-font-subsets-private.h | 6 +++--- src/cairo-type1-fallback.c | 18 +++++++++--------- src/cairo-type1-subset.c | 6 +++--- 4 files changed, 27 insertions(+), 26 deletions(-) commit 34fd094b3be54138c20ea5c4aab1d9597d056f35 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun May 16 10:23:30 2010 +0100 rtree: Actually pin the node when pinning. How embarrassing. src/cairo-rtree-private.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 63062511f6755af9ddd2985250465f94ebc5a3e8 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun May 16 10:15:42 2010 +0100 boilerplate: Exercise manual double-buffering to a window Shouldn't possibly go wrong, but the mix of fbo and Window might prove interesting. boilerplate/cairo-boilerplate-gl.c | 117 ++++++++++++++++++++++++++++++++++++ 1 files changed, 117 insertions(+), 0 deletions(-) commit 605be3182308ec7dfe15e9d89890c33800b1eea9 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun May 16 10:11:02 2010 +0100 cairo: Missing private markup for _cairo_format_to_pixman_format src/cairoint.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 14d6c3e054da89e47fc82ea29a708290eefe1357 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun May 16 10:07:07 2010 +0100 configure: Include PTHREAD_CFLAGS in CAIRO_LDFLAGS Required for successful linking of our programs. I am not sure what the impact this has upon other users of Cairo yet, I think we need to export the PTHREAD_CFLAGS via cairo.pc as well. configure.ac | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit c3df7e6d58364f883d91567757ed999ea88e10ca Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun May 16 09:54:04 2010 +0100 rtree: Replace undeclared TRUE/FALSE with 1/0 src/cairo-rtree-private.h | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 465ceb330eada9937945f5c4d156169167d4bf8c Author: Andrea Canciani <ranma42@gmail.com> Date: Sun May 16 09:41:12 2010 +0200 test: improve copyright notices Conform copyright notices to a1-image-sample.c test/dash-offset.c | 54 ++++++++++++++++----------------------- test/linear-gradient-extend.c | 36 +++++++++++++------------ test/radial-gradient-extend.c | 36 +++++++++++++------------ test/surface-pattern-operator.c | 36 +++++++++++++------------ 4 files changed, 79 insertions(+), 83 deletions(-) commit e8bc25fdb21340b0a5a25f7193fd0bc5de540a50 Author: Andrea Canciani <ranma42@valium.area51.sns.it> Date: Fri May 14 21:40:13 2010 +0200 test: add linear-gradient-extend and radial-gradient-extend Check that constant gradient to solid color optimization are only applied if the extents permit it. test/Makefile.sources | 2 + test/linear-gradient-extend.c | 90 +++++++++++++++++++++++++++++++++++ test/linear-gradient-extend.ref.png | Bin 0 -> 371 bytes test/radial-gradient-extend.c | 90 +++++++++++++++++++++++++++++++++++ test/radial-gradient-extend.ref.png | Bin 0 -> 466 bytes 5 files changed, 182 insertions(+), 0 deletions(-) commit a9d821b7a0f582b3d1b0175adee3350c81061a94 Author: Benjamin Otte <otte@redhat.com> Date: Fri May 14 21:06:18 2010 +0200 gl: gl surfaces are only similar when they share the same device Fixes gl-surface-source test for gl target src/cairo-gl-surface.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 435329a70f172c8cec72831dd7a2b2cfc0496342 Author: Richard Procter <richard.n.procter@gmail.com> Date: Fri May 14 14:48:46 2010 -0400 Bug 28100 - Font option CAIRO_HINT_METRICS_OFF unhonoured on win32 Fix typo. Ouch! src/cairo-win32-font.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 3a550eb2253588372b2c071b3c3152d5271c1aa2 Author: Benjamin Otte <otte@redhat.com> Date: Thu May 13 21:17:19 2010 +0200 gl: Remove gradient optimizations These optimizations are done in cairo-gstate.c these days. src/cairo-gl-surface.c | 31 ------------------------------- 1 files changed, 0 insertions(+), 31 deletions(-) commit 3b1c0a4bd66660780095e6016e3db451f34503a3 Author: Benjamin Otte <otte@redhat.com> Date: Fri May 14 15:56:17 2010 +0200 fallback: Remove span renderer paths Those paths were broken, as they didn't properly translate the polygon to the destination size. And rather than adding lots of code that allows translation, it's easier to just delete this code. Note that the only user of the code was the GL backend anyway. src/cairo-surface-fallback.c | 67 ------------------------------------------ 1 files changed, 0 insertions(+), 67 deletions(-) commit e3b2212bc5c4884eab356ae263b8318e10c379ac Author: Benjamin Otte <otte@redhat.com> Date: Thu May 13 15:14:29 2010 +0200 build: Fix pthread detection Incorporate the pthread detection code from the autoconf archive. Should fix build on obscure archs that pretend to be UNIXy - like Mac OS X Tiger. http://www.gnu.org/software/autoconf-archive/ http://www.gnu.org/software/autoconf-archive/ax_pthread.html build/ax-pthread.m4 | 283 +++++++++++++++++++++++++++++++++++++++++ build/configure.ac.system | 11 -- configure.ac | 14 +- util/cairo-sphinx/Makefile.am | 5 +- util/cairo-trace/Makefile.am | 2 +- 5 files changed, 292 insertions(+), 23 deletions(-) commit acfbf95a0c7620359fd917224b5b391702740190 Author: Benjamin Otte <otte@redhat.com> Date: Thu May 13 14:21:21 2010 +0200 test: Make global variables in new test static It seems there's no gcc flag that warns about this. test/zero-mask.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit c69143e3f9c95ab3937a7efb8e4de170c4edb648 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 12 21:14:36 2010 +0200 gl: Don't keep a temporary surface in the device We get circular references that way. If it turns out later such a cache is critical, we'll need to invent a way to avoid circling references. For now, just pretend it's not important. src/cairo-gl-glyphs.c | 36 ++++++++---------------------------- src/cairo-gl-private.h | 1 - 2 files changed, 8 insertions(+), 29 deletions(-) commit ec1ca17b71b41159ea8754d42954863b62623536 Author: Benjamin Otte <otte@redhat.com> Date: Thu May 13 12:07:53 2010 +0200 gl: Don't create 0x0 surfaces We get a very annoyed libGL if we try to create 0x0 textures, so we return an image surface instead. Tested by the zero-mask test. src/cairo-gl-surface.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit 108e3f5031fc16843197382af78af299b19ef290 Author: Benjamin Otte <otte@redhat.com> Date: Thu May 13 12:01:39 2010 +0200 Use a solid color for 0xN and Nx0 surfaces This gets around the need to check for 0-sized surfaces in the backends. src/cairo-gstate.c | 15 +++++++++++++++ 1 files changed, 15 insertions(+), 0 deletions(-) commit 18c963824ebbb0e7054e682ecb5664a282a58552 Author: Benjamin Otte <otte@redhat.com> Date: Thu May 13 11:56:22 2010 +0200 Make _cairo_color_equal() work for unmultiplied colors, too Color stop colors are unmultiplied, and we use it there. src/cairo-color.c | 10 ++++++++-- 1 files changed, 8 insertions(+), 2 deletions(-) commit 7bd8d0db1f4ac448c93d6d342726f64a0d6300e3 Author: Benjamin Otte <otte@redhat.com> Date: Thu May 13 11:23:33 2010 +0200 image: Fix wholly unbounded fixup Tested by zero-mask test. src/cairo-image-surface.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 8aa50b5a7873b8317d0593105497607dbb2fae1d Author: Benjamin Otte <otte@redhat.com> Date: Thu May 13 10:27:37 2010 +0200 cairo_paint_with_alpha(cr, 0.0) is only a noop when bounded by mask src/cairo.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit ee32dfb3de035e73cb8c2073c0826daf244e3845 Author: Benjamin Otte <otte@redhat.com> Date: Thu May 13 10:04:49 2010 +0200 test: Add a test for various zero mask operations test/Makefile.sources | 3 +- test/zero-mask.c | 199 ++++++++++++++++++++++++++++++++++++++++++ test/zero-mask.ref.png | Bin 0 -> 402 bytes test/zero-mask.rgb24.ref.png | Bin 0 -> 382 bytes 4 files changed, 201 insertions(+), 1 deletions(-) commit 986ae4232067d4f33931d98fb6324871a1025633 Author: Owen W. Taylor <otaylor@fishsoup.net> Date: Thu Feb 25 15:18:22 2010 -0500 language bindings guide: clarify mapping for cairo_pattern_create_rgb[a] Clarify that cairo_pattern_create_rgb() and cairo_pattern_create_rgba() should be be overloaded as a single constructor for SolidPattern, but instead should be static methods. doc/public/language-bindings.xml | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-) commit 18b48a6ebc044c07f08bafd0abcb68c595c5746c Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu May 13 10:00:18 2010 +0100 Make cairo_color_stop_t a unique type. Hopefully reduce the occurrence of the confusion between the premultiplied shorts in cairo_color_t and the non-premultiplied shorts in cairo_color_stop_t. The existence of the two separate types is debatable and open for review. src/cairo-color.c | 4 ++-- src/cairo-gstate.c | 2 +- src/cairo-pattern.c | 2 +- src/cairo-pdf-surface.c | 9 --------- src/cairo-ps-surface.c | 32 ++------------------------------ src/cairo-svg-surface.c | 4 ++-- src/cairo-types-private.h | 17 ++++++++++++++++- src/cairoint.h | 4 ++-- 8 files changed, 26 insertions(+), 48 deletions(-) commit dfa2544f158930b002df74e676f3ef7aeeee1bd4 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu May 13 09:52:39 2010 +0100 color: Special case comparing color stops. color stops are not premultiplied so we need to handle them carefully when comparing. The next step will be to make cairo_color_stop_t a unique type to prevent this mistake again. src/cairo-color.c | 30 ++++++++++++++++++++++++++++++ src/cairo-gl-surface.c | 4 ++-- src/cairo-gstate.c | 4 ++-- src/cairo-pattern.c | 6 +++--- src/cairoint.h | 4 ++++ src/drm/cairo-drm-intel.c | 2 +- 6 files changed, 42 insertions(+), 8 deletions(-) commit 4741d33cf67409a6fddbc32a5d0c8d68224cd939 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu May 13 09:31:10 2010 +0100 gstate: Don't reduce solid source and mask for SOURCE and CLEAR Not all operators are created equal, and this optimization breaks for SOURCE and CLEAR where the mask operates on the clip and not the source. src/cairo-gstate.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit ee871940ffe229ed285e618566e45c7d28c5857c Author: Andrea Canciani <ranma42@gmail.com> Date: Thu May 13 01:54:39 2010 +0200 Revert bd672d080ca0036ef1b88d26583e6af36f541461 on src/cairo-composite-rectangles.c The extent of the operation can be larger than the source if the operator is not bounded by the source. Fixes clip-unbounded, operator-source, surface-pattern-operator src/cairo-composite-rectangles.c | 7 +++---- 1 files changed, 3 insertions(+), 4 deletions(-) commit 0870c6fb5b39dcc04fa376123848adde2d06d2ce Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Apr 15 20:31:24 2010 +0100 gcc-4.5 warnings and optimisation flags. build/configure.ac.warnings | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit cf0933a05aedb66b5d8999c84b935349b25dd974 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Apr 12 10:42:14 2010 +0100 gallium: Refresh. Catch up with changes in APIs, still no substance and the integration with winsys handles needs review. boilerplate/Makefile.win32.features | 8 - build/Makefile.win32.features-h | 1 - src/Makefile.win32.features | 8 - src/drm/cairo-drm-gallium-surface.c | 514 +++++++++++++++++++++------------- 4 files changed, 317 insertions(+), 214 deletions(-) commit bd672d080ca0036ef1b88d26583e6af36f541461 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Mar 26 19:37:08 2010 +0000 drm: code dump, sorry. Lots upon lots of tiny fixes mixed in with experimental code. :( boilerplate/Makefile.win32.features | 18 + boilerplate/cairo-boilerplate-drm.c | 12 +- build/Makefile.win32.features | 1 + build/Makefile.win32.features-h | 4 + build/configure.ac.features | 1 + configure.ac | 13 + src/Makefile.sources | 7 + src/Makefile.win32.features | 22 + src/cairo-boxes-private.h | 4 + src/cairo-boxes.c | 31 + src/cairo-composite-rectangles.c | 7 +- src/cairo-drm-xr.h | 66 + src/cairo-drm.h | 4 +- src/cairo-fixed-private.h | 18 +- src/cairo-freelist-private.h | 1 - src/cairo-freelist.c | 7 +- src/cairo-image-surface.c | 2 +- src/cairo-list-private.h | 31 +- src/cairoint.h | 7 + src/drm/cairo-drm-i915-glyphs.c | 82 +- src/drm/cairo-drm-i915-private.h | 153 ++- src/drm/cairo-drm-i915-shader.c | 866 +++++++----- src/drm/cairo-drm-i915-spans.c | 146 ++- src/drm/cairo-drm-i915-surface.c | 1698 +++++++++++++++++----- src/drm/cairo-drm-i965-glyphs.c | 36 +- src/drm/cairo-drm-i965-private.h | 2 +- src/drm/cairo-drm-i965-shader.c | 11 +- src/drm/cairo-drm-i965-spans.c | 16 +- src/drm/cairo-drm-i965-surface.c | 146 ++- src/drm/cairo-drm-intel-debug.c | 1 + src/drm/cairo-drm-intel-ioctl-private.h | 25 + src/drm/cairo-drm-intel-private.h | 92 +- src/drm/cairo-drm-intel-surface.c | 90 +- src/drm/cairo-drm-intel.c | 530 ++++--- src/drm/cairo-drm-private.h | 10 +- src/drm/cairo-drm-radeon-surface.c | 60 +- src/drm/cairo-drm-surface.c | 37 +- src/drm/cairo-drm-xr.c | 2377 +++++++++++++++++++++++++++++++ 38 files changed, 5323 insertions(+), 1311 deletions(-) commit c8fba4960339797521afbf8068fcbe62d064f5dc Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Apr 3 15:38:04 2010 +0100 rtree: Remove the unused evict hook. src/cairo-gl-glyphs.c | 3 +-- src/cairo-rtree-private.h | 4 +--- src/cairo-rtree.c | 13 +------------ src/drm/cairo-drm-i915-surface.c | 3 +-- src/drm/cairo-drm-intel.c | 2 +- 5 files changed, 5 insertions(+), 20 deletions(-) commit 2a0726337368462046ef84d9be4cf59734b39806 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Apr 3 15:30:18 2010 +0100 rtree: defer propagating pinned nodes until eviction. Only during infrequent eviction do we require absolute knowledge of which graph of nodes are in use and thus pinned. So during the common use of querying the glyph cache, we just mark the leaf as used. Then we need to make space for a new glyph, we move the parents of the left nodes from the evictable list to the pinned list. src/cairo-rtree-private.h | 12 ++++++++++-- src/cairo-rtree.c | 33 +++++++++++---------------------- 2 files changed, 21 insertions(+), 24 deletions(-) commit cbe8fd0794adaccdf3eb15eef780a030e3d51784 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Apr 3 14:56:25 2010 +0100 script: Avoid the expensive of the redundant memset. As we are about to immediately fill the entire image, allocate the memory ourselves to avoid the redundant memset performed by pixman. util/cairo-script/cairo-script-operators.c | 39 ++++++++++++++++++--------- 1 files changed, 26 insertions(+), 13 deletions(-) commit b9f7a4b5261b6d4e7bdbb5cc56d78d50ad1bd4a7 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Apr 3 14:48:36 2010 +0100 script: Don't hash the entire image. The reuse hit rate is very small, and most images are quickly distinguished in the first few bytes... Though perhaps not for video as in the swfdec-youtube case... util/cairo-script/cairo-script-operators.c | 35 +++++++++++++++++++-------- 1 files changed, 24 insertions(+), 11 deletions(-) commit a85c6c1e36273d534f01ade0714b0592b6bed5ab Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Apr 3 14:09:56 2010 +0100 gstate: reduce a couple more operators src/cairo-gstate.c | 15 ++++++++++++++- 1 files changed, 14 insertions(+), 1 deletions(-) commit a3cb52e4037db9e565d32f85d69c364b606555e9 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Apr 3 13:36:18 2010 +0100 simplify pattern extents for translation matrices src/cairo-pattern.c | 22 ++++++++++++++-------- 1 files changed, 14 insertions(+), 8 deletions(-) commit d45c7dc62d6b036bbbe85c3c1951807e055930d9 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Apr 1 17:09:11 2010 +0100 xcb: discard glyph mask and use dst directly when possible. boilerplate/cairo-boilerplate-xcb.c | 12 +++-- src/cairo-gstate.c | 18 ++++++- src/cairo-pattern.c | 2 +- src/cairo-xcb-surface-render.c | 85 ++++++++++++++++++++++++++++------- 4 files changed, 92 insertions(+), 25 deletions(-) commit a8b611ea8eb90f190ee3a9e7999e08e2d865ac43 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Mar 27 08:23:10 2010 +0000 clip: Fill instead of creating intermediate surfaces. src/cairo-clip.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) commit fb53d05a69d0291fe68dfe8669b5c1f7636ede1a Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed May 12 20:06:34 2010 +0100 test: Remove pthread_yield() I accidentally pushed this debugging left-over from when I was tracking down a race in memfault. Remove it so that the test suite compiles on more minimal pthread setups. test/pthread-same-source.c | 2 -- test/pthread-show-text.c | 2 -- test/pthread-similar.c | 2 -- 3 files changed, 0 insertions(+), 6 deletions(-) commit cdd98dba6a62360071aebb6dbbb6be2ab6be368f Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed May 12 19:35:15 2010 +0100 win32-printing: compile fix. Missing arg for _cairo_recording_surface_replay_region(). src/cairo-win32-printing-surface.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 35307fc66f649cc042ec07b7b79277d7ee5987f3 Author: Jonathan Kew <jfkthame@gmail.com> Date: Tue May 11 15:12:01 2010 -0400 win32: Grow glyph extents to account for ClearType Add extra pixel on each side of the glyph's black box returned by GetGlyphOutlineW, to avoid clipping ClearType pixels. From https://bugzilla.mozilla.org/show_bug.cgi?id=445087 src/cairo-win32-font.c | 13 +++++++++++++ 1 files changed, 13 insertions(+), 0 deletions(-) commit d65e8064c0bd3f2d5ad200493bfefb89aefbba55 Author: Robert O'Callahan <robert@ocallahan.org> Date: Tue May 11 13:59:58 2010 -0400 Ensure the quartz backend returns the first stop for negative positions on the gradient line of a nonrepeating linear gradient. I discovered a small bug in cairo-quartz gradients. If you have multiple stops at position 0, then cairo-quartz pads with the *last* stop at position 0, instead of the first stop at position 0. This patch fixes that. From https://bugzilla.mozilla.org/show_bug.cgi?id=513395 src/cairo-quartz-surface.c | 24 ++++++++++++++++++++++-- 1 files changed, 22 insertions(+), 2 deletions(-) commit ce27db9a558cbf4065b18aed55cc706fc0a6d128 Author: Robert O'Callahan <robert@ocallahan.org> Date: Tue May 11 13:59:52 2010 -0400 Don't repeat a Quartz gradient more times than necessary, to avoid Quartz quality problems when there are lots of repeated color stops. -- Add a parameter to _cairo_quartz_setup_source so we can pass down the extents of the object we're drawing -- Compute fill/stroke/glyph extents and pass them down in the cases we need to (repeating/reflecting gradients) -- Pass those extents on down to where we set up the gradients -- Make _cairo_quartz_setup_linear_source fall back to pixman for the degenerate case where the linear gradient vector has no length -- In CreateRepeatingRadialGradientFunction and CreateRepeatingLinearGradientFunction, use the object extents (or surface extents, for the paint() case) instead of the clip box to calculate the parameters for the gradient -- I've changed the way CreateRepeatingLinearGradientFunction calculates the repetition count. The new approach gives much more precise bounds on the number of repetitions needed (and is very similar to what we do for radial gradients). This is important because if we specify a much larger input range than we really need for our gradient color function, Quartz samples it too coarsely over the range we actually care about, and the gradients look bad. For example, suppose start = (5,0), end = (6,10), the CTM is identity and the bounds we want to cover is (0,0)-(10,10). I think the current approach sets up the gradient to be repeated 10 times. In fact only 3 repetitions are needed. Also, using 'width' here didn't look right: - y_rep_end = (int) ceil((surface->extents.width - MAX(mstart.y, mend.y)) / dy From https://bugzilla.mozilla.org/show_bug.cgi?id=508730 src/cairo-quartz-surface.c | 261 ++++++++++++++++++++++++++++++-------------- 1 files changed, 179 insertions(+), 82 deletions(-) commit 7b4e63d5b8bda8e9ea1f6455d779070f64f07f6f Author: Robert O'Callahan <robert@ocallahan.org> Date: Tue May 11 13:59:43 2010 -0400 Clean up Quartz gradient code by moving some local variables to static const globals. From https://bugzilla.mozilla.org/show_bug.cgi?id=508730 src/cairo-quartz-surface.c | 31 +++++++++++++------------------ 1 files changed, 13 insertions(+), 18 deletions(-) commit 8302952dcff20a1d2de194152ace810c7056f994 Author: Robert O'Callahan <robert@ocallahan.org> Date: Tue May 11 13:58:10 2010 -0400 quartz: Don't fallback to pixman for repeating radial gradients. Figuring out where the outer circle should move to is tricky. I hope the algebra in there is understandable. This is a nice performance improvement, probably because we avoid painting the gradient over the entire clipBox (which is usually the entire surface). I tried to write reftests that compared a repeating radial gradient to a non-repeating gradient with manually repeated stops, but it didn't work because the rasterization was slightly different --- I'm not sure why. This patch also forces us to use pixman for all degenerate cases where the circles intersect. This at least makes us consistent across platforms. From https://bugzilla.mozilla.org/show_bug.cgi?id=508227 src/cairo-quartz-surface.c | 203 +++++++++++++++++++++++++++++++++++++++----- 1 files changed, 180 insertions(+), 23 deletions(-) commit 1bda2334b32394a821e6286fbc76617e68da3895 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue May 11 13:51:38 2010 +0100 trace: And for the bonus round... Make it compile. util/cairo-trace/trace.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit b23f3bd20450aae764f9f9362c560b00bf68636b Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue May 11 13:54:08 2010 +0100 trace: Try wrapping FT_Open_Face() We have to be careful to disambuigate an internal call by FreeType from the application. util/cairo-trace/trace.c | 38 ++++++++++++++++++++++++++------------ 1 files changed, 26 insertions(+), 12 deletions(-) commit ee446910aa1db0ca0b54791a2ef3bb24b277c9a4 Author: Jeff Muizelaar <jmuizelaar@mozilla.com> Date: Mon May 10 15:06:25 2010 -0400 Add an additional set parantheses around the container_of macro The non-__GNUC__ version of the container_of macro would do wrong when used like container_of(...)-> because '->' binds tighter than the cast in the container_of macro. Adding an additional set of parantheses fixes this. src/cairoint.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit e540d040bddc717f17e0e2510cffc0bc3cb41ccd Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon May 10 13:36:53 2010 +0100 xcb: trivial memfault fixes. The first fixes required to kick-start memfault testing of the xcb backend. boilerplate/cairo-boilerplate-xcb.c | 22 +++++++++++-- src/cairo-xcb-connection-render.c | 35 ++++++++++++++++----- src/cairo-xcb-connection.c | 57 ++++++++++++++++++++++++---------- src/cairo-xcb-private.h | 2 +- src/cairo-xcb-screen.c | 15 +++++---- src/cairo-xcb-surface-core.c | 1 - src/cairo-xcb-surface-render.c | 32 ++++++++++++++++--- src/cairo-xcb-surface.c | 5 ++- src/cairo-xlib-xcb-surface.c | 1 - 9 files changed, 123 insertions(+), 47 deletions(-) commit 8b486db9a9d74b40df296382eb1833bc40ae791a Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon May 10 12:45:31 2010 +0100 region: _cairo_region_create_in_error() Avoid leaks when reporting memfault associated with constructing regions. src/cairo-path-fill.c | 7 +--- src/cairo-region-private.h | 3 ++ src/cairo-region.c | 63 ++++++++++++++++++++++++++++++++++++++----- 3 files changed, 60 insertions(+), 13 deletions(-) commit 9d863cd3942c3086c24d67305f7a5892604d0eeb Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat May 8 18:20:11 2010 +0100 xcb: Find the correct xcb_screen_t for faking Screen When choosing the xcb_screen_t to use for the xlib-xcb backing surface, it helps if it matches the screen used to generate similar surfaces and snapshots - otherwise we end up pulling the image back from the XServer every time we want to use the Picture. src/cairo-xlib-xcb-surface.c | 23 +++++++++++++++++++++-- 1 files changed, 21 insertions(+), 2 deletions(-) commit 448d3571088463fc61641badcdfdc8c0002ae12a Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat May 8 09:59:54 2010 +0100 xcb: Upload images in place. A common operation is to store an image in a similar surface, so construct a fast path to avoid the allocation and double-blit through a temporary pixmap. src/cairo-xcb-private.h | 5 + src/cairo-xcb-surface-render.c | 169 +++++++++++++++++++++++++++++++++++++++- src/cairo-xcb-surface.c | 31 ++++--- 3 files changed, 189 insertions(+), 16 deletions(-) commit e48cbd3b47a6e4f7c1f66b3085df41546460e477 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat May 8 09:56:46 2010 +0100 xcb: Reset picture after failed snapshot. Clear the local picture variable if we cannot use the snapshot so that we are forced to create a new and valid picture. src/cairo-xcb-surface-render.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 4e3c19833ef8631c1f1cd54870c0a86d88252886 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri May 7 21:30:13 2010 +0100 test: Force cairo-test-suite to return SUCCESS Set the CAIRO_TEST_FORCE_PASS environment variable to run through the test suite and ignore errors. Useful for forcing distcheck to continue past a broken test suite. test/cairo-test-runner.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-) commit ad8abc01105f02a05497969b6b5ec2c8742daeb2 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri May 7 21:28:58 2010 +0100 subsurface: Don't double apply device offset for deep subsurfaces. If we have a subsurface of a subsurface then the device offset has already been applied to the extents that we use to offset the new subsurface. src/cairo-surface-subsurface.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) commit d2a250ad33dcd1a3960b07d2f0270266a3f3f106 Author: Benjamin Otte <otte@redhat.com> Date: Fri May 7 20:36:33 2010 +0200 gl: Make the shader implementation per-context, not global src/cairo-gl-device.c | 8 +--- src/cairo-gl-glyphs.c | 4 +- src/cairo-gl-private.h | 37 ++++++++++++----- src/cairo-gl-shaders.c | 105 +++++++++++++++++++++++++----------------------- src/cairo-gl-surface.c | 89 +++++++++++++++++++++------------------- 5 files changed, 131 insertions(+), 112 deletions(-) commit 4571055c46e82cbb6d3ab47860d63e400b338238 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 5 19:36:46 2010 +0200 gl: Print GL errors when releasing the device Don't scatter calls to error printing around everywhere, instead do it in the one place where it matters. Also, convert the functions to macros, so we can use __FILE__ and __LINE__ when printing a warning src/cairo-gl-private.h | 15 ++++++++++----- src/cairo-gl-surface.c | 22 +--------------------- 2 files changed, 11 insertions(+), 26 deletions(-) commit 59b31aeed9b3ec2a1ac6da188ef5e86d20626662 Author: Benjamin Otte <otte@redhat.com> Date: Sat May 8 15:09:39 2010 +0200 gl: Make check_span_renderer() call not require a device lock Note that we didn't lock the device previously, so the function was broken. src/cairo-gl-device.c | 1 + src/cairo-gl-private.h | 7 +++++++ src/cairo-gl-surface.c | 5 +++-- 3 files changed, 11 insertions(+), 2 deletions(-) commit 81f4dd65a32efae645b826b84e8382f7bf7a9b2d Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri May 7 22:35:18 2010 +0100 cairo: Special case cairo_t with NULL_POINTER Avoid allocation for the potential user error of attempting to use cairo_create(NULL). src/cairo.c | 24 +++++++++++++++++++++++- 1 files changed, 23 insertions(+), 1 deletions(-) commit a61570a55e70040ffcf8ff3cb2c7943e71a5e2a0 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri May 7 22:18:52 2010 +0100 test/copy-path: memfault status checks. test/copy-path.c | 61 +++++++++++++++++++++++++++++++++-------------------- 1 files changed, 38 insertions(+), 23 deletions(-) commit e6180d1d5e29a91f1bfc20956bb017ab74fb8b8e Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri May 7 22:18:10 2010 +0100 surface-fallback: Only destroy the clip after it has been initialized. More memfault detected error path errors. src/cairo-surface-fallback.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) commit 01a208f7e3785254dc101f09a73943ec7cfb1d6e Author: timeless <timeless@bemail.org> Date: Fri May 7 10:24:49 2010 -0400 Remove useless null checks of a and b in _cairo_path_fixed_equal 'a' and 'b' are dereferenced before being checked for null. From https://bugzilla.mozilla.org/show_bug.cgi?id=555706 src/cairo-path-fixed.c | 22 ++++++++-------------- 1 files changed, 8 insertions(+), 14 deletions(-) commit 0068d9b5cd09a7aa0c5a2ab4da97ca181934ff56 Author: Jonathan Kew <jfkthame@gmail.com> Date: Fri May 7 10:16:32 2010 -0400 quartz: Work around bad glyph extents returned by CoreGraphics for empty glyphs in Al Bayan font This resolves the problem by checking for the crazy glyph bbox result from CoreGraphics, and replacing it with an empty rect. From https://bugzilla.mozilla.org/show_bug.cgi?id=534260 src/cairo-quartz-font.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-) commit c5d9643417690380c102bf0b6ad195cb264d3feb Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri May 7 11:24:28 2010 +0100 doc: regen doc/public/tmpl/cairo-font-face.sgml | 3 +++ doc/public/tmpl/cairo-font-options.sgml | 4 ++++ doc/public/tmpl/cairo-ft.sgml | 3 +++ doc/public/tmpl/cairo-image.sgml | 5 +++++ doc/public/tmpl/cairo-matrix.sgml | 3 +++ doc/public/tmpl/cairo-paths.sgml | 3 +++ doc/public/tmpl/cairo-pattern.sgml | 3 +++ doc/public/tmpl/cairo-pdf.sgml | 3 +++ doc/public/tmpl/cairo-png.sgml | 3 +++ doc/public/tmpl/cairo-ps.sgml | 3 +++ doc/public/tmpl/cairo-quartz-fonts.sgml | 3 +++ doc/public/tmpl/cairo-quartz.sgml | 3 +++ doc/public/tmpl/cairo-scaled-font.sgml | 3 +++ doc/public/tmpl/cairo-status.sgml | 6 ++++++ doc/public/tmpl/cairo-surface.sgml | 9 +++++++++ doc/public/tmpl/cairo-svg.sgml | 3 +++ doc/public/tmpl/cairo-text.sgml | 3 +++ doc/public/tmpl/cairo-transforms.sgml | 3 +++ doc/public/tmpl/cairo-types.sgml | 3 +++ doc/public/tmpl/cairo-user-fonts.sgml | 4 ++++ doc/public/tmpl/cairo-version.sgml | 5 +++++ doc/public/tmpl/cairo-win32-fonts.sgml | 3 +++ doc/public/tmpl/cairo-win32.sgml | 3 +++ doc/public/tmpl/cairo-xlib-xrender.sgml | 3 +++ doc/public/tmpl/cairo-xlib.sgml | 3 +++ doc/public/tmpl/cairo.sgml | 3 +++ 26 files changed, 93 insertions(+), 0 deletions(-) commit b9e9ff59348412a1f1f2c57d6185c84f77874c26 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri May 7 11:21:50 2010 +0100 subsurface: Include device offset in extents Adjust the subsurface extents so that the user specifies the extents in world space rather than device space. src/cairo-surface-subsurface.c | 10 ++++++++-- 1 files changed, 8 insertions(+), 2 deletions(-) commit 5e3b28ffeac3fc7239c7ada6992e4794a27b0818 Author: Jeff Muizelaar <jmuizelaar@mozilla.com> Date: Thu May 6 22:27:09 2010 -0400 Remove comma from the end of the CAIRO_PATTERN_ACQUIRE enum src/cairoint.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit cc8442514ab15f08708ecb26f499c764a7d171f4 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu May 6 21:50:16 2010 +0100 gl: Enable fixed-function without glsl. Through a very simple mistake we were triggering fallbacks after detecting we were not able to perform the composite using GLSL -- we were just returning the UNSUPPORTED status instead of enabling the fixed-function path. src/cairo-gl-surface.c | 56 ++++++++++++++++++++++++++--------------------- 1 files changed, 31 insertions(+), 25 deletions(-) commit 30d358e098353af24f16cdb7efe41f10f276f559 Author: Metal Sonic <kidlinux96@gmail.com> Date: Thu May 6 16:07:43 2010 -0400 Update license blocks to use "Mozilla Foundation" instead of "Mozilla Corporation" From https://bugzilla.mozilla.org/show_bug.cgi?id=507387 src/cairo-fixed-private.h | 2 +- src/cairo-fixed-type-private.h | 2 +- src/cairo-malloc-private.h | 2 +- src/cairo-quartz-font.c | 2 +- src/cairo-quartz-image-surface.c | 2 +- src/cairo-quartz-image.h | 2 +- src/cairo-quartz-surface.c | 2 +- src/cairo-quartz.h | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) commit 506636e19edcdb656c94f61c915c9d49829dade8 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu May 6 17:21:59 2010 +0100 cairo: stash a number of contexts for use with NO_MUTEX The implementation is the same as the atomic one (bar the use of atomic primitives to manipulate the occupancy!). Patch based on the original by Jeff Muizelaar. src/cairo.c | 33 ++++++++++++++++++++++++++++++++- 1 files changed, 32 insertions(+), 1 deletions(-) commit 91dfee420c3e9d85e5cd4f2cec6dc708c0e471a2 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu May 6 17:03:56 2010 +0100 device: Reorder finalization so that user data is destroyed last. As the user is likely to attach the underlying resources to the device for automatic collection upon finalization, it is important that the user data is then destroy last (so that those resources are still available in the surface and device cleanup routines). src/cairo-device.c | 9 +++++++-- src/cairo-surface.c | 4 ++-- 2 files changed, 9 insertions(+), 4 deletions(-) commit 2658d7ef5f8f7e06929f4b1cae64e5312db24ec4 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu May 6 17:02:39 2010 +0100 test/gl-surface-source: Attach GLXContext to device user data. As we actually use the GLXContext to create the device, we only want to free those resources upon the final unreference of the device (and not the initial surface). test/gl-surface-source.c | 26 +++++++++++--------------- 1 files changed, 11 insertions(+), 15 deletions(-) commit f5167dc2e1a13d8c4e5d66d7178a24b9b5e7ac7a Author: Jeff Muizelaar <jmuizelaar@mozilla.com> Date: Thu May 6 11:43:52 2010 -0400 Add an implementation of ffs() for MSVC src/cairo-compiler-private.h | 15 +++++++++++++++ 1 files changed, 15 insertions(+), 0 deletions(-) commit a2a2bd62ff37e2642f671ca7ebf26954e1856abe Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu May 6 14:39:30 2010 +0100 surface-fallback: Handle memfaults during clipping. Don't be lazy, propagate the error rather than asserting. src/cairo-surface-fallback.c | 26 +++++++++++++++----------- 1 files changed, 15 insertions(+), 11 deletions(-) commit 2e3acee410ff127d4557ca8191625338cd225313 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu May 6 14:38:55 2010 +0100 test: Add gl-surface-source Exercise using GL sources. test/Makefile.am | 7 ++ test/Makefile.sources | 3 + test/gl-surface-source.argb32.ref.png | Bin 0 -> 377 bytes test/gl-surface-source.c | 115 ++++++++++++++++++++++++++++++++ test/gl-surface-source.image16.ref.png | Bin 0 -> 305 bytes test/gl-surface-source.rgb24.ref.png | Bin 0 -> 301 bytes 6 files changed, 125 insertions(+), 0 deletions(-) commit 75d8550891b8b2c09200aaaa812c6c9332161cd7 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu May 6 13:50:27 2010 +0100 test/clip-contexts: Free secondary context test/clip-contexts.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit bf83bf00a75343f7d1dcd15dc4eeec1b1a4b9428 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu May 6 10:53:48 2010 +0100 test: Add subsurface-image-repeat Test handling of source clipping with an image - principally to check handling of mime types and zero-copy image snapshotting in the vector surfaces and ensure that they work with subsurface patterns as well. test/Makefile.am | 2 + test/Makefile.sources | 1 + test/subsurface-image-repeat.c | 70 ++++++++++++++++++++++++++ test/subsurface-image-repeat.image16.ref.png | Bin 0 -> 776 bytes test/subsurface-image-repeat.ref.png | Bin 0 -> 915 bytes 5 files changed, 73 insertions(+), 0 deletions(-) commit 88986fdbef795c61cd60231046663d3cd80b4947 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu May 6 10:46:49 2010 +0100 xlib: Remove reference counting for cairo_xlib_screen_t The screen is owned by the cairo_xlib_display_t device, so we can simplify and close the refleak by removing the surplus reference counting. src/cairo-xlib-display.c | 84 ++++++++++----------------------------------- src/cairo-xlib-private.h | 22 +++--------- src/cairo-xlib-screen.c | 47 +++++-------------------- src/cairo-xlib-surface.c | 38 ++++++--------------- src/cairo-xlib-visual.c | 2 +- 5 files changed, 46 insertions(+), 147 deletions(-) commit 632fabc77d89254e2e6915148fa870f23c2a5722 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu May 6 10:10:38 2010 +0100 xlib: Convert visual array to a cairo_list_t It's simpler and more memory efficient. src/cairo-xlib-private.h | 4 ++- src/cairo-xlib-screen.c | 76 ++++++++++++++-------------------------------- 2 files changed, 26 insertions(+), 54 deletions(-) commit 20d75bdadc897be238ceb4d2d02f079e469144e4 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu May 6 10:03:36 2010 +0100 xlib: Remove screen->has_render Use the info from the display instead. src/cairo-xlib-private.h | 1 - src/cairo-xlib-screen.c | 17 ++++------------- 2 files changed, 4 insertions(+), 14 deletions(-) commit 9e0b716ecf1b27d74e63f25a055d8120d8d53309 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu May 6 09:58:46 2010 +0100 xlib: Remove obsolete comment, there is no race anymore The display lock is now held for the duration of the screen creation, so there is no race. Remove the false comment. src/cairo-xlib-screen.c | 4 ---- 1 files changed, 0 insertions(+), 4 deletions(-) commit 62346c500a7421e30b3054fdcc07fc78a18da96e Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu May 6 09:37:02 2010 +0100 xlib: Ensure the global display mutex is initialized before use. src/cairo-xlib-display.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit fb6caf08ae5ccf8f8c2c251d32fd98aacbcebdcc Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu May 6 09:30:41 2010 +0100 image: Propagate error instead of asserting. Apparently we can get to this point without evaluating the clip surface, so return the error status rather than assert. src/cairo-image-surface.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 5e95c62bbb0cb28ee22af8f97267ce2da72cf47a Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu May 6 09:09:22 2010 +0100 clip: Propagate failure from retrieving the previous clip surface. src/cairo-clip.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit a6ee7aea8ac11a9e5a9b58e17e881db9666a2b24 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed May 5 10:52:39 2010 +0100 test: Add xlib-expose-event.image16.ref.png test/Makefile.am | 1 + test/xlib-expose-event.image16.ref.png | Bin 0 -> 30332 bytes 2 files changed, 1 insertions(+), 0 deletions(-) commit ded2dc8faaa3a48c84a31422a31c64595a6eaf8a Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed May 5 14:44:55 2010 +0100 scaled-font: Pluck last glyph from the most recent page. In converting to cairo_list_t, it helps to preserve the semantics of appending the page to the end of the list where it is expected to be plucked in the event of an allocation failure. src/cairo-scaled-font.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit fa937913e06bc295750538be45aa83eb42332fb4 Author: Adrian Johnson <ajohnson@redneon.com> Date: Wed May 5 21:35:11 2010 +0930 PS: Add missing 'q' when resetting clip path src/cairo-ps-surface.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 9c594d8b405eba09b07c0a438f5311f5c5e40313 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 5 12:28:59 2010 +0200 gl: Get rid of ctx variable The code used renderer->ctx and ctx interchangably, that was confusing. src/cairo-gl-surface.c | 12 ++++++------ 1 files changed, 6 insertions(+), 6 deletions(-) commit a354f1f92a17378f42d0b703482ae2b8168c7f68 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 5 12:28:24 2010 +0200 gl: Another case of proper device acquiring This patch isn't strictly necessary, but it cleans up the code. src/cairo-gl-surface.c | 15 +++++++++------ 1 files changed, 9 insertions(+), 6 deletions(-) commit 36210ee51444979271f7ba1cc0ac452cd30df0af Author: Benjamin Otte <otte@redhat.com> Date: Wed May 5 12:24:43 2010 +0200 gl: Get rid of another cast to cairo_gl_context_t src/cairo-gl-surface.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) commit 58b03691d379979b50d74740748b8b8523e0cd0d Author: Benjamin Otte <otte@redhat.com> Date: Wed May 5 12:21:23 2010 +0200 gl: Introduce _cairo_gl_device_has_glsl() function The function takes a cairo_device_t argument as it can be called on an unacquired device. This is the first patch in a process to try to rid cairo-gl-surface.c of casts from cairo_device_t to cairo_gl_context_t. As its members should usually only be accessed when the device is locked, the only way the cairo_gl_context_t should be acquired is using _cairo_gl_context_acquire(). src/cairo-gl-glyphs.c | 2 +- src/cairo-gl-private.h | 6 ++++++ src/cairo-gl-surface.c | 9 ++++----- 3 files changed, 11 insertions(+), 6 deletions(-) commit 5223b654230d3074d0bc31eb74c415e50eced365 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 5 12:07:49 2010 +0200 gl: Get rid of cairo_gl_surface_glfinish() from public API This is now done explicitly in the boilerplate code. It was not a useful public API to begin with. boilerplate/cairo-boilerplate-gl.c | 17 +++++++---------- src/cairo-gl-surface.c | 9 --------- src/cairo-gl.h | 3 --- 3 files changed, 7 insertions(+), 22 deletions(-) commit e071fa2c4f62b5ead39c6c6401f39360ea4dee1f Author: Benjamin Otte <otte@redhat.com> Date: Wed May 5 12:03:13 2010 +0200 gl: Remove unused member variable src/cairo-gl-private.h | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) commit 90c64f60d853f1a6ea5febd362ef3528cc9d914b Author: Benjamin Otte <otte@redhat.com> Date: Wed May 5 12:01:59 2010 +0200 gl: Move device-specific code into cairo-gl-device.c src/Makefile.sources | 6 +- src/cairo-gl-device.c | 205 ++++++++++++++++++++++++++++++++++++++++++++++++ src/cairo-gl-surface.c | 162 -------------------------------------- 3 files changed, 210 insertions(+), 163 deletions(-) commit 0ff5a18fd5623b57c7493e6b67a6b1c75af82fb3 Author: Benjamin Otte <otte@redhat.com> Date: Wed May 5 11:52:40 2010 +0200 gl: Make _gl_set_destination() take the context as an argument Keeping with the API introduced for Xlib, functions that require an acquired context take this context as the first argument. src/cairo-gl-glyphs.c | 2 +- src/cairo-gl-private.h | 2 +- src/cairo-gl-surface.c | 20 +++++++++----------- 3 files changed, 11 insertions(+), 13 deletions(-) commit e8c5b6b1c2099fc6a49d0a082f5e884d3fbd89df Author: Benjamin Otte <otte@redhat.com> Date: Wed May 5 10:05:30 2010 +0200 Fix typo in docs src/cairo-array.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 53508e6e3047b4dac6d69d5d3ff2208178998fd4 Author: Benjamin Otte <otte@redhat.com> Date: Tue May 4 19:28:45 2010 +0200 gl: Acquire the context before destroying it. src/cairo-gl-surface.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) commit c46aec489722bf09cd10c52d70bb4975eb1546d9 Author: Benjamin Otte <otte@redhat.com> Date: Tue May 4 19:28:22 2010 +0200 gl: acquire/release context during surface_finish() src/cairo-gl-surface.c | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-) commit 88801aabb34328746a53d3d59d036dada7ced756 Author: Benjamin Otte <otte@redhat.com> Date: Tue May 4 19:23:08 2010 +0200 gl: Acquire context when initing/destroying gl operands src/cairo-gl-glyphs.c | 17 ++++++---- src/cairo-gl-private.h | 3 +- src/cairo-gl-surface.c | 80 +++++++++++++++++++++++++----------------------- 3 files changed, 54 insertions(+), 46 deletions(-) commit c6d7d054ca44f3849ee1ab76de9032a4eaa210fe Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed May 5 10:39:49 2010 +0100 test: Add radial-gradient-mask Exercise using radial gradients as a mask. test/Makefile.am | 6 + test/Makefile.sources | 2 + test/radial-gradient-mask-source.argb32.ref.png | Bin 0 -> 116311 bytes test/radial-gradient-mask-source.c | 111 ++++++++++++++++++++++ test/radial-gradient-mask-source.image16.ref.png | Bin 0 -> 82800 bytes test/radial-gradient-mask-source.rgb24.ref.png | Bin 0 -> 129093 bytes test/radial-gradient-mask.argb32.ref.png | Bin 0 -> 116311 bytes test/radial-gradient-mask.c | 110 +++++++++++++++++++++ test/radial-gradient-mask.image16.ref.png | Bin 0 -> 82800 bytes test/radial-gradient-mask.rgb24.ref.png | Bin 0 -> 129093 bytes 10 files changed, 229 insertions(+), 0 deletions(-) commit 5f878f917980cde145d4c385b0c0b66336c0f454 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed May 5 10:24:14 2010 +0100 clip: Trivial compiler warning cairo-clip.c: In function ‘_cairo_clip_path_reapply_clip_path_translate’: cairo-clip.c:446: warning: suggest parentheses around assignment used as truth value src/cairo-clip.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 840dad765febf7b807bbb75e401c159a8c5c4dfe Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed May 5 09:46:03 2010 +0100 test/mask-glyphs: Check for memfault test/mask-glyphs.c | 32 +++++++++++++++++++++++--------- 1 files changed, 23 insertions(+), 9 deletions(-) commit ad541a1ec62e18bcaf74994affbdb0503e277f9c Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed May 5 09:33:36 2010 +0100 clip: Propagate memfault from translating clip region src/cairo-clip.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) commit 4bc54643f5cdeddf2145d28c317b55ca6b5949a5 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue May 4 21:36:03 2010 +0100 image: Propagate failure from pixman_image_set_clip_region() src/cairo-image-surface.c | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-) commit 9ef33a1d8c0476f4f1eeba4f26523fdeb6f7d809 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue May 4 21:35:51 2010 +0100 test/bitmap-font: Destroy FcPattern test/bitmap-font.c | 8 ++------ 1 files changed, 2 insertions(+), 6 deletions(-) commit fba4cf1d94b3ab676e0b62ae3574bf1ee4e69de0 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed May 5 09:22:03 2010 +0100 recording: Mark an empty recording surface as clear. src/cairo-recording-surface.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) commit e5329805394c94c915e43a0040b51d5019b4a90e Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed May 5 09:17:51 2010 +0100 recording: Avoid refcycles by always copying the command array. Short-term solution to avoid the refleaks and to make the test suite happy. A more elegant solution would be to track the references and avoid the substantial memory overhead of copying the recording surfaces. Thanks to Benjamin Otte for pointing out the solution to avoiding refcycles. src/cairo-recording-surface-private.h | 1 - src/cairo-recording-surface.c | 23 ++++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) commit 6a06e0ef7b534355d0f3b4885159ffc37dbc3867 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed May 5 09:17:33 2010 +0100 test/subsurface-modify-parent: Free region. Minor refleak. test/subsurface-modify-parent.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 4a46c715564c886e7434d65625fb84b5d87c0970 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue May 4 18:51:30 2010 +0100 type3: Minor tweaks to remove a redundant check. src/cairo-type3-glyph-surface.c | 8 ++------ 1 files changed, 2 insertions(+), 6 deletions(-) commit 11531b90a2317bb1113b187d6aa9c5083f5ecaa1 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue May 4 18:50:58 2010 +0100 ps: Force finish of the type3 glyph surfaces. src/cairo-ps-surface.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 5155ebeaa25815124124db2599336ab2ddbe7413 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue May 4 18:50:27 2010 +0100 pdf: Assert that no other error can occur for an invertible matrix. src/cairo-pdf-operators.c | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) commit d9259bd06822c871a4c653f395cfc1f933caaeb7 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue May 4 18:49:55 2010 +0100 paginated: Mark as clear initially. src/cairo-paginated-surface.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit bc14e0e953630d47a65e701a377631e406eb080c Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon May 3 14:18:33 2010 +0100 scaled-font: Convert to cairo_list_t Convert the open-coded doubly-linked list of glyph pages for a font into the common cairo_list_t. src/cairo-scaled-font-private.h | 2 +- src/cairo-scaled-font.c | 46 ++++++++++++++++++-------------------- 2 files changed, 23 insertions(+), 25 deletions(-) commit 627527693c38c328fdb79058f5299609c0031029 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon May 3 13:41:41 2010 +0100 ps: Remove the fill stroke command This is not supported by PostScript, so eliminate it from the prologue. src/cairo-ps-surface.c | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-) commit 4dd92ef2bc877eb197f096c3eb8fe74cb2e7b099 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun May 2 14:35:59 2010 +0100 test: Add subsurface-pad Round out the subsurface tests with PAD. test/Makefile.am | 1 + test/Makefile.sources | 1 + test/subsurface-pad.c | 76 +++++++++++++++++++++++++++++++++++++++++++ test/subsurface-pad.ref.png | Bin 0 -> 181 bytes 4 files changed, 78 insertions(+), 0 deletions(-) commit 85e3cffde164a5af444639dfd182fde2448809ee Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Apr 30 21:09:01 2010 +0100 test: Add subsurface-modify-{child,parent} Add tests to ensure that modifications to the subsurface via the original surface are tracked by the subsurface, i.e. that any snapshots are detached upon modification of the parent as well as modification of itself and vice versa. test/Makefile.am | 2 + test/Makefile.sources | 2 + test/subsurface-modify-child.c | 98 +++++++++++++++++++++++++++++++++ test/subsurface-modify-child.ref.png | Bin 0 -> 197 bytes test/subsurface-modify-parent.c | 77 ++++++++++++++++++++++++++ test/subsurface-modify-parent.ref.png | Bin 0 -> 197 bytes 6 files changed, 179 insertions(+), 0 deletions(-) commit 19ac81f50ba353400934bf112523b4257ad9de2f Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue May 4 18:25:23 2010 +0100 scaled-font: Remove MRU cache upon detection of error. src/cairo-scaled-font.c | 15 ++++++++++++++- 1 files changed, 14 insertions(+), 1 deletions(-) commit 6f2d4f5b2aba9344fee9375614dfd0c6236bfd7c Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue May 4 18:09:11 2010 +0100 image: Propagate failure from pixman_image_fill_boxes(). src/cairo-image-surface.c | 55 ++++++++++++++++++++++++-------------------- 1 files changed, 30 insertions(+), 25 deletions(-) commit ded7be0b9ce12f8d4a84c8c9dd622d92fe347a34 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue May 4 17:01:35 2010 +0100 test/user-font-rescale: Use after free and check for memfault. test/user-font-rescale.c | 16 +++++++++++----- 1 files changed, 11 insertions(+), 5 deletions(-) commit b0052c52153376400a30dca1d67f4aca9735cc09 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue May 4 17:01:17 2010 +0100 test/bitmap-font: Propagate memfault test/bitmap-font.c | 13 ++++++++++--- 1 files changed, 10 insertions(+), 3 deletions(-) commit 9187c7532755dda8d2677ec792162c71029fb37d Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue May 4 13:18:09 2010 +0100 test/bitmap-font: Check for memfault error test/bitmap-font.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 0fced9279227614ede6964e94ede9de49a3a3388 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue May 4 13:17:38 2010 +0100 test/user-font-proxy: Check we install user data on the scaled font test/user-font-proxy.c | 14 ++++++++++---- 1 files changed, 10 insertions(+), 4 deletions(-) commit 38188961b996c97d344195749b7bec8c93f9bad7 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue May 4 13:17:07 2010 +0100 image: Check for pixman image allocation failure during glyphs src/cairo-image-surface.c | 8 +++----- 1 files changed, 3 insertions(+), 5 deletions(-) commit 4a181ebac416ec35e412ddbe9ed1392fb8b74ab7 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue May 4 10:26:30 2010 +0100 pdf: Cleanup local reference to source on error paths. src/cairo-pdf-surface.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit ba48edcd86ee1bca06b25587e56abcd2c1b19d79 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue May 4 10:26:13 2010 +0100 ps: Always cleanup used font subsets. src/cairo-ps-surface.c | 19 ++++++++----------- 1 files changed, 8 insertions(+), 11 deletions(-) commit 9a0958be012e097c239260fac0dec0b1e5679028 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue May 4 10:25:48 2010 +0100 test: Cleanup after failed pthread_join(). test/pthread-same-source.c | 17 +++++++++-------- test/pthread-show-text.c | 17 +++++++++-------- test/pthread-similar.c | 17 +++++++++-------- 3 files changed, 27 insertions(+), 24 deletions(-) commit 08b9984da9f2119cd4ed03bbd656a349b49d1f12 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue May 4 08:19:41 2010 +0100 image: Replace assert with error return It is possible to encounter an allocation failure here since we may have tweaked the clip since the last evaluation of the clip region. src/cairo-image-surface.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 2c68fcace4ad47ad09e9699e45afb514be1381f9 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon May 3 20:39:34 2010 +0100 test: Embed the list pointer into cairo_test_t Reduce the amount of output printed by leak-detectors when a test crashes. test/cairo-test-runner.c | 31 +++++++++++++++---------------- test/cairo-test.h | 7 ++++--- 2 files changed, 19 insertions(+), 19 deletions(-) commit 7002b824729885a9d579f677ecc665b620847480 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue May 4 13:52:09 2010 +0200 xlib: Don't delete gradients in unbounded fixup code The fix is ugly, but for now it works. src/cairo-xlib-surface.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit af26560f258d93cc78782ddd0208128756874c11 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon May 3 19:21:59 2010 +0100 test: Improve memfault behaviour. Various minor tweaks to convert asserts into error returns and to improve error checking on intermediate surfaces. boilerplate/cairo-boilerplate-svg.c | 2 +- test/cairo-test.c | 21 +++++++++++--- test/png.c | 34 +++++++++++++++------- test/pthread-same-source.c | 7 +++++ test/surface-source.c | 11 ++++++- test/toy-font-face.c | 16 +++++++++-- test/user-data.c | 51 ++++++++++++++++++++++++---------- test/xlib-surface-source.c | 7 ++++- 8 files changed, 112 insertions(+), 37 deletions(-) commit c549203c8d69474be4362037f702e4fb59c9929e Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon May 3 19:21:18 2010 +0100 scaled-font: Check for an error return when retrieving the implementation src/cairo-scaled-font.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-) commit c93e6f014d9678b1aea34fd7a30a1fc2f51c6347 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon May 3 19:20:42 2010 +0100 paginated: propagate malloc failures more cleanly. src/cairo-paginated-surface.c | 26 +++++++++++++------------- 1 files changed, 13 insertions(+), 13 deletions(-) commit 8e9fd9c01732c3102c27c7dee50f6e494ba7cdd8 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon May 3 19:20:07 2010 +0100 image: A few missing tests for malloc failure src/cairo-image-surface.c | 12 +++++++++++- 1 files changed, 11 insertions(+), 1 deletions(-) commit 87781ffbd914bca29b4d744fb48678ab06a07108 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon May 3 19:18:49 2010 +0100 ft: Convert an assert into an unlikely error return. The assert depends upon good behaviour from fontconfig, which is no guaranteed under memfault, so return an error instead. src/cairo-ft-font.c | 4 +--- 1 files changed, 1 insertions(+), 3 deletions(-) commit 5672b7a18a34456862977a1cf678bf6575dcc3f4 Author: Benjamin Otte <otte@redhat.com> Date: Mon May 3 13:13:27 2010 +0200 fallback: get src_x/y variables right when compositing traps src/cairo-image-surface.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) commit c10a5a9fb0463f254fb607a2260b540256f888cc Author: Dave Yeo <daveryeo@telus.net> Date: Mon May 3 10:20:51 2010 +0200 os2: Fix get_extents() segfaulting. bed2701e1c89095878d549cbca8f22d84f3dda3c removed one line too much. src/cairo-os2-surface.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 9df81fe4d3f0ccc5632d0e84e920fe1c448bd531 Author: Benjamin Otte <otte@redhat.com> Date: Sun May 2 19:59:26 2010 +0200 boilerplate: don't compile pdf test code when pdf is not tested Avoids gcc warnings when libpoppler version isn't good enough. boilerplate/cairo-boilerplate-pdf.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit 358f57c8765f823f8e6db7629ea6ca48fcd392b8 Author: Benjamin Otte <otte@redhat.com> Date: Fri Apr 30 23:29:24 2010 +0200 image: remove useless optimization The optimization is done way smarter inside _cairo_matrix_transform_bounding_box() src/cairo-image-surface.c | 11 +++-------- 1 files changed, 3 insertions(+), 8 deletions(-) commit 94aa6d24b6d5ab4528a0b0a9b1b0c6eb7218f861 Author: Benjamin Otte <otte@redhat.com> Date: Fri Apr 30 23:24:41 2010 +0200 fallback: Create pixman image for correct rectangle This was most prominently shown by the a1-image-sample test, but multiple tests exposed the problem with the xlib-fallback code. src/cairo-image-surface.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit 41fecf8e662c9ad2fe063754db8302f349a223ef Author: Carlos Garcia Campos <carlosgc@gnome.org> Date: Fri Apr 30 21:18:52 2010 +0200 [configure] Bump poppler dependency to 0.13.3 configure.ac | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 3294daf423e88b55aa13841dfa7c557ee9833f92 Author: Benjamin Otte <otte@redhat.com> Date: Fri Apr 30 20:14:54 2010 +0200 Create cleared surface instead of a scratch surface in clone_similar() A cleared surface is needed when playing back a recording surface that has semi-transparent operations. As this only affects surface types where scratch surfaces aren't already cleared (ie it affected xlib but not image), the effect was only visible for those backends. This should not cause any performance regressions as the other backends set surface->clear = TRUE when creating the scratch surface, so the clear operation is effectively a no-op. Covered by the existing pdf-surface-source and svg-surface-source tests. src/cairo-surface.c | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-) commit 0aeb612d2f822e8cda1f509b6a4f2995e24053fc Author: Carlos Garcia Campos <carlosgc@gnome.org> Date: Fri Apr 30 16:18:57 2010 +0200 [test] Update pdf reference image for text-rotate test/text-rotate.pdf.ref.png | Bin 16757 -> 16744 bytes 1 files changed, 0 insertions(+), 0 deletions(-) commit fe2844464721644b837816aa4dad4ead508f0b89 Author: Carlos Garcia Campos <carlosgc@gnome.org> Date: Fri Apr 30 16:16:23 2010 +0200 [test] Update pdf reference image for surface-pattern-scale-down test/surface-pattern-scale-down.pdf.ref.png | Bin 1603 -> 2189 bytes 1 files changed, 0 insertions(+), 0 deletions(-) commit dba6f23318005a4cdbe7566519ce896278ea184a Author: Carlos Garcia Campos <carlosgc@gnome.org> Date: Fri Apr 30 16:11:52 2010 +0200 [test] Update pdf reference image for leaky-dashed-rectangle test/leaky-dashed-rectangle.pdf.ref.png | Bin 380 -> 377 bytes 1 files changed, 0 insertions(+), 0 deletions(-) commit 6b81187ac4870311a10c024af9f30c366be785cd Author: Carlos Garcia Campos <carlosgc@gnome.org> Date: Fri Apr 30 16:05:21 2010 +0200 [test] Update pdf reference images for clip-operator test/clip-operator.pdf.argb32.ref.png | Bin 9266 -> 9437 bytes test/clip-operator.pdf.rgb24.ref.png | Bin 5166 -> 5391 bytes 2 files changed, 0 insertions(+), 0 deletions(-) commit b485ae5b90bf72cde0c30c2350e03d1369ca6dcd Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Apr 30 14:14:01 2010 +0100 atomic: Add Andrea's copyright notice Note Andrea's copyright for his contribution of platform agnostic fallbacks and the implementation for MacOS/X. src/cairo-atomic-private.h | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 4ee5119a3467ea086efccef2907b0c576d600b79 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Apr 30 13:00:05 2010 +0100 test: Expand pthread-show-text to cover all surfaces. In a similar fashion to pthread-same-source and pthread-similar, check that the texting handling is thread-safe for all surface and font backends. test/Makefile.am | 3 + test/pthread-show-text.c | 118 ++++++++++++++++++++------------ test/pthread-show-text.image16.ref.png | Bin 0 -> 22167 bytes test/pthread-show-text.ps.ref.png | Bin 0 -> 16558 bytes test/pthread-show-text.ref.png | Bin 0 -> 29885 bytes 5 files changed, 77 insertions(+), 44 deletions(-) commit c6dc8ad7dc46d03899cd37fff40bd7f3a60339e2 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Apr 30 12:38:25 2010 +0100 Revert "paginated: Call surface finish explicitly on recording surface" This reverts commit 5fc04bba9fa8ddda8cf7d7a97015f21a21429172. Whilst this fixes the self-referential reference leak, it however introduces use-after-finish into normal behaviour. Close, but not quite. src/cairo-paginated-surface.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) commit b972669c9ac87d1c2ca922e12024ef5da394aa6b Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Apr 30 12:37:16 2010 +0100 boilerplate: Fix use after free from 3ae5723 If we want to access the surface during the cleanup, we must hold our own reference to it. Make it so for the forced finish of the recording surface. boilerplate/cairo-boilerplate.c | 13 ++++++++++--- 1 files changed, 10 insertions(+), 3 deletions(-) commit 905c345df1f828551af2ab0b751388428e4dfaf6 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Apr 30 10:31:50 2010 +0100 recording: Check that we do not use a finished recording surface. User paranoia - as the replay is exposed to the user it is convenient to add the finish check in the core replay function so that we gain a paranoia check for the internal paths as well. src/cairo-recording-surface.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) commit 5fe7c5842f3589efce765b3869c1dd55367a5aba Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Apr 30 10:13:09 2010 +0100 pdf; Emit subsurface patterns natively. Encode subsurface patterns into the PDF stream natively (when possible), similar to the cairo-ps backend. src/cairo-pdf-surface.c | 113 +++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 94 insertions(+), 19 deletions(-) commit 8ded35fd69ed0bbb07359c0278071a25af66571c Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Apr 28 14:26:21 2010 +0100 ps: Enable native encoding of subsurface patterns. Carefully handle subsurfaces of a recording surface through the analysis and paginated surfaces so that we can generate a native pattern for the vector backends, demonstrated by the PostScript backend. Nothing remarkable, just a lot of bookkeeping to track the wrapped surface types and to apply the correct offsets when generating the subsurface pattern. src/cairo-analysis-surface.c | 13 +- src/cairo-paginated-surface.c | 1 + src/cairo-pdf-surface.c | 4 +- src/cairo-ps-surface.c | 121 +++++++++++-- src/cairo-recording-surface-private.h | 1 + src/cairo-recording-surface.c | 12 +- src/cairo-surface-private.h | 4 +- src/cairo-surface-subsurface-private.h | 4 +- src/cairo-surface-subsurface.c | 101 +++++++--- src/cairo-surface-wrapper-private.h | 7 +- src/cairo-surface-wrapper.c | 314 ++++++++++++++++++++++++++------ src/cairo-surface.c | 13 +- test/Makefile.am | 1 + test/Makefile.sources | 1 + test/subsurface-reflect.c | 76 ++++++++ test/subsurface-reflect.ref.png | Bin 0 -> 210 bytes test/subsurface-repeat.c | 8 +- test/subsurface-similar-repeat.c | 3 + test/subsurface.c | 7 +- test/subsurface.image16.ref.png | Bin 1430 -> 1643 bytes test/subsurface.ref.png | Bin 1597 -> 1811 bytes 21 files changed, 565 insertions(+), 126 deletions(-) commit 5fc04bba9fa8ddda8cf7d7a97015f21a21429172 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Apr 29 21:51:29 2010 +0100 paginated: Call surface finish explicitly on recording surface During show_page() when we destroy the recording surface after emitting the page, ensure that we actually call cairo_surface_finish() to dispose of any self-referential reference leaks. src/cairo-paginated-surface.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 3ae57234644c3756785c551beffe584f837b0273 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Apr 29 21:50:22 2010 +0100 boilerplate: Ensure that the recording surfaces are finished. Be paranoid and explicitly call finish to cleanup self-referential leaks when using paginated/recording surfaces. boilerplate/cairo-boilerplate-pdf.c | 5 ++++- boilerplate/cairo-boilerplate-ps.c | 5 ++++- boilerplate/cairo-boilerplate-svg.c | 5 ++++- boilerplate/cairo-boilerplate.c | 10 +++++----- 4 files changed, 17 insertions(+), 8 deletions(-) commit f08cc311af1248b39c3e757ef192515ed8506862 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Apr 29 20:34:56 2010 +0100 boilerplate: Destroy the redundant image reference When using a script surface to record the recording surface, we replace the local reference to the image surface. boilerplate/cairo-boilerplate.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit ab2776c9a16134c50b48fd202263421ec0f466e7 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Apr 29 18:50:32 2010 +0100 snapshot: Attach the backend generated snapshot to the target Cache the result of snapshotting using the backend vfunc in the normal manner by attaching the snapshot to the target. This should reduce resource usage in these cases. src/cairo-surface-snapshot.c | 21 ++++++++++++++++++++- 1 files changed, 20 insertions(+), 1 deletions(-) commit 07122f37d11eabe62bc9c81ccbf71bbe8b7a1005 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Apr 29 15:19:18 2010 +0100 surface: Convert snapshots from an array to a double-linked list. Saves the memory allocation for the array, and the overhead of maintaining the area for both insertions and more importantly deletes. src/cairo-recording-surface.c | 6 +-- src/cairo-surface-private.h | 5 +- src/cairo-surface-snapshot.c | 10 +-- src/cairo-surface.c | 132 +++++++++++++----------------------- src/cairo-vg-surface.c | 8 +-- src/cairo-xcb-surface-core.c | 6 +-- src/cairo-xcb-surface-render.c | 10 +-- src/cairo-xcb-surface.c | 12 +-- src/cairoint.h | 2 +- src/drm/cairo-drm-i915-shader.c | 11 ++-- src/drm/cairo-drm-i965-shader.c | 11 ++-- src/drm/cairo-drm-intel-surface.c | 8 +-- src/drm/cairo-drm-radeon-surface.c | 8 +-- 13 files changed, 78 insertions(+), 151 deletions(-) commit 4cb733c28551f4a34cd4a225b8d797a55bf9b977 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Apr 29 12:04:44 2010 +0100 image: Simplify translation of pattern matrix for composite_trapezoids() src/cairo-image-surface.c | 4 +--- 1 files changed, 1 insertions(+), 3 deletions(-) commit 3940b0e91c274de0cf2fca4b34d4025b92965c19 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Apr 29 17:29:13 2010 +0100 subsurface: s/region/rectangle/ After a renewed discussion, it was pointed out that the API in Cairo was not restrictive and by using doubles we would be consisted with the rest of the API. Thus prompting the name change to cairo_surface_create_for_rectangle() similar to cairo_rectangle(). And document the public API. src/cairo-surface-subsurface.c | 39 +++++++++++++++++++++++----- src/cairo.h | 10 +++--- test/subsurface-repeat.c | 4 +- test/subsurface-similar-repeat.c | 2 +- test/subsurface.c | 4 +- util/cairo-script/cairo-script-operators.c | 12 ++++---- util/cairo-trace/trace.c | 10 +++--- 7 files changed, 53 insertions(+), 28 deletions(-) commit 4b6fa8d5a78731aca80f3c8c6320e7edc845c5b5 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Apr 30 09:47:51 2010 +0100 test: Remove group-unaligned.*new.png Entirely misleading, looks like PDF is behaving the same as image and this remnant was thus giving the wrong impression. test/Makefile.am | 1 - test/group-unaligned.pdf.new.png | Bin 427 -> 0 bytes 2 files changed, 0 insertions(+), 1 deletions(-) commit e3f990d84131f7bd1e64e54d02bac780b1e9f85e Author: Benjamin Otte <otte@redhat.com> Date: Thu Apr 29 22:34:35 2010 +0200 test: Update reference images for last checkin Both tests now pas on all backends I tested: test, image, xlib and recording test/a1-traps-sample.ref.png | Bin 148 -> 120 bytes test/unantialiased-shapes.ref.png | Bin 3969 -> 3968 bytes 2 files changed, 0 insertions(+), 0 deletions(-) commit 6d36f06751377459e35afe1ac26c59d33b16c730 Author: Benjamin Otte <otte@redhat.com> Date: Thu Apr 29 22:12:02 2010 +0200 image: Round down when rendering antialiased boxes Matches Pixman's output when going via pixman_rasterize_trapezoid() src/cairo-fixed-private.h | 6 ++++++ src/cairo-image-surface.c | 9 +++++---- 2 files changed, 11 insertions(+), 4 deletions(-) commit 95179a5de91b5c6f99dbccc3b6c950df58d4f2a7 Author: Benjamin Otte <otte@redhat.com> Date: Thu Apr 29 20:45:23 2010 +0200 Remove excessive semicolons s/;;/;/ basically src/cairo-image-surface.c | 2 +- src/cairo-wideint.c | 2 +- src/drm/cairo-drm-i965-shader.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) commit 5d07307b691afccccbb15f773d5231669ba44f5a Author: Benjamin Otte <otte@redhat.com> Date: Thu Apr 29 18:20:59 2010 +0200 xlib: Don't modify variables that are needed later In the XCopyArea region code, don't modify src_x/y when they are later used in the unbounded fixup code. Exposed by composite-integer-translate-source test. src/cairo-xlib-surface.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit 90160deb2a84f787dff46243471e37600b24799b Author: Benjamin Otte <otte@redhat.com> Date: Thu Apr 29 18:20:44 2010 +0200 xlib: Constify some function arguments src/cairo-xlib-surface.c | 12 ++++++------ 1 files changed, 6 insertions(+), 6 deletions(-) commit 4da71d1a01c4d4cc84b5e31cc89dd7f297b23359 Author: Benjamin Otte <otte@redhat.com> Date: Thu Apr 29 18:11:54 2010 +0200 xlib: remove unused code src/cairo-xlib-surface.c | 12 ------------ 1 files changed, 0 insertions(+), 12 deletions(-) commit 758ffadcb1d0a0478d43ca40775687a37e5920a4 Author: Benjamin Otte <otte@redhat.com> Date: Thu Apr 29 16:54:09 2010 +0200 fallback: Only do _fill/compsoite_rectangles on bounded source For unbounded sources, these optimizations fail to take into account the regions outside the source. src/cairo-surface-fallback.c | 16 +++++++++------- 1 files changed, 9 insertions(+), 7 deletions(-) commit 6288ad719da898c4a75cdc6527f5a41d4c900e57 Author: Benjamin Otte <otte@redhat.com> Date: Thu Apr 29 15:37:32 2010 +0200 fallback: translate extents regions properly The extents clip regions that were created for unbounded operators were not translated properly. This has been changed now. This is a followup to 9ce8bef9d6e6d773dd1f4b184916ed5c96c3541d. src/cairo-surface-fallback.c | 17 ++++++++++------- 1 files changed, 10 insertions(+), 7 deletions(-) commit b0760826f30f63637561b353e7eed1913036da2d Author: Benjamin Otte <otte@redhat.com> Date: Thu Apr 29 12:11:48 2010 +0200 test: Set have_result for image matches Causes the log to contain information about the reference imagery used. test/cairo-test.c | 16 +++++++++++++--- 1 files changed, 13 insertions(+), 3 deletions(-) commit 8f85c2d77cc2ca7984f9771c0096fbad798dbde8 Author: Benjamin Otte <otte@redhat.com> Date: Thu Apr 29 12:09:31 2010 +0200 image: translate source pattern in composite_trapezoids() Fixes xlib fallback paths as exposed by the clip-push-group test. src/cairo-image-surface.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-) commit aa495eac5a2db9b396eb1953eb112c733d0ababc Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Apr 29 10:04:18 2010 +0100 atomic: Tweak for compilation x86. Missing definition of _cairo_atomic_ptr_get() used in the fallbacks. src/cairo-atomic-private.h | 27 ++++++++++++++++++++------- src/cairo-atomic.c | 16 ++++++++-------- 2 files changed, 28 insertions(+), 15 deletions(-) commit 248af38b3efa3f96225eea43f4ba5b94baff34a6 Author: Andrea Canciani <ranma42@gmail.com> Date: Wed Apr 28 17:23:47 2010 +0200 atomic: Add MacOSX atomic implementation Enable atomic operation on MacOS X, using the functions provided by libkern/OSAtomic.h Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> build/aclocal.cairo.m4 | 10 ++++++++++ src/cairo-atomic-private.h | 30 ++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 0 deletions(-) commit 56a367a1626b2b7ec3d9e64e74f016867f294a34 Author: Andrea Canciani <ranma42@gmail.com> Date: Wed Apr 28 19:17:10 2010 +0200 atomic: Correct implementation of _atomic_fetch () _atomic_fetch() was expected to replace the content of a slot with NULL and return the old content, but it incorrectly returned the previous content even if it was unable to perform the exchange (because of conflicts with other threads accessing the pool). Fix suggested by Chris Wilson <chris@chris-wilson.co.uk> src/cairo-freed-pool-private.h | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-) commit d66b1ca1cfda64088521581bc2bd494bff9f5d23 Author: Andrea Canciani <ranma42@gmail.com> Date: Wed Apr 28 16:23:15 2010 +0200 atomic: Separate bool and old-value compare-and-exchange Some implementations only offer one version of compare-and-exchange, thus we expose both through cairo-atomic, implementing what is missing through appropriate fallbacks. *_cmpxchg() now return a boolean (this unbreaks _cairo_atomic_uint_cmpxchg) *_cmpxchg_return_old() return the old value Code is updated everywhere to reflect this, by using *_cmpxchg() wherever the returned value was only tested to check if the exchange had really taken place. Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> src/cairo-atomic-private.h | 68 ++++++++++++++++++++++++++++++++++++--- src/cairo-atomic.c | 4 +- src/cairo-freed-pool-private.h | 4 +- src/cairo-image-surface.c | 6 ++-- src/cairo.c | 4 +- src/drm/cairo-drm.c | 2 +- 6 files changed, 72 insertions(+), 16 deletions(-) commit a0bf424b820b404947671b56f357a2cef71640fb Author: Andrea Canciani <ranma42@gmail.com> Date: Wed Apr 28 15:29:32 2010 +0200 atomic: Remove unused function _cairo_atomic_int_set() _cairo_atomic_int_set() was only used in the definition of CAIRO_REFERENCE_SET_VALUE, which was never used. Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> src/cairo-atomic-private.h | 10 ---------- src/cairo-atomic.c | 8 -------- src/cairo-reference-count-private.h | 1 - 3 files changed, 0 insertions(+), 19 deletions(-) commit 9ce8bef9d6e6d773dd1f4b184916ed5c96c3541d Author: Benjamin Otte <otte@redhat.com> Date: Wed Apr 28 18:34:20 2010 +0200 fallback: Propagate extents properly Otherwise unbounded operators will clear the full surface. Improves the score for the unbounded-operator test, in particular the output for the test-fallback case. src/cairo-surface-fallback.c | 112 +++++++++++++++++++++++++++++------------- 1 files changed, 78 insertions(+), 34 deletions(-) commit 91fd97ae7c4de23c61d481c98c9352f0639d76dd Author: Benjamin Otte <otte@redhat.com> Date: Wed Apr 28 20:21:37 2010 +0200 fallback: Pass the correct extents for unbounbded operations src/cairo-surface-fallback.c | 20 +++++++++++++------- 1 files changed, 13 insertions(+), 7 deletions(-) commit 06e9caf86199e8261a07db6d4774628fa147728d Author: Benjamin Otte <otte@redhat.com> Date: Wed Apr 28 20:05:13 2010 +0200 image: pixman_image_fill_rectangles() => pixman_image_fill_boxes() src/cairo-image-surface.c | 32 ++++++++++++++++---------------- 1 files changed, 16 insertions(+), 16 deletions(-) commit bc49df322770b3bd1797c0e153b97f1f296fbd1e Author: Benjamin Otte <otte@redhat.com> Date: Wed Apr 28 19:56:36 2010 +0200 pixman_image_composite => pixman_image_composite32 Fix up the remaining callers src/cairo-gl-surface.c | 12 ++++++------ src/cairo-image-surface.c | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) commit 393da364a7f26e696141c58d4fb6fdefb2ea245a Author: Benjamin Otte <otte@redhat.com> Date: Wed Apr 28 18:18:15 2010 +0200 fallback: Sanitize code that queries surface extents The previous code was setting extents.is_bounded, but that value has a completely different meaning. src/cairo-surface-fallback.c | 20 ++++++++++---------- 1 files changed, 10 insertions(+), 10 deletions(-) commit 13914039567d5e8269fc29c51018ce172a40f2e9 Author: Benjamin Otte <otte@redhat.com> Date: Wed Apr 28 13:05:28 2010 +0200 test: run xlib-expose-event test unconditionally test/Makefile.sources | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 2ce1afa3222145e9c4f8c74a0034e0da9e93b70b Author: Benjamin Otte <otte@redhat.com> Date: Wed Apr 28 12:54:54 2010 +0200 test-suite: add image_diff_is_failure() function This cleans the code and fixes a boolean logic error where this check was done manually. test/buffer-diff.c | 8 ++++++++ test/buffer-diff.h | 4 ++++ test/cairo-test-trace.c | 3 +-- test/cairo-test.c | 9 +++------ test/fallback-resolution.c | 3 +-- test/xlib-surface.c | 4 ++-- 6 files changed, 19 insertions(+), 12 deletions(-) commit 2a91d425088cb8a93de76f2f91f32a7f23f0aecd Author: Benjamin Otte <otte@redhat.com> Date: Wed Apr 28 12:26:29 2010 +0200 fallback: Fix clip_region handling in mask creation Fixes the xlib-expose-event test. src/cairo-surface-fallback.c | 16 +++++++++++++++- 1 files changed, 15 insertions(+), 1 deletions(-) commit bb853916f3581af13cc1abff185ef5e0218f9f1e Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Apr 28 11:37:59 2010 +0100 image: Generate clear/white/black images when !HAS_ATOMIC_OPS Andrea reported that b74cc0f broke compilation without atomic ops. src/cairo-image-surface.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-) commit 45d4c6e0b2fe62a3c6f1fdb7f359c9771111b470 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Apr 28 10:01:06 2010 +0100 script: Replace the missing " " after pop I accidentally deleted the whitespace after popping the recording surface, thus causing the scripts to be broken. src/cairo-script-surface.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 6a99e83c50d715ba1e47aa5c7be714a423568e57 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Apr 28 09:55:20 2010 +0100 subsurface: Mark the image as !clear after copying. src/cairo-surface-subsurface.c | 22 ++++++++++++---------- 1 files changed, 12 insertions(+), 10 deletions(-) commit ca3df75e8f876991f2dc9e85c9daa3fd96e826d2 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Apr 28 09:54:56 2010 +0100 script: Reconstruct subsurfaces. src/cairo-script-surface.c | 84 ++++++++++++++++++++++++++++++------------- 1 files changed, 58 insertions(+), 26 deletions(-) commit 0f0d349a400e097856e6d9863e66c0a041e65c35 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Apr 28 09:54:37 2010 +0100 trace: Wrap cairo_surface_create_for_region() util/cairo-script/cairo-script-operators.c | 33 +++++++++++++++++++++++++ util/cairo-trace/trace.c | 36 ++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 0 deletions(-) commit 80fc2a8e49aa6ab4646b14eed9a4cf348a9149b4 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Apr 28 09:50:49 2010 +0100 test: Expand xlib-expose-event to cover all backends Use a similar surface to create an equivalent backing surface for any backend, thus enabling the test to run against any target. The comment about forcing fallbacks has long since been false. test/xlib-expose-event.c | 76 +++++---------------------------------------- 1 files changed, 9 insertions(+), 67 deletions(-) commit d3c4349730be991db0c85094103c744fc2d94836 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Apr 27 21:04:52 2010 +0100 test: Mark surfaces as finished if the data goes out of scope. The issue being that as the on-stack data is being referenced via a zero-copy snapshot outside of the functions scope as the surface is only finished and the source written long after the draw() returns. The correct procedure is that the user must call cairo_surface_finish() prior to any surface becoming inaccessible. In this case, this triggers the snapshot to preserve a copy of the data whilst it is still valid. test/bilevel-image.c | 4 +++- test/filter-nearest-offset.c | 1 + test/mask-ctm.c | 4 +++- test/mask-surface-ctm.c | 1 + test/move-to-show-surface.c | 2 ++ test/paint-repeat.c | 1 + test/paint-source-alpha.c | 1 + test/paint-with-alpha.c | 1 + test/rgb24-ignore-alpha.c | 1 + test/scale-down-source-surface-paint.c | 1 + test/scale-source-surface-paint.c | 1 + test/set-source.c | 1 + test/smask-image-mask.c | 4 +++- test/smask.c | 4 +++- test/source-surface-scale-paint.c | 1 + test/translate-show-surface.c | 1 + test/zero-alpha.c | 1 + 17 files changed, 26 insertions(+), 4 deletions(-) commit a5f54e48e3136076f3c8c60fc068f6a2105d9a33 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Apr 27 21:05:22 2010 +0100 snapshot: The snapshot masquerades as the target surface type. Not wholly convinced this is a good idea, but it matches the behaviour of the other internal surface types. src/cairo-surface-snapshot.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 4a678afdf73d6f7b2b8a532ac7024976702c8aac Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Apr 27 18:57:56 2010 +0100 snapshot: Simply memcpy if the cloned image matches the original. src/cairo-surface-snapshot.c | 16 ++++++++++------ 1 files changed, 10 insertions(+), 6 deletions(-) commit b74cc0f6d5b71295c70d4c29e24ab252175f9a5b Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Apr 27 18:57:00 2010 +0100 image: Convert 1x1 samples into solid colors. If the sampled extents of the operation on an image surface is just a single pixel, we can safely convert to a solid color. src/cairo-image-surface.c | 161 ++++++++++++++++++++++++++++++++++++++------- 1 files changed, 136 insertions(+), 25 deletions(-) commit f5cf131a9d8984bd6b3403396beed2ffbc26bded Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Apr 27 18:56:23 2010 +0100 surface: skip OVER is the source is clear. If the source has no alpha, the OVER operation becomes DST, i.e. a no-op. src/cairo-surface.c | 24 ++++++++++++++++++++++++ 1 files changed, 24 insertions(+), 0 deletions(-) commit 453b1cba11f71694cfe0c3d934ac1f5aabda67fd Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Apr 27 16:47:31 2010 +0100 test: Update image ref images, and used fonts in README test/Makefile.am | 2 +- test/README | 6 +++--- test/finer-grained-fallbacks.argb32.ref.png | Bin 0 -> 1068 bytes test/finer-grained-fallbacks.ref.png | Bin 1070 -> 0 bytes test/finer-grained-fallbacks.rgb24.ref.png | Bin 839 -> 837 bytes test/ft-text-vertical-layout-type1.ref.png | Bin 3644 -> 3591 bytes test/ft-text-vertical-layout-type3.ref.png | Bin 3608 -> 3616 bytes test/mask-glyphs.ref.png | Bin 1189352 -> 1189351 bytes test/smask-text.ref.png | Bin 1874 -> 1672 bytes test/smask.ref.png | Bin 3423 -> 3396 bytes 10 files changed, 4 insertions(+), 4 deletions(-) commit 70656bba81e01eaf7b48817b2ca16fdf6d0b4bd5 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Apr 27 14:19:22 2010 +0100 test: Add image16 refs test/Makefile.am | 144 ++++++++++++++++++++ test/big-line.image16.ref.png | Bin 0 -> 988 bytes test/bug-bo-rectangular.image16.ref.png | Bin 0 -> 955 bytes test/caps-joins-alpha.image16.ref.png | Bin 0 -> 2268 bytes test/caps-joins-curve.image16.ref.png | Bin 0 -> 4928 bytes test/caps-joins.image16.ref.png | Bin 0 -> 2587 bytes test/caps-sub-paths.image16.ref.png | Bin 0 -> 171 bytes test/caps.image16.ref.png | Bin 0 -> 1936 bytes test/clear-source.image16.ref.png | Bin 0 -> 909 bytes test/clip-disjoint.image16.ref.png | Bin 0 -> 3886 bytes test/clip-fill-no-op.image16.ref.png | Bin 0 -> 153 bytes test/clip-fill-rule.image16.ref.png | Bin 0 -> 356 bytes test/clip-fill-unbounded.image16.ref.png | Bin 0 -> 1204 bytes test/clip-fill.image16.ref.png | Bin 0 -> 904 bytes test/clip-image.image16.ref.png | Bin 0 -> 2032 bytes test/clip-operator.image16.ref.png | Bin 0 -> 3131 bytes test/clip-push-group.image16.ref.png | Bin 0 -> 159 bytes test/clip-shape.image16.ref.png | Bin 0 -> 2488 bytes test/clip-stroke-no-op.image16.ref.png | Bin 0 -> 153 bytes test/clip-stroke-unbounded.image16.ref.png | Bin 0 -> 1255 bytes test/clip-stroke.image16.ref.png | Bin 0 -> 1308 bytes test/clip-text.image16.ref.png | Bin 0 -> 811 bytes test/clip-twice.image16.ref.png | Bin 0 -> 1069 bytes test/clipped-group.image16.ref.png | Bin 0 -> 281 bytes test/clipped-surface.image16.ref.png | Bin 0 -> 296 bytes test/close-path-current-point.image16.ref.png | Bin 0 -> 1804 bytes ...omposite-integer-translate-over.image16.ref.png | Bin 0 -> 11570 bytes ...posite-integer-translate-source.image16.ref.png | Bin 0 -> 11570 bytes test/copy-path.image16.ref.png | Bin 0 -> 556 bytes test/culled-glyphs.image16.ref.png | Bin 0 -> 426 bytes test/dash-caps-joins.image16.ref.png | Bin 0 -> 4491 bytes test/dash-curve.image16.ref.png | Bin 0 -> 32445 bytes test/dash-scale.image16.ref.png | Bin 0 -> 7748 bytes test/dash-state.image16.ref.png | Bin 0 -> 7910 bytes test/degenerate-arc.image16.ref.png | Bin 0 -> 592 bytes test/degenerate-arcs.image16.ref.png | Bin 0 -> 120 bytes test/degenerate-curve-to.image16.ref.png | Bin 0 -> 278 bytes test/degenerate-pen.image16.ref.png | Bin 0 -> 954 bytes test/degenerate-rel-curve-to.image16.ref.png | Bin 0 -> 279 bytes test/extend-pad-border.image16.ref.png | Bin 0 -> 446 bytes test/extend-reflect-similar.image16.ref.png | Bin 0 -> 99786 bytes test/extend-reflect.image16.ref.png | Bin 0 -> 99786 bytes test/extend-repeat-similar.image16.ref.png | Bin 0 -> 83738 bytes test/extend-repeat.image16.ref.png | Bin 0 -> 83738 bytes test/extended-blend-alpha.image16.ref.png | Bin 0 -> 4626 bytes test/extended-blend.image16.ref.png | Bin 0 -> 4145 bytes test/fill-alpha-pattern.image16.ref.png | Bin 0 -> 3380 bytes test/fill-alpha.image16.ref.png | Bin 0 -> 2145 bytes test/fill-and-stroke-alpha-add.image16.ref.png | Bin 0 -> 536 bytes test/fill-and-stroke-alpha.image16.ref.png | Bin 0 -> 470 bytes test/fill-and-stroke.image16.ref.png | Bin 0 -> 251 bytes test/fill-degenerate-sort-order.image16.ref.png | Bin 0 -> 1753 bytes test/fill-image.image16.ref.png | Bin 0 -> 1163 bytes test/fill-rule.image16.ref.png | Bin 0 -> 1625 bytes test/filter-bilinear-extents.image16.ref.png | Bin 0 -> 895 bytes test/filter-nearest-transformed.image16.ref.png | Bin 0 -> 418 bytes test/finer-grained-fallbacks.image16.ref.png | Bin 0 -> 862 bytes test/font-matrix-translation.image16.ref.png | Bin 0 -> 852 bytes test/ft-show-glyphs-positioning.image16.ref.png | Bin 0 -> 2772 bytes test/ft-show-glyphs-table.image16.ref.png | Bin 0 -> 8052 bytes test/ft-text-vertical-layout-type1.image16.ref.png | Bin 0 -> 3072 bytes test/ft-text-vertical-layout-type3.image16.ref.png | Bin 0 -> 3141 bytes test/glyph-cache-pressure.image16.ref.png | Bin 0 -> 2453 bytes test/group-clip.image16.ref.png | Bin 0 -> 193 bytes test/group-unaligned.image16.ref.png | Bin 0 -> 395 bytes test/huge-linear.image16.ref.png | Bin 0 -> 1542 bytes test/huge-radial.image16.ref.png | Bin 0 -> 17893 bytes test/image-surface-source.image16.ref.png | Bin 0 -> 305 bytes test/joins.image16.ref.png | Bin 0 -> 5858 bytes test/large-font.image16.ref.png | Bin 0 -> 5713 bytes test/large-twin-antialias-mixed.image16.ref.png | Bin 0 -> 14398 bytes test/leaky-dashed-rectangle.image16.ref.png | Bin 0 -> 367 bytes test/leaky-dashed-stroke.image16.ref.png | Bin 0 -> 8089 bytes test/leaky-polygon.image16.ref.png | Bin 0 -> 329 bytes test/line-width-scale.image16.ref.png | Bin 0 -> 4721 bytes test/linear-gradient-reflect.image16.ref.png | Bin 0 -> 190 bytes test/linear-gradient-subset.image16.ref.png | Bin 0 -> 791 bytes test/linear-gradient.image16.ref.png | Bin 0 -> 941 bytes test/linear-uniform.image16.ref.png | Bin 0 -> 131 bytes test/long-dashed-lines.image16.ref.png | Bin 0 -> 1974 bytes test/mask-alpha.image16.ref.png | Bin 0 -> 560 bytes test/mask-glyphs.image16.ref.png | Bin 0 -> 1053144 bytes test/mask-transformed-image.image16.ref.png | Bin 0 -> 2748 bytes test/mask-transformed-similar.image16.ref.png | Bin 0 -> 2748 bytes test/mask.image16.ref.png | Bin 0 -> 5533 bytes test/operator-alpha-alpha.image16.ref.png | Bin 0 -> 4140 bytes test/operator-source.image16.ref.png | Bin 0 -> 2756 bytes test/over-around-source.image16.ref.png | Bin 0 -> 491 bytes test/paint-source-alpha.image16.ref.png | Bin 0 -> 253 bytes test/paint-with-alpha.image16.ref.png | Bin 0 -> 253 bytes test/path-append.image16.ref.png | Bin 0 -> 5252 bytes test/path-stroke-twice.image16.ref.png | Bin 0 -> 210 bytes test/pdf-surface-source.image16.ref.png | Bin 0 -> 305 bytes test/ps-surface-source.image16.ref.png | Bin 0 -> 305 bytes test/pthread-same-source.image16.ref.png | Bin 0 -> 1007 bytes test/push-group-color.image16.ref.png | Bin 0 -> 2277 bytes test/push-group.image16.ref.png | Bin 0 -> 2286 bytes test/radial-gradient-source.image16.ref.png | Bin 0 -> 132037 bytes test/radial-gradient.image16.ref.png | Bin 0 -> 202415 bytes .../random-intersections-curves-eo.image16.ref.png | Bin 0 -> 181565 bytes .../random-intersections-curves-nz.image16.ref.png | Bin 0 -> 204090 bytes test/random-intersections-eo.image16.ref.png | Bin 0 -> 97747 bytes test/random-intersections-nonzero.image16.ref.png | Bin 0 -> 107644 bytes test/recording-surface-pattern.image16.ref.png | Bin 0 -> 2856 bytes test/reflected-stroke.image16.ref.png | Bin 0 -> 4254 bytes test/rotated-clip.image16.ref.png | Bin 0 -> 3336 bytes test/rounded-rectangle-fill.image16.ref.png | Bin 0 -> 730 bytes test/rounded-rectangle-stroke.image16.ref.png | Bin 0 -> 732 bytes test/scale-offset-image.image16.ref.png | Bin 0 -> 7793 bytes test/scale-offset-similar.image16.ref.png | Bin 0 -> 7793 bytes test/select-font-face.image16.ref.png | Bin 0 -> 1962 bytes test/show-text-current-point.image16.ref.png | Bin 0 -> 1932 bytes test/smask-fill.image16.ref.png | Bin 0 -> 925 bytes test/smask-mask.image16.ref.png | Bin 0 -> 1358 bytes test/smask-paint.image16.ref.png | Bin 0 -> 1469 bytes test/smask-stroke.image16.ref.png | Bin 0 -> 1330 bytes test/smask-text.image16.ref.png | Bin 0 -> 1206 bytes test/smask.image16.ref.png | Bin 0 -> 2213 bytes test/spline-decomposition.image16.ref.png | Bin 0 -> 14064 bytes test/stroke-ctm-caps.image16.ref.png | Bin 0 -> 908 bytes test/stroke-image.image16.ref.png | Bin 0 -> 1167 bytes test/subsurface.image16.ref.png | Bin 0 -> 1430 bytes test/surface-pattern-operator.image16.ref.png | Bin 0 -> 1977 bytes test/surface-pattern-scale-down.image16.ref.png | Bin 0 -> 1313 bytes test/surface-pattern-scale-up.image16.ref.png | Bin 0 -> 3864 bytes test/surface-pattern.image16.ref.png | Bin 0 -> 11870 bytes test/svg-surface-source.image16.ref.png | Bin 0 -> 305 bytes test/text-antialias-gray.image16.ref.png | Bin 0 -> 895 bytes test/text-antialias-subpixel.image16.ref.png | Bin 0 -> 866 bytes test/text-glyph-range.image16.ref.png | Bin 0 -> 1731 bytes test/text-rotate.image16.ref.png | Bin 0 -> 12599 bytes test/text-transform.image16.ref.png | Bin 0 -> 4469 bytes test/transforms.image16.ref.png | Bin 0 -> 326 bytes test/trap-clip.image16.ref.png | Bin 0 -> 4344 bytes test/twin-antialias-gray.image16.ref.png | Bin 0 -> 3005 bytes test/twin-antialias-mixed.image16.ref.png | Bin 0 -> 2049 bytes test/twin-antialias-subpixel.image16.ref.png | Bin 0 -> 3005 bytes test/twin.image16.ref.png | Bin 0 -> 3005 bytes test/unbounded-operator.image16.ref.png | Bin 0 -> 1276 bytes test/user-font-mask.image16.ref.png | Bin 0 -> 4948 bytes test/user-font-proxy.image16.ref.png | Bin 0 -> 14460 bytes test/user-font-rescale.image16.ref.png | Bin 0 -> 12590 bytes test/user-font.image16.ref.png | Bin 0 -> 5814 bytes test/xcomposite-projection.image16.ref.png | Bin 0 -> 1000 bytes test/xlib-surface-source.image16.ref.png | Bin 0 -> 305 bytes 145 files changed, 144 insertions(+), 0 deletions(-) commit ebe6f2ac6988991afde0d685bea9f207ed3360d8 Author: Andrea Canciani <ranma42@gmail.com> Date: Tue Apr 27 10:59:09 2010 +0200 quartz: Assert success of path creation Path creation can only fail because of the callbacks, but in quartz they all return CAIRO_STATUS_SUCCESS. Therefore we can just assert that path creation was successful and simplify calling functions (as they don't have to handle potential errors anymore). src/cairo-quartz-surface.c | 35 +++++++++++++++-------------------- 1 files changed, 15 insertions(+), 20 deletions(-) commit f67b6009278ef3dfe91ddbffb989dcfeed174352 Author: Andrea Canciani <ranma42@gmail.com> Date: Sun Apr 4 11:50:41 2010 +0200 quartz: Simplify path creation If paths are created before changing the ctm (when stroking) no multiplication is needed in the path construction code. src/cairo-quartz-surface.c | 60 +++++++------------------------------------ 1 files changed, 10 insertions(+), 50 deletions(-) commit 3b2ceff0502ba409c161e497ebe015e0a0a88847 Author: Andrea Canciani <ranma42@gmail.com> Date: Wed Apr 7 18:34:25 2010 +0200 quartz: Stroke without ctm_inverse multiplication If the CTM is not changed before creating the path, no multiplication needs to be made between points and the inverse of the CTM. src/cairo-quartz-surface.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) commit 514d366cde689f8200b049834bebbd421d5d8bcb Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Apr 27 11:07:09 2010 +0100 snapshot: propagate status on finish src/cairo-surface-snapshot.c | 11 ++++++++--- 1 files changed, 8 insertions(+), 3 deletions(-) commit a505104013a1db0c8b1092c8a1848d7f0b02e6bc Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Apr 26 20:22:13 2010 +0100 image: Compute sample extents In order to reuse the original image as the pixman pattern, then the entire operation must be wholly contained within the extents of the image (including subsurfaces) and be reducible to an untransformed REPEAT_NONE. src/cairo-image-surface.c | 72 +++++++++++++++++++++++++++++--------------- src/cairo-pattern.c | 2 +- src/cairoint.h | 4 ++ 3 files changed, 52 insertions(+), 26 deletions(-) commit b8a7f8621a84083735d0e2c8748f5fa2b7f4b36a Author: Andrea Canciani <ranma42@gmail.com> Date: Tue Apr 27 10:17:23 2010 +0200 Update FSF address I updated the Free Software Foundation address using the following script. for i in $(git grep Temple | cut -d: -f1 ) do sed -e 's/59 Temple Place[, -]* Suite 330, Boston, MA *02111-1307[, ]* USA/51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA/' -i "$i" done Fixes http://bugs.freedesktop.org/show_bug.cgi?id=21356 COPYING-LGPL-2.1 | 4 ++-- boilerplate/cairo-boilerplate-drm.c | 2 +- boilerplate/cairo-boilerplate-gl.c | 2 +- boilerplate/cairo-boilerplate-qt.cpp | 2 +- boilerplate/cairo-boilerplate-vg.c | 2 +- build/aclocal.pkg.m4 | 2 +- doc/tutorial/src/include/cairo-tutorial-gtk.h | 2 +- doc/tutorial/src/include/cairo-tutorial-pdf.h | 2 +- doc/tutorial/src/include/cairo-tutorial-png.h | 2 +- doc/tutorial/src/include/cairo-tutorial-xlib.h | 2 +- doc/tutorial/src/include/cairo-tutorial.h | 2 +- src/cairo-analysis-surface-private.h | 2 +- src/cairo-analysis-surface.c | 2 +- src/cairo-arc-private.h | 2 +- src/cairo-arc.c | 2 +- src/cairo-array.c | 2 +- src/cairo-atomic-private.h | 2 +- src/cairo-atomic.c | 2 +- src/cairo-base64-stream.c | 2 +- src/cairo-base85-stream.c | 2 +- src/cairo-bentley-ottmann-rectangular.c | 2 +- src/cairo-bentley-ottmann-rectilinear.c | 2 +- src/cairo-bentley-ottmann.c | 2 +- src/cairo-beos-surface.cpp | 2 +- src/cairo-beos.h | 2 +- src/cairo-botor-scan-converter.c | 2 +- src/cairo-boxes-private.h | 2 +- src/cairo-boxes.c | 2 +- src/cairo-cache-private.h | 2 +- src/cairo-cache.c | 2 +- src/cairo-cff-subset.c | 2 +- src/cairo-clip-private.h | 2 +- src/cairo-clip.c | 2 +- src/cairo-color.c | 2 +- src/cairo-combsort-private.h | 2 +- src/cairo-compiler-private.h | 2 +- src/cairo-composite-rectangles-private.h | 2 +- src/cairo-composite-rectangles.c | 2 +- src/cairo-debug.c | 2 +- src/cairo-deflate-stream.c | 2 +- src/cairo-deprecated.h | 2 +- src/cairo-device-private.h | 2 +- src/cairo-device.c | 2 +- src/cairo-directfb-surface.c | 2 +- src/cairo-directfb.h | 2 +- src/cairo-drm.h | 2 +- src/cairo-egl-context.c | 2 +- src/cairo-error-private.h | 2 +- src/cairo-fixed-private.h | 2 +- src/cairo-fixed-type-private.h | 2 +- src/cairo-fixed.c | 2 +- src/cairo-font-face-twin.c | 2 +- src/cairo-font-face.c | 2 +- src/cairo-font-options.c | 2 +- src/cairo-freed-pool-private.h | 2 +- src/cairo-freed-pool.c | 2 +- src/cairo-ft-font.c | 2 +- src/cairo-ft-private.h | 2 +- src/cairo-ft.h | 2 +- src/cairo-gl-glyphs.c | 2 +- src/cairo-gl-private.h | 2 +- src/cairo-gl-shaders.c | 2 +- src/cairo-gl-surface.c | 2 +- src/cairo-gl.h | 2 +- src/cairo-glx-context.c | 2 +- src/cairo-gstate-private.h | 2 +- src/cairo-gstate.c | 2 +- src/cairo-hash-private.h | 2 +- src/cairo-hash.c | 2 +- src/cairo-hull.c | 2 +- src/cairo-image-info-private.h | 2 +- src/cairo-image-info.c | 2 +- src/cairo-image-surface.c | 2 +- src/cairo-list-private.h | 2 +- src/cairo-lzw.c | 2 +- src/cairo-malloc-private.h | 2 +- src/cairo-matrix.c | 2 +- src/cairo-misc.c | 2 +- src/cairo-mutex-impl-private.h | 2 +- src/cairo-mutex-list-private.h | 2 +- src/cairo-mutex-private.h | 2 +- src/cairo-mutex-type-private.h | 2 +- src/cairo-mutex.c | 2 +- src/cairo-os2-private.h | 2 +- src/cairo-os2-surface.c | 2 +- src/cairo-os2.h | 2 +- src/cairo-output-stream-private.h | 2 +- src/cairo-output-stream.c | 2 +- src/cairo-paginated-private.h | 2 +- src/cairo-paginated-surface-private.h | 2 +- src/cairo-paginated-surface.c | 2 +- src/cairo-path-bounds.c | 2 +- src/cairo-path-fill.c | 2 +- src/cairo-path-fixed-private.h | 2 +- src/cairo-path-fixed.c | 2 +- src/cairo-path-in-fill.c | 2 +- src/cairo-path-private.h | 2 +- src/cairo-path-stroke.c | 2 +- src/cairo-path.c | 2 +- src/cairo-pdf-operators-private.h | 2 +- src/cairo-pdf-operators.c | 2 +- src/cairo-pdf-surface-private.h | 2 +- src/cairo-pdf-surface.c | 2 +- src/cairo-pdf.h | 2 +- src/cairo-pen.c | 2 +- src/cairo-png.c | 2 +- src/cairo-polygon.c | 2 +- src/cairo-private.h | 2 +- src/cairo-ps-surface-private.h | 2 +- src/cairo-ps-surface.c | 2 +- src/cairo-ps.h | 2 +- src/cairo-qt-surface.cpp | 2 +- src/cairo-qt.h | 2 +- src/cairo-quartz-font.c | 2 +- src/cairo-quartz-image-surface.c | 2 +- src/cairo-quartz-image.h | 2 +- src/cairo-quartz-private.h | 2 +- src/cairo-quartz-surface.c | 2 +- src/cairo-quartz.h | 2 +- src/cairo-recording-surface-private.h | 2 +- src/cairo-recording-surface.c | 2 +- src/cairo-rectangle.c | 2 +- src/cairo-rectangular-scan-converter.c | 2 +- src/cairo-reference-count-private.h | 2 +- src/cairo-region-private.h | 2 +- src/cairo-region.c | 2 +- src/cairo-rtree-private.h | 2 +- src/cairo-rtree.c | 2 +- src/cairo-scaled-font-private.h | 2 +- src/cairo-scaled-font-subsets-private.h | 2 +- src/cairo-scaled-font-subsets.c | 2 +- src/cairo-scaled-font.c | 2 +- src/cairo-script-surface.c | 2 +- src/cairo-script.h | 2 +- src/cairo-skia-surface.cpp | 2 +- src/cairo-skia.h | 2 +- src/cairo-slope-private.h | 2 +- src/cairo-slope.c | 2 +- src/cairo-spline.c | 2 +- src/cairo-stroke-style.c | 2 +- src/cairo-surface-clipper-private.h | 2 +- src/cairo-surface-clipper.c | 2 +- src/cairo-surface-fallback-private.h | 2 +- src/cairo-surface-fallback.c | 2 +- src/cairo-surface-offset-private.h | 2 +- src/cairo-surface-offset.c | 2 +- src/cairo-surface-private.h | 2 +- src/cairo-surface-snapshot-private.h | 2 +- src/cairo-surface-snapshot.c | 2 +- src/cairo-surface-subsurface-private.h | 2 +- src/cairo-surface-subsurface.c | 2 +- src/cairo-surface-wrapper-private.h | 2 +- src/cairo-surface-wrapper.c | 2 +- src/cairo-surface.c | 2 +- src/cairo-svg-surface-private.h | 2 +- src/cairo-svg-surface.c | 2 +- src/cairo-svg.h | 2 +- src/cairo-system.c | 2 +- src/cairo-tee-surface-private.h | 2 +- src/cairo-tee-surface.c | 2 +- src/cairo-toy-font-face.c | 2 +- src/cairo-traps.c | 2 +- src/cairo-truetype-subset-private.h | 2 +- src/cairo-truetype-subset.c | 2 +- src/cairo-type1-fallback.c | 2 +- src/cairo-type1-private.h | 2 +- src/cairo-type1-subset.c | 2 +- src/cairo-type3-glyph-surface-private.h | 2 +- src/cairo-type3-glyph-surface.c | 2 +- src/cairo-types-private.h | 2 +- src/cairo-unicode.c | 2 +- src/cairo-user-font-private.h | 2 +- src/cairo-user-font.c | 2 +- src/cairo-version.c | 2 +- src/cairo-vg-surface.c | 2 +- src/cairo-vg.h | 2 +- src/cairo-wideint-private.h | 2 +- src/cairo-wideint-type-private.h | 2 +- src/cairo-wideint.c | 2 +- src/cairo-win32-font.c | 2 +- src/cairo-win32-printing-surface.c | 2 +- src/cairo-win32-private.h | 2 +- src/cairo-win32-surface.c | 2 +- src/cairo-win32.h | 2 +- src/cairo-xcb-connection-core.c | 2 +- src/cairo-xcb-connection-render.c | 2 +- src/cairo-xcb-connection-shm.c | 2 +- src/cairo-xcb-connection.c | 2 +- src/cairo-xcb-private.h | 2 +- src/cairo-xcb-screen.c | 2 +- src/cairo-xcb-shm.c | 2 +- src/cairo-xcb-surface-cairo.c | 2 +- src/cairo-xcb-surface-core.c | 2 +- src/cairo-xcb-surface-private.h | 2 +- src/cairo-xcb-surface-render.c | 2 +- src/cairo-xcb-surface.c | 2 +- src/cairo-xcb.h | 2 +- src/cairo-xlib-display.c | 2 +- src/cairo-xlib-private.h | 2 +- src/cairo-xlib-screen.c | 2 +- src/cairo-xlib-surface-private.h | 2 +- src/cairo-xlib-surface.c | 2 +- src/cairo-xlib-visual.c | 2 +- src/cairo-xlib-xcb-surface.c | 2 +- src/cairo-xlib-xrender-private.h | 2 +- src/cairo-xlib-xrender.h | 2 +- src/cairo-xlib.h | 2 +- src/cairo-xml-surface.c | 2 +- src/cairo-xml.h | 2 +- src/cairo.c | 2 +- src/cairo.h | 2 +- src/cairoint.h | 2 +- src/drm/cairo-drm-bo.c | 2 +- src/drm/cairo-drm-gallium-surface.c | 2 +- src/drm/cairo-drm-i915-glyphs.c | 2 +- src/drm/cairo-drm-i915-shader.c | 2 +- src/drm/cairo-drm-i915-spans.c | 2 +- src/drm/cairo-drm-i915-surface.c | 2 +- src/drm/cairo-drm-i965-glyphs.c | 2 +- src/drm/cairo-drm-i965-shader.c | 2 +- src/drm/cairo-drm-i965-spans.c | 2 +- src/drm/cairo-drm-i965-surface.c | 2 +- src/drm/cairo-drm-intel-ioctl-private.h | 2 +- src/drm/cairo-drm-intel-private.h | 2 +- src/drm/cairo-drm-intel-surface.c | 2 +- src/drm/cairo-drm-intel.c | 2 +- src/drm/cairo-drm-private.h | 2 +- src/drm/cairo-drm-radeon-private.h | 2 +- src/drm/cairo-drm-radeon-surface.c | 2 +- src/drm/cairo-drm-radeon.c | 2 +- src/drm/cairo-drm-surface.c | 2 +- src/drm/cairo-drm.c | 2 +- src/test-fallback-surface.c | 2 +- src/test-fallback-surface.h | 2 +- src/test-fallback16-surface.c | 2 +- src/test-fallback16-surface.h | 2 +- src/test-null-surface.c | 2 +- src/test-null-surface.h | 2 +- src/test-paginated-surface.c | 2 +- src/test-paginated-surface.h | 2 +- src/test-wrapping-surface.c | 2 +- src/test-wrapping-surface.h | 2 +- test/dash-offset.c | 2 +- test/miter-precision.c | 2 +- test/operator-alpha-alpha.c | 2 +- test/pdiff/args.c | 2 +- test/pdiff/args.h | 2 +- test/pdiff/lpyramid.c | 2 +- test/pdiff/lpyramid.h | 2 +- test/pdiff/pdiff.c | 2 +- test/pdiff/pdiff.h | 2 +- test/pdiff/perceptualdiff.c | 2 +- util/backtrace-symbols.c | 2 +- util/cairo-script/cairo-script-file.c | 2 +- util/cairo-script/cairo-script-hash.c | 2 +- util/cairo-script/cairo-script-interpreter.c | 2 +- util/cairo-script/cairo-script-interpreter.h | 2 +- util/cairo-script/cairo-script-objects.c | 2 +- util/cairo-script/cairo-script-operators.c | 2 +- util/cairo-script/cairo-script-private.h | 2 +- util/cairo-script/cairo-script-scanner.c | 2 +- util/cairo-script/cairo-script-stack.c | 2 +- 262 files changed, 263 insertions(+), 263 deletions(-) commit 9672aab6b7c3f1efc065a6e5eb69443a1ecaa723 Author: Benjamin Otte <otte@redhat.com> Date: Mon Apr 26 21:28:53 2010 +0200 tests: Integrate xlib-expose-event test into usual tests Previously the test was using the preamble vfunc and generating output itself. Now it uses the draw function and ignores any but the xlib backends. test/xlib-expose-event.c | 63 +++++++++++----------------------------------- 1 files changed, 15 insertions(+), 48 deletions(-) commit 36e0a3d3a01f9962d97386ea2d3c60020e937a81 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Apr 26 18:18:27 2010 +0100 trace: Remove unused functions trace.c:1154: warning: ‘_has_font_face_id’ defined but not used trace.c:1196: warning: ‘_get_pattern_id’ defined but not used trace.c:1870: warning: ‘_emit_font_face’ defined but not used trace.c:1882: warning: ‘_emit_scaled_font’ defined but not used util/cairo-trace/trace.c | 24 ------------------------ 1 files changed, 0 insertions(+), 24 deletions(-) commit 3a2d9ffe0333090bb31ff01048ed506595f20cf9 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Apr 26 18:17:49 2010 +0100 trace: Check return value to suppress compiler warning trace.c: In function ‘get_prog_name’: trace.c:741: warning: ignoring return value of ‘fgets’, declared with attribute warn_unused_result util/cairo-trace/trace.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) commit 37be183412eb35abc11e602857602aee05839fc7 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Apr 26 18:12:05 2010 +0100 trace: Trivial compiler warning fix trace.c:1665: warning: initialization from incompatible pointer type util/cairo-trace/trace.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 3c9e5d9792e101cfbd5a1116f06579539ed7b585 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Apr 26 18:13:36 2010 +0100 region: Cast to remove const to suppress compiler warnings. airo-region.c: In function ‘cairo_region_intersect’: cairo-region.c:503: warning: passing argument 3 of ‘pixman_region32_intersect’ discards qualifiers from pointer target type /usr/local/include/pixman-1/pixman.h:518: note: expected ‘struct pixman_region32_t *’ but argument is of type ‘const struct pixman_region32_t *’ cairo-region.c: In function ‘cairo_region_union’: cairo-region.c:566: warning: passing argument 3 of ‘pixman_region32_union’ discards qualifiers from pointer target type /usr/local/include/pixman-1/pixman.h:521: note: expected ‘struct pixman_region32_t *’ but argument is of type ‘const struct pixman_region32_t *’ src/cairo-region.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 8c72122df51a10a32b56cdf20e5a1037ee59a958 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Apr 25 10:30:12 2010 +0100 clip: Skip combining with solid pixel aligned boxes. src/cairo-clip.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) commit 240ebaf81a42c24c4d4267879c5ef8102e97017e Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Apr 25 09:44:18 2010 +0100 clip: Fix sign reverse when combining with the clip surface. Finally, found the reversed sign in the clipping code, thanks cu! Fixes: test/clip-shape src/cairo-clip.c | 24 ++---------------------- 1 files changed, 2 insertions(+), 22 deletions(-) commit 4d3632761b928c14fb1ce257af077f45658d8537 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Apr 25 09:42:13 2010 +0100 clip: Report the surface offset when retrieving the clip mask Stop the callers from guessing the origin of the clip surface by reporting it explicitly! This enables the clip to bypass any rectangles overlaid on top of the clip surface, which is common when the backends limit the clip to the extents of the operation -- but irrelevant to the actual content of the clip mask src/cairo-clip-private.h | 2 +- src/cairo-clip.c | 26 ++++++++++++++++++++------ src/cairo-image-surface.c | 39 +++++++++++++++++++++------------------ src/cairo-surface-fallback.c | 20 ++++++++++---------- src/cairo-xcb-surface-render.c | 31 +++++++++++++++---------------- src/drm/cairo-drm-i915-shader.c | 9 ++++----- src/drm/cairo-drm-i965-shader.c | 7 ++++--- 7 files changed, 75 insertions(+), 59 deletions(-) commit 241ce933f8fa44210015dcdc4a66b3f9d8ac56e8 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Apr 25 09:37:50 2010 +0100 test: Add clip-shape cu found a bug when using clipping and fills with the image backend, but it turns out to be the lost sign bug afflicting everything... To trigger the bug requires evaluating the clip surface prior to using in with _cairo_clip_combine_with_surface(). Which is taken along a particular path when using a clip mask with non-pixel geometry on image, but more easily hit by the fallback code. Reported-by: <cairouser@yahoo.com> test/Makefile.am | 4 ++ test/Makefile.sources | 1 + test/clip-shape.c | 86 +++++++++++++++++++++++++++++++++ test/clip-shape.ps.ref.png | Bin 0 -> 1797 bytes test/clip-shape.ref.png | Bin 0 -> 2935 bytes test/clip-shape.xlib-fallback.ref.png | Bin 0 -> 2916 bytes test/clip-shape.xlib.ref.png | Bin 0 -> 2944 bytes 7 files changed, 91 insertions(+), 0 deletions(-) commit 1687c7b7d3074de8eeea1a5c339df9a12cc38da2 Author: Benjamin Otte <otte@redhat.com> Date: Fri Apr 23 22:22:28 2010 +0200 xlib: Fix display closing to work properly Previously we free()'d the cairo_device's memory which was not good at all. Now the code causes cairo_device_finish() instead. src/cairo-xlib-display.c | 37 +++++++++++++++++++++++-------------- 1 files changed, 23 insertions(+), 14 deletions(-) commit 637564c562de21c17c36d192d3ab1b3fe069754b Author: Benjamin Otte <otte@redhat.com> Date: Fri Apr 23 22:10:32 2010 +0200 xlib: Fix screen device handling Add a _cairo_xlib_device_create() function that could easily be exported as a replacement for _cairo_xlib_display_get(). This function returns a cairo_device_t instead of a cairo_xlib_display_t because the display isn't acquired. src/cairo-xlib-display.c | 33 ++++++++++++++++++--------------- src/cairo-xlib-private.h | 4 ++-- src/cairo-xlib-screen.c | 23 ++++++++++++++++------- 3 files changed, 36 insertions(+), 24 deletions(-) commit 49b52a8946cbd5f785f71069313e4a204358887b Author: Benjamin Otte <otte@redhat.com> Date: Thu Apr 22 21:56:31 2010 +0200 gl: Make drawing to windows work again The correct MIN/MAG_FILTER wasn't set. src/cairo-gl-surface.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 3efbc0c5c850d0cb5c5af5bcabbc7293670ea355 Author: Benjamin Otte <otte@redhat.com> Date: Tue Apr 20 21:58:59 2010 +0200 gl: Only unref a surface if it exists Note: This will likely work for NULL clones, but I prefer not dereferencing NULLs. That gives people a wrong understanding of the code (i.e. me). src/cairo-gl-surface.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 64662be4ef3851d21658e5fdb2efb6806b45eba8 Author: Benjamin Otte <otte@redhat.com> Date: Thu Apr 22 22:05:03 2010 +0200 gl: Use GLfloat instead of float in gl*Array() functions src/cairo-gl-surface.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) commit e4f84f97b2f5d37bc1fb7dd510df733053ffe624 Author: Benjamin Otte <otte@redhat.com> Date: Tue Apr 20 21:33:50 2010 +0200 gl: Don't acquire the gl context twice src/cairo-gl-surface.c | 7 ------- 1 files changed, 0 insertions(+), 7 deletions(-) commit e40a2d1f5eeea139e29c27e38495b9c0bf9e39a1 Author: Benjamin Otte <otte@redhat.com> Date: Thu Apr 22 22:03:29 2010 +0200 gl: Use correct type when uploading images src/cairo-gl-surface.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 55cf323f963bbcc11bcc290eaf71656e1ba91efd Author: Benjamin Otte <otte@redhat.com> Date: Thu Apr 22 21:58:01 2010 +0200 gl: fix typo in comment src/cairo-gl-surface.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 887d43578c3acc7d45c8b2e3ade5da29be804eeb Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Apr 23 20:14:03 2010 +0100 xlib: Simply release the ref, not destroy, from CloseDisplay. Do not call the destroy function directly, but rely on the reference counting to call the notifier upon the last reference. Instead, simply release the reference we were holding for the cache and CloseDisplay callback. src/cairo-xlib-display.c | 22 ++++++++++++---------- 1 files changed, 12 insertions(+), 10 deletions(-) commit c63e3490a5fc2836837e7adcb5ecad62bdfd18ab Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Apr 22 20:33:06 2010 +0100 cairo: Handle the all-clipped state in cairo_push_group() Yet another bug reported by Jeff Muizelaar, thanks! Fixes: test/clip-empty-group src/cairo.c | 81 +++++++++++++++++++++++++++++++++------------------------- 1 files changed, 46 insertions(+), 35 deletions(-) commit 567e485f28716d7b72cbf864a0c573148be91cd8 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Apr 23 14:37:43 2010 +0100 test: Add clip-empty-group Exercise a bug reported by Jeff Muizelaar whereby cairo_push_group() was broken by everything being clipped out. test/Makefile.am | 1 + test/Makefile.sources | 1 + test/clip-empty-group.c | 65 +++++++++++++++++++++++++++++++++++++++++ test/clip-empty-group.ref.png | Bin 0 -> 103 bytes 4 files changed, 67 insertions(+), 0 deletions(-) commit 4438cc6a49e7e902dce045706f7125a2c3e2174b Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Apr 3 18:10:57 2010 +0100 cairo: Use explicit device flushing. Now with the concept of a cairo_device_t and the ability to flush it, we now longer require the heuristic of automatically flushing on behalf of the user at the end of every context. src/cairo.c | 11 ----------- 1 files changed, 0 insertions(+), 11 deletions(-) commit 0fc140abc3c848e72b1b2b959026355fdbd6a941 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Apr 21 12:01:49 2010 +0100 pdf: Suppress compiler warning. src/cairo-pdf-operators.c | 12 ++++++------ 1 files changed, 6 insertions(+), 6 deletions(-) commit 1923a33a7277009b2898840d671fdc8f8d1b3922 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Apr 21 11:59:33 2010 +0100 cairoint.h: Change ASSERT_NOT_REACHED to remove compiler warning src/cairoint.h | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) commit d366da7d8c46b08673b9e36dd130608a311ded4b Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Apr 23 14:38:42 2010 +0100 Win32 features update boilerplate/Makefile.win32.features | 8 -------- src/Makefile.win32.features | 8 -------- 2 files changed, 0 insertions(+), 16 deletions(-) commit c1e51a0264d204716f7706fbc66c2a7786b7947c Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Apr 23 14:33:53 2010 +0100 build: Spelling correction build/Makefile.win32.features-h | 1 - build/configure.ac.features | 2 +- 2 files changed, 1 insertions(+), 2 deletions(-) commit e0306da1d73509e2cfd0fce81a1b4259e5e3fcef Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Apr 21 22:51:53 2010 +0100 configure: typo in check for xcb-shm configure.ac | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit b7fbda276df52de6a5ac67397a8d49657233fcfa Author: Andrea Canciani <ranma42@gmail.com> Date: Sun Apr 18 23:16:07 2010 +0200 Revert "script: Another RGB16_565 warning." This reverts commit a9f506493371ac91494488e5ca38e57ceb5a10cb. The change was already applied in bdf8f50adae67498d5fe36727ed2cd34c0206509. src/cairo-script-surface.c | 6 ------ 1 files changed, 0 insertions(+), 6 deletions(-) commit f74ad37e66bbdcc4d727ed6d931dde870d84c2f4 Author: Benjamin Otte <otte@redhat.com> Date: Sun Apr 18 23:20:02 2010 +0200 xlib: Make display a cairo_device_t The code now uses the locking of the cairo_device_t instead of its own mutexes. The code was modified so that cairo_surface_t does no longer reference the display directly. Instead, it calls _cairo_xlib_display_acquire(). If a function assumes an already acquired display, it now requires the caller to provide a cairo_xlib_display_t parameter. Functions that do not require an acquired display will not require the display parameter or they will take the cairo_device_t instead. src/cairo-xlib-display.c | 234 +++++++---------- src/cairo-xlib-private.h | 66 +++-- src/cairo-xlib-screen.c | 161 ++--------- src/cairo-xlib-surface-private.h | 2 - src/cairo-xlib-surface.c | 557 ++++++++++++++++++++++--------------- 5 files changed, 494 insertions(+), 526 deletions(-) commit 2bffa2467ed67517419e425fc34fb5b8294a9e96 Author: Benjamin Otte <otte@redhat.com> Date: Wed Jan 27 10:56:22 2010 +0100 Use pixman_image_composite32() Replace all occurences of pixman_image_composite() src/cairo-directfb-surface.c | 16 +- src/cairo-image-surface.c | 352 ++++++++++++++++++++-------------------- src/cairo-pattern.c | 16 +- src/cairo-surface-snapshot.c | 12 +- src/cairo-surface-subsurface.c | 24 ++-- src/cairo-xlib-surface.c | 16 +- src/drm/cairo-drm-intel.c | 12 +- 7 files changed, 224 insertions(+), 224 deletions(-) commit 567923d66a375259a6a8083aa4ef1051097a60c5 Author: Benjamin Otte <otte@redhat.com> Date: Wed Jan 27 09:39:20 2010 +0100 image: Make unbounded fixup code not use pixman_fill() The new pixman_image_fill_boxes() does proper fallbacks for weird pixman formats. src/cairo-image-surface.c | 123 +++++++++++++++++---------------------------- 1 files changed, 47 insertions(+), 76 deletions(-) commit b648365cfa2d808b34b924a6b105718e0673bb9b Author: Benjamin Otte <otte@redhat.com> Date: Wed Jan 27 09:21:41 2010 +0100 Require pixman 0.17.5 We want pixman_image_composite32() and pixman_image_fill_boxes() configure.ac | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 0a19ad7c104cd81fa2b93aaf7ef9302f50b3f369 Author: Benjamin Otte <otte@redhat.com> Date: Thu Apr 15 17:58:16 2010 +0200 gl: Get rid of "return value not checked" warnings Assert that those functions only return successfully. src/cairo-gl-surface.c | 42 ++++++++++++++++++++++++------------------ 1 files changed, 24 insertions(+), 18 deletions(-) commit 7745ea21e104d0a5eec1814f19bacb7334f42185 Author: Benjamin Otte <otte@redhat.com> Date: Wed Apr 14 15:59:36 2010 +0200 gl: acquire/release properly in _cairo_gl_draw_image() Fixes various testsuite failures, in particular ones related to masks. src/cairo-gl-surface.c | 16 ++++++++++++++-- 1 files changed, 14 insertions(+), 2 deletions(-) commit 596d3017a1b11cb9844e69330cdece7441929725 Author: Benjamin Otte <otte@redhat.com> Date: Tue Apr 13 20:53:47 2010 +0200 gl: acquire/release context when getting images Avoids Mesa complaining about no current context. src/cairo-gl-surface.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) commit 46ef05c3d73af2b222602954b986832e77355a12 Author: Benjamin Otte <otte@redhat.com> Date: Mon Mar 29 12:58:18 2010 +0200 glx: Add getters for device's Display and GLXContext src/cairo-gl.h | 6 ++++++ src/cairo-glx-context.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 0 deletions(-) commit 712919223d08f8b4c43f828322fdc285560c137f Author: Benjamin Otte <otte@redhat.com> Date: Fri Mar 26 15:50:10 2010 +0100 gl: Make code safe for multithreaded access The code callss the gl device's acquire/release in cairo_device_acquire/release(). This way, external APIs can use these functions to prepare for rendering GL. Also adds code to unset the glx context if it wasn't set when acquiring the device. This allows multithreaded apps to work fine with just using cairo APIs, but might introduce penalties in single-threaded applications. src/cairo-egl-context.c | 2 ++ src/cairo-gl-private.h | 5 ++++- src/cairo-gl-surface.c | 20 +++++++++++++++++++- src/cairo-glx-context.c | 37 +++++++++++++++++++++++++++++++++++-- 4 files changed, 60 insertions(+), 4 deletions(-) commit 8f2e82cea3405fa9a6591911c0d42ea3dd0c6180 Author: Benjamin Otte <otte@redhat.com> Date: Thu Apr 15 17:48:24 2010 +0200 xcb: Make code not complain about every new format src/cairo-xcb-surface-render.c | 46 +++++++++++++++------------------------ 1 files changed, 18 insertions(+), 28 deletions(-) commit 1d753b2f4d724c5ac3e452848ca4dda5891816a6 Author: Benjamin Otte <otte@redhat.com> Date: Tue Feb 23 21:53:31 2010 +0100 xlib: Make code not complain about every new format src/cairo-xlib-surface.c | 46 ++++++++++++++++++---------------------------- 1 files changed, 18 insertions(+), 28 deletions(-) commit ebc9cc46fe7740c6d97e02edc66bae383413764b Author: Benjamin Otte <otte@redhat.com> Date: Fri Mar 5 15:08:34 2010 +0100 gl: Use right format The internal format should always be GL_RGBA. src/cairo-gl-surface.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 4142f0836d6719dd136a5fc6ac1adaddd681a3f2 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Apr 15 09:09:31 2010 +0100 gl: Handle component-alpha ADD A simple extension to the component-alpha OVER [as ca-ADD is just the second pass in ca-OVER] to support amalgamation of glyph masks. This speeds up firefox-36 by ~5% on g45. Before: firefox-36-20090611 76.185 After: firefox-36-20090611 72.863 src/cairo-gl-surface.c | 16 +++++++++------- 1 files changed, 9 insertions(+), 7 deletions(-) commit a4bae1956bee0be98a5a22bd82d417192776e7f0 Author: Benjamin Otte <otte@redhat.com> Date: Wed Apr 14 22:46:34 2010 +0200 gl: Really don't write error status to the inert object. src/cairo-gl-surface.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit 5fed41ee2bb3097c1446c1cf2038c912d5932692 Author: Benjamin Otte <otte@redhat.com> Date: Wed Apr 14 22:43:29 2010 +0200 test: Add test checking that all setters properly check surface->status In particular, make sure that the setters when called on a const nil surface don't try to set surface->status. test/Makefile.sources | 1 + test/error-setters.c | 109 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 110 insertions(+), 0 deletions(-) commit 6826f020014fff566678a1ff92014211e2a21d4c Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Apr 14 19:33:34 2010 +0100 gl: Don't write error status to the inert object. Reported-by: Benjamin Otte <otte@redhat.com> src/cairo-gl-surface.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit 3814855a649ffca695ce31d97c291496e32d2e26 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Apr 14 20:22:14 2010 +0100 script: Flush prior to modifying the image data. util/cairo-script/cairo-script-operators.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 03f7bfc351c27ab9d0b764a21bdcf2304e8c2e81 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Apr 14 20:14:39 2010 +0100 rtree: Remove the false assert upon collapse. src/cairo-rtree.c | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-) commit b0383d0cd2b40185b1676d9c88d3647cecc1d7fd Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Apr 14 19:33:34 2010 +0100 svg: Don't write error status to the inert object. Reported-by: Benjamin Otte <otte@redhat.com> src/cairo-svg-surface.c | 37 +++++++++++++++++++++---------------- 1 files changed, 21 insertions(+), 16 deletions(-) commit 5274b63adb9ad808f94e6ea04707991ec1192694 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Apr 14 19:33:34 2010 +0100 ps: Don't write error status to the inert object. Reported-by: Benjamin Otte <otte@redhat.com> src/cairo-pdf-surface.c | 2 - src/cairo-ps-surface.c | 74 +++++++++++++++++----------------------------- 2 files changed, 27 insertions(+), 49 deletions(-) commit 45d23b8a791d5845025a1a4d93f99030ec9e0115 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Apr 14 19:33:34 2010 +0100 pdf: Don't write error status to the inert object. Reported-by: Benjamin Otte <otte@redhat.com> src/cairo-pdf-surface.c | 41 ++++++++++++++++++++++------------------- 1 files changed, 22 insertions(+), 19 deletions(-) commit 4351304b5110200b77e6851995cf533a929ba17e Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Apr 14 19:29:07 2010 +0100 Win32 features update. boilerplate/Makefile.win32.features | 8 ++++++++ build/Makefile.win32.features-h | 1 + 2 files changed, 9 insertions(+), 0 deletions(-) commit bd17b898b1c249aa0dc443bc303bad4fea8690bc Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Apr 14 19:11:15 2010 +0100 surface: Propagate the error status to _cairo_surface_get_device() If the surface is in error, the appropriate action is report the error using an inert error cairo_device_t. Reported-by: Benjamin Otte <otte@redhat.com> src/cairo-surface.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit 005596907fc9b62fa4bf72ec35e0d1a1a242ef93 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Apr 14 19:05:09 2010 +0100 xlib: Don't operate on an error object inside setters. Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=599574 The backend API manipulated the surface prior to checking whether it was an inert error surface - and in the event of an error surface, tried to overwrite it's error status. src/Makefile.win32.features | 8 ++++++++ src/cairo-xcb-surface.c | 3 +++ src/cairo-xlib-surface.c | 6 ++++++ src/cairo-xlib-xcb-surface.c | 6 ++++++ 4 files changed, 23 insertions(+), 0 deletions(-) commit 8afd4e4c3db53159d1e5b6f13d3355cb5fb1750b Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Apr 13 17:52:19 2010 +0100 hull: _cairo_hull_vertex_compare() return 0 for identical elements Andreas Falkenhahn reported a bizarre situation with some implementations of qsort that actually compare the same elements and require the comparator to return 0. So be it. Reported-by: Andreas Falkenhahn <andreas@airsoftsoftwair.de> src/cairo-hull.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) commit d95037db9915033ef1eee24c2fc05e8a95af5457 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Apr 11 21:04:29 2010 +0100 cache: Tidy _cairo_cache_shrink_to_accommodate() There is no need to shrink the cache if we add an entry of size 0, so don't by moving the guards in _cairo_cache_shrink_to_accommodate() to the callers. src/cairo-cache.c | 10 +++------- 1 files changed, 3 insertions(+), 7 deletions(-) commit e6309c6307179388c5de938bffdb44b83b694f28 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Apr 11 21:03:00 2010 +0100 xcb: Use normal finish to decouple from surface cache. Hook into the standard finishing process for a more robust cache removal mechanism. firefox was able to trigger some double free asserts otherwise. src/cairo-xcb-screen.c | 4 ++- src/cairo-xcb-surface-render.c | 57 +++++++++++++++++++--------------------- 2 files changed, 30 insertions(+), 31 deletions(-) commit e425c44e9c4c1796ccc3557a0368cf3b3a685a31 Author: Andrea Canciani <ranma42@gmail.com> Date: Fri Apr 9 08:32:22 2010 +0200 boilerplate: Compile xlib without xrender cairo_boilerplate_xlib_surface_disable_render() is not defined when compiling without XRender, but it was used nonetheless. Replace it with an empty stub when XRender is not available. boilerplate/cairo-boilerplate-xlib.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) commit 061ea78ad2838450b20d5550a7285823e0d24e1b Author: Andrea Canciani <ranma42@gmail.com> Date: Fri Apr 9 08:28:33 2010 +0200 perf: Correct cairo-perf-diff syntax { cmd-list; } seems to literally be the required syntax. Blanks and ';' are both mandatory. perf/cairo-perf-diff | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 6986970ea5197685274b1fd809d72fbd771c0bab Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Apr 10 17:05:38 2010 +0100 clip: Compile fix for previous clip. PEBKAC. src/cairo-clip.c | 3 --- 1 files changed, 0 insertions(+), 3 deletions(-) commit 0899852c974099da9f8c5e493fa89b8d022646c5 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Apr 10 16:00:45 2010 +0100 clip: Compare the whole clip when testing for equality. Should fix test/clip-contexts src/cairo-clip-private.h | 4 ++++ src/cairo-clip.c | 40 +++++++++++++++++++++++++++++++++++++--- src/cairo-surface-clipper.c | 5 +---- 3 files changed, 42 insertions(+), 7 deletions(-) commit 557016a86a5a4487aeb6ab6392795eb709ee8bb5 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Apr 10 15:59:13 2010 +0100 test: Add clip-contexts This should exercise a bug found by Jeff Muizelaar that cairo-surface-clipper was mistakenly thinking that clip operations on a second context was a no-op as the topmost clip path matched that of the previous context. test/Makefile.am | 1 + test/Makefile.sources | 1 + test/clip-contexts.c | 73 ++++++++++++++++++++++++++++++++++++++++++++ test/clip-contexts.ref.png | Bin 0 -> 98 bytes 4 files changed, 75 insertions(+), 0 deletions(-) commit a9f506493371ac91494488e5ca38e57ceb5a10cb Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Apr 7 22:44:02 2010 +0100 script: Another RGB16_565 warning. src/cairo-script-surface.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) commit 42b5cac7668625c9761113ff72b47af5cfd10377 Author: Adrian Johnson <ajohnson@redneon.com> Date: Wed Apr 7 19:10:15 2010 +0930 PDF-operators: ensure text operations flushed before emitting clip src/cairo-pdf-operators.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) commit c004800fae362ae907ef9d1f822d02c598572161 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Apr 7 22:46:38 2010 +0100 script: Compile without FT_FONT src/cairo-script-surface.c | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-) commit bdf8f50adae67498d5fe36727ed2cd34c0206509 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Apr 7 22:44:02 2010 +0100 script: Another RGB16_565 warning. src/cairo-script-surface.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) commit f5f64317874a3faa4f47688848a499b1e8836cf6 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Apr 7 21:57:22 2010 +0100 perf: Switch between micro and trace benchmarks for cairo-perf-diff perf/cairo-perf-diff | 10 ++++------ 1 files changed, 4 insertions(+), 6 deletions(-) commit 70ca0040fda77b6865c20c94c1b7deaa6e63c481 Author: Andrea Canciani <ranma42@gmail.com> Date: Wed Apr 7 22:54:57 2010 +0200 Actually check for memory allocation failure Clang static analyzer signals "Dereference of null pointer" in case the malloc returns NULL, as the code is checking the wrong pointer. src/cairo-boxes.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit d7f71ac5c209376bacb45199a0eaa3b1937172e9 Author: Benjamin Otte <otte@redhat.com> Date: Wed Apr 7 21:57:38 2010 +0200 region: Make the 2nd argument to intersect and union const src/cairo-region.c | 4 ++-- src/cairo.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit ded3a9639b33b1e637e99250a463bc227c9e60f4 Author: Kristian Rietveld <kris@gtk.org> Date: Tue Dec 29 08:47:09 2009 +0100 quartz: Define cairo_quartz_float_t and use instead of float On Mac OS 10.6 and newer cairo_quartz_float_t is defined to be a CGFloat, resolving issues with the 64-bit builds. Fixes https://bugs.freedesktop.org/show_bug.cgi?id=25814 src/cairo-quartz-private.h | 6 ++++++ src/cairo-quartz-surface.c | 40 +++++++++++++++++++++------------------- 2 files changed, 27 insertions(+), 19 deletions(-) commit 7c2c3f621f9b009b97c5f269bf313be926cc51c7 Author: Andrea Canciani <ranma42@gmail.com> Date: Sat Apr 3 22:54:57 2010 +0200 Correct masking optimization In _cairo_surface_mask() there was an invaild optimization (it failed for surfaces without alpha content). Using _cairo_pattern_is_clear() is the correct way to evaluate if a pattern is clear. Fixes clear-source src/cairo-surface.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit 24fc36c10f5c1c34e3059a8334178743052d7ad2 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Apr 2 08:44:45 2010 +0100 script: Fix endian encoding of '<|' length. Andrea found and fixed (and updated all the traces!) an endian bug where we were encoding a 32bit length inside the compressed string stream. However, this one inside the script backed escaped his notice. src/cairo-script-surface.c | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-) commit 697094488c652ad351301696bba9a384cc70002c Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Apr 2 08:40:28 2010 +0100 test: Add inverse text This is exercising a bug that I have introduced either in the xcb backend or in the driver in my experimental branches. So simple, yet so wrong. test/Makefile.am | 1 + test/Makefile.sources | 1 + test/inverse-text.c | 67 +++++++++++++++++++++++++++++++++++++ test/inverse-text.image16.ref.png | Bin 0 -> 1863 bytes test/inverse-text.ps.ref.png | Bin 0 -> 776 bytes test/inverse-text.ref.png | Bin 0 -> 2150 bytes 6 files changed, 69 insertions(+), 0 deletions(-) commit fe610d559c70ab67f782b122437908ac80788611 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Mar 31 09:33:30 2010 +0100 perf/micro: Show megapixel fill rate during paint. perf/micro/paint-with-alpha.c | 9 ++++++++- perf/micro/paint.c | 8 +++++++- 2 files changed, 15 insertions(+), 2 deletions(-) commit 8f7078eba71dcd2aa70bf97c03ed7b4341260143 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Apr 1 20:42:44 2010 +0100 boilerplate: Allox xlib-fallback to build without RENDER This surface doesn't use RENDER and should produce the same results when cairo-xlib is compiled without any support for RENDER. boilerplate/cairo-boilerplate-xlib.c | 72 ++-------------------------------- 1 files changed, 4 insertions(+), 68 deletions(-) commit d209b40c64bddeb0d830678bc2f84e1016fed879 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Apr 1 20:36:15 2010 +0100 xlib: Rearrange xrender stubs to restore compilation without xrender.h boilerplate/Makefile.win32.features | 8 -------- build/Makefile.win32.features-h | 1 - src/Makefile.win32.features | 8 -------- src/cairo-xlib-xrender-private.h | 14 +++++++------- 4 files changed, 7 insertions(+), 24 deletions(-) commit db4dbb38340e93da616319f00e0f4327d1c1d815 Author: Behdad Esfahbod <behdad@behdad.org> Date: Thu Apr 1 01:53:22 2010 -0400 Improve doc syntax check to allow inline macro docs src/check-doc-syntax.sh | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 00101fa71614fb48de436d6618e26353cf44ef95 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Mar 31 16:19:02 2010 +0100 configure: check -lrt for shm_open() OS/X includes shm_open() in libc, and fails to link if -lrt is specified. So perform the appropriate configure time magic. configure.ac | 5 +++++ util/cairo-sphinx/Makefile.am | 2 +- 2 files changed, 6 insertions(+), 1 deletions(-) commit a81d347c2484e60ceec1d9dc81e1b88724496eaf Author: Andrea Canciani <ranma42@gmail.com> Date: Fri Feb 5 22:34:51 2010 +0100 perf: Fix timestamp computation on MacOS X The OIL routines don't work as expected on MacOS X. The operating system gives access to the timestamp counter through the function mach_absolute_time. Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> perf/cairo-perf-posix.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) commit 55ce0b774869e9fa614c6f9fec7905f7205cb5ff Author: Andrea Canciani <ranma42@gmail.com> Date: Fri Feb 5 22:30:05 2010 +0100 script: Fix script scanner endianness The script interpreter was reading the length of compressed data as an host-endian uint32_t, thus making cairo-script able to correctly read traces that were produced on the same endianness as the one they ran upon, but unsuitable for portabile cairo-scripts. Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> util/cairo-script/cairo-script-scanner.c | 30 +++++++++++++++--------------- 1 files changed, 15 insertions(+), 15 deletions(-) commit 4f617eaf77540ba2140086bd5a19fe6d62503d62 Author: Andrea Canciani <ranma42@gmail.com> Date: Fri Feb 5 22:27:28 2010 +0100 trace: Fix trace endianness Trace files were using host-endian to represent the length of compressed data, making the trace format not portable. Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> util/cairo-trace/trace.c | 15 +++++++++++++++ 1 files changed, 15 insertions(+), 0 deletions(-) commit 35f19bc084792bbad42b86a399103ebfbf407d05 Author: Andrea Canciani <ranma42@gmail.com> Date: Wed Mar 31 12:18:01 2010 +0200 pattern: Fix _gradient_is_opaque() for zero stops _gradient_is_opaque() previously returned TRUE for gradient with no stops, triggering a false optimization in _cairo_gstate_mask(). Fixes test/gradient-zero-stops-mask Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> src/cairo-pattern.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit 01e182194224e0eb7493b2ae3c8367ed455cfd54 Author: Andrea Canciani <ranma42@gmail.com> Date: Wed Mar 31 12:14:25 2010 +0200 test: Add gradient-zero-stops-mask Add a test to check that gradient with no stops are not considered opaque by gstate (and thus masking with them is not optimized to paint). test/Makefile.am | 2 + test/Makefile.sources | 1 + test/gradient-zero-stops-mask.argb32.ref.png | Bin 0 -> 86 bytes test/gradient-zero-stops-mask.c | 59 ++++++++++++++++++++++++++ test/gradient-zero-stops-mask.rgb24.ref.png | Bin 0 -> 86 bytes 5 files changed, 62 insertions(+), 0 deletions(-) commit ce3ad6f41edf86ed6914f4d7f364111eba42ca65 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Mar 31 08:21:17 2010 +0100 xlib: Avoid multiple evaluations inside bswap_*() macro. Fixes: Fonts are not readable if remote display to a machine with different endian. https://bugzilla.mozilla.org/show_bug.cgi?id=526977 Reported-and-tested-by: Ginn Chen <Ginn.Chen@Sun.COM> src/cairo-xlib-surface.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit be4ffa9df275513de3175415ee889b7323499a37 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Mar 28 19:40:54 2010 +0100 doc: Fix some missing '%' in gtk-doc comments src/cairo-surface.c | 4 ++-- src/cairo-svg-surface.c | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) commit 7ab350378e8597e9872dbe390b8454d0a63bff28 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Mar 28 19:38:24 2010 +0100 Silence enumeration warnings following addition of RGB16_565 src/cairo-debug.c | 3 ++ src/cairo-gl-glyphs.c | 2 + src/cairo-png.c | 1 + src/cairo-qt-surface.cpp | 2 + src/cairo-scaled-font.c | 1 + src/cairo-script-surface.c | 15 ++++++++++++ src/cairo-xcb-surface-render.c | 5 ++++ src/cairo-xlib-surface.c | 5 ++++ src/cairo-xml-surface.c | 1 + src/drm/cairo-drm-i915-surface.c | 3 ++ src/drm/cairo-drm-i965-shader.c | 4 +++ src/drm/cairo-drm-i965-surface.c | 1 + src/drm/cairo-drm-intel-surface.c | 1 + src/drm/cairo-drm-intel.c | 12 ++++++++- src/drm/cairo-drm-radeon-surface.c | 1 + util/cairo-script/cairo-script-operators.c | 35 ++++++++++++++++++++++++++++ util/cairo-sphinx/sphinx.c | 1 + util/cairo-trace/trace.c | 25 +++++++++++++++++-- 18 files changed, 113 insertions(+), 5 deletions(-) commit d901692a5550c51fd3eefd307609fb800ef02a95 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Mar 30 15:31:32 2010 +0100 scaled-glyph: Allow removal info fields. Pushed a fraction of a second too soon... Update the scaled_glyph->has_info if the backend clears any field as well. src/cairo-scaled-font.c | 19 ++++++++++++++++--- 1 files changed, 16 insertions(+), 3 deletions(-) commit 5c4b6d520bc7ce7d5193a89bbda44b91f5eb0d4d Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Mar 30 15:26:42 2010 +0100 xcb: Cache whether we have already check a glyph for size. Avoid repeated cairo_scaled_glyph_lookup() and checking of sizes if we have already seen this glyph in this run. src/cairo-xcb-surface-render.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-) commit 1c76e3e9ad1437662bf91ed1d21c4bda8fd50fb4 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Mar 30 15:24:08 2010 +0100 scaled-font: Optimize cairo_scaled_font_lookup() By tracking which fields of information are already available on the scaled_glyph we can more efficiently determine if we already have the requested fields. This reduces from about 6 conditionals to one, and reduces the function overhead by ~20% -- which has a measurable improvement on glyph benchmarks. src/cairo-scaled-font.c | 73 ++++++++++++-------------------------------- src/cairo-types-private.h | 1 + 2 files changed, 21 insertions(+), 53 deletions(-) commit d2ec151e490b227e7f3d6879bf7a893577dfefa5 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Mar 30 15:23:18 2010 +0100 perf/micro: Exercise different sizes and antialising modes with glyphs perf/micro/glyphs.c | 85 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 77 insertions(+), 8 deletions(-) commit 72481acf0d1e8648c5d03ce51f84c639132475a9 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Mar 30 04:10:28 2010 +0100 perf: Compute ops per second Provide a hook for the test to be able to compute the number of ops per second. For instance, the glyphs test uses it to report the number of kiloglyph per second Cairo is able to render. perf/cairo-perf-micro.c | 47 +++++++++++++++++++++++------------- perf/cairo-perf.h | 9 +++++- perf/micro/box-outline.c | 4 +- perf/micro/cairo-perf-cover.c | 5 ++- perf/micro/composite-checker.c | 2 +- perf/micro/dragon.c | 10 ++++---- perf/micro/fill.c | 6 ++-- perf/micro/glyphs.c | 35 +++++++++++++++++++++++++- perf/micro/intersections.c | 8 +++--- perf/micro/long-dashed-lines.c | 2 +- perf/micro/long-lines.c | 8 +++--- perf/micro/mask.c | 18 +++++++------- perf/micro/mosaic.c | 8 +++--- perf/micro/paint-with-alpha.c | 2 +- perf/micro/paint.c | 2 +- perf/micro/pattern_create_radial.c | 2 +- perf/micro/pythagoras-tree.c | 2 +- perf/micro/rectangles.c | 6 ++-- perf/micro/rounded-rectangles.c | 6 ++-- perf/micro/spiral.c | 28 ++++++++++---------- perf/micro/stroke.c | 4 +- perf/micro/subimage_copy.c | 2 +- perf/micro/tessellate.c | 6 ++-- perf/micro/text.c | 2 +- perf/micro/twin.c | 2 +- perf/micro/unaligned-clip.c | 2 +- perf/micro/world-map.c | 2 +- perf/micro/zrusin.c | 4 +- 28 files changed, 142 insertions(+), 92 deletions(-) commit 2a98d0586c19fbb2b555f471895d73f253c4943b Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Mar 15 18:23:23 2010 +0000 drm/i915: Avoid using another unpreserved temporary As we may load from a sampler, we can not use on of the unpreserved temporaries to store the intermediate colour result. src/drm/cairo-drm-i915-shader.c | 26 +++++++++++++++----------- 1 files changed, 15 insertions(+), 11 deletions(-) commit 26f963557bf065fd25b9c4f6652a252735a0fb74 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Mar 15 18:22:06 2010 +0000 drm/i915: Normalize spans opacity value On the generic path I forgot to rescale the alpha value into [0,1]. src/drm/cairo-drm-i915-spans.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) commit 97f8c20727eaeb2dfddb0d4796192cc042eb14fa Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Mar 27 21:52:16 2010 +0000 boilerplate: Create an image16 target In order to exercise the newly restored r5g6g5 support, we need to create an appropriate surface and feed it through the test and performance suites. boilerplate/cairo-boilerplate-directfb.c | 6 ++- boilerplate/cairo-boilerplate-drm.c | 6 ++- boilerplate/cairo-boilerplate-gl.c | 12 +++-- boilerplate/cairo-boilerplate-pdf.c | 4 +- boilerplate/cairo-boilerplate-ps.c | 8 ++-- boilerplate/cairo-boilerplate-quartz.c | 3 + boilerplate/cairo-boilerplate-script.c | 2 +- boilerplate/cairo-boilerplate-skia.c | 6 ++- boilerplate/cairo-boilerplate-svg.c | 8 ++-- boilerplate/cairo-boilerplate-test-surfaces.c | 21 ++++--- boilerplate/cairo-boilerplate-vg.c | 12 +++-- boilerplate/cairo-boilerplate-win32-printing.c | 4 +- boilerplate/cairo-boilerplate-win32.c | 6 ++- boilerplate/cairo-boilerplate-xcb.c | 21 +++++--- boilerplate/cairo-boilerplate-xlib.c | 12 +++-- boilerplate/cairo-boilerplate.c | 39 ++++++++++++-- boilerplate/cairo-boilerplate.h | 1 + perf/cairo-perf-micro.c | 59 +-------------------- perf/cairo-perf-trace.c | 67 +----------------------- 19 files changed, 120 insertions(+), 177 deletions(-) commit 022291be1cbddf4f6722f0bf76ebda6922780276 Author: Oleg Romashin <romaxa@gmail.com> Date: Wed Mar 24 13:12:25 2010 -0400 Add back support for CAIRO_FORMAT_RGB16_565 Due to slow memory speed, 16bpp color depth is still very popular on mobile devices. Maemo5 is also using 16bpp color depth. src/cairo-deprecated.h | 14 -------------- src/cairo-image-surface.c | 16 +++++++++++++++- src/cairo-xlib-display.c | 28 +++++++++++++++++++++++++--- src/cairo.h | 7 ++----- src/cairoint.h | 2 +- 5 files changed, 43 insertions(+), 24 deletions(-) commit 36e12b1952f9bdc52491c5a9bdf8ce155865c362 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Mar 24 12:14:20 2010 +0000 subsurface: Ignore return from _cairo_clip_init_copy() The return is just a hint that the clip is empty, however we are about to immediately apply the surface clip and so do not care for an 'optimised' path. src/cairo-surface-subsurface.c | 15 ++++++++++----- 1 files changed, 10 insertions(+), 5 deletions(-) commit e356e5d18b923d9b0ff83e9460582710f9e515d9 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Mar 24 11:38:19 2010 +0000 recording: Fix leak of clip from snapshots of recording surfaces. src/cairo-recording-surface.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 5b4885f693c0d800da7160770b341166e3bdea61 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Mar 24 11:25:29 2010 +0000 clip: propagate the no-clip through the copy. src/cairo-clip.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit b3e0393161904c2fea62b0198dea551a77201c19 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Mar 24 11:21:36 2010 +0000 clip: Don't reduce all-clip to no-clip. src/cairo-clip.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit b12114f296e4e8db3207ab593a431fd0ca2ee67c Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Mar 24 11:08:38 2010 +0000 snapshot: Finish the clone. Kill ref cycles from snapshots patterns by explicitly calling finish on the cloned surface. src/cairo-surface-snapshot.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit db913d731e50505892697bdc919f9fe146eea6ab Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Mar 24 10:16:58 2010 +0000 xcb: Ensure that we own the glyph cache before use. Sigh. One day, I will enable multiple glyph caches to be attached to a scaled font, but for today, simply avoid the crash. src/cairo-xcb-surface-render.c | 38 +++++++++++++++++++++++++++++--------- 1 files changed, 29 insertions(+), 9 deletions(-) commit 6da3cea3564bd8c5de37bf2244a2dd656202e4ec Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Mar 23 20:53:11 2010 +0000 scaled-font: Destroy the old surface when replacing scaled_glyph->recording src/cairo-scaled-font.c | 11 ++++++++--- 1 files changed, 8 insertions(+), 3 deletions(-) commit 548092fe8c9af1423a10e9566cbc4315d2f28efc Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Mar 23 20:08:04 2010 +0000 script: Free the surface/font bitmaps. src/cairo-script-surface.c | 13 +++++++++++++ 1 files changed, 13 insertions(+), 0 deletions(-) commit 83d1bd9f37da93fbdc586788b6891d0eccdb7cee Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Mar 23 20:04:10 2010 +0000 script: Manually unlink font entries upon destruction As the device is already finished, we can not lock it without raising an error, so we have to open code the destruction of the font entries. Fortunately we can make several simplifying assumptions about the required cleanup as we know the device is also being destroyed. src/cairo-script-surface.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) commit cccf6753ab68b0795351da2626f9e4ecd60c2a2e Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Mar 23 19:45:35 2010 +0000 script: More acquire device fixes. We also need to acquire the device upon finish, similar surface creation and the pagination functions, i.e. the other times outside of the drawing ops that must modify the shared context/device. src/cairo-script-surface.c | 71 ++++++++++++++++++++++++++++++++++---------- 1 files changed, 55 insertions(+), 16 deletions(-) commit 25a77b263d170265a9acf1697793cbbfa07dd852 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Mar 23 16:49:21 2010 +0000 boilerplate: Cleanup the list of backends upon shutdown. boilerplate/cairo-boilerplate.c | 13 +++++++++++++ boilerplate/cairo-boilerplate.h | 3 +++ perf/cairo-perf-micro.c | 2 ++ perf/cairo-perf-trace.c | 2 ++ test/cairo-test.c | 2 ++ 5 files changed, 22 insertions(+), 0 deletions(-) commit 1ddcd5cf31bb47e9ff18ddf94d0a4648fa70a617 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Mar 23 16:43:39 2010 +0000 clip: Remove the redundant _cairo_clip_init_rectangle() As _cairo_clip_init_rectangle() is equivalent and more importantly more clearly written as: _cairo_clip_init(&clip); if (status = _cairo_clip_rectangle(&clip, &rect)) { _cairo_clip_fini(&fini); return status; } perform the transformation and in the process catch a few mistakes along error paths. src/cairo-clip-private.h | 4 ---- src/cairo-clip.c | 30 +++++++++++------------------- src/cairo-paginated-surface.c | 18 +++++++++--------- src/cairo-recording-surface.c | 11 +++++------ src/cairo-surface-wrapper.c | 14 +++++--------- 5 files changed, 30 insertions(+), 47 deletions(-) commit 61ad28fe7d334c63197ae3881d5edd074d63cfec Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Mar 23 10:44:16 2010 +0000 device: Add language binding interfaces. Damien Carbonne reported that cairo_device_t lacked the language binding hooks normally associated with cairo objects. So add the missing get_reference_count, get_user_data and set_user_data. src/cairo-device-private.h | 1 + src/cairo-device.c | 78 ++++++++++++++++++++++++++++++++++++++++++++ src/cairo.h | 14 ++++++++ 3 files changed, 93 insertions(+), 0 deletions(-) commit 8a8c2f6c282c1822dc1a638c2258c8449b1d678b Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Mar 23 10:34:06 2010 +0000 cairo: Typos in docs. A couple of typos reported by Damien Carbonne. src/cairo-recording-surface.c | 10 ++++------ src/cairo.h | 4 ++-- 2 files changed, 6 insertions(+), 8 deletions(-) commit 4c55c87478a2595569f9c1f13657c3d309f31407 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Mar 23 10:05:35 2010 +0000 image: Free traps after conversion from boxes. src/cairo-image-surface.c | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-) commit 07f7bddc30157fed8f9dced00fef44a2307b4b01 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Mar 23 10:05:35 2010 +0000 xcb: Free traps after conversion from boxes. src/cairo-xcb-surface-render.c | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-) commit 181403fb534d0216123043bcd3ee6cff60e1e6fd Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Mar 23 09:38:59 2010 +0000 test/clear-source: Free source after use. test/clear-source.c | 38 ++++++++++++++++++++++---------------- 1 files changed, 22 insertions(+), 16 deletions(-) commit 35432e37c264e1ace764b4a1393d9b8579eb52c0 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Mar 23 09:35:51 2010 +0000 xcb: Destroy reference to clip surface after use. src/cairo-xcb-surface-render.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit 98e3dfbb899f0228fc9987a56af93b012989a27a Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Mar 23 09:35:31 2010 +0000 xcb: Relinquish the xcb connection on finish. src/cairo-xcb-connection.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) commit 638cae3bdeaf0b10d1fd59a519f5d7a05c5b179c Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Mar 23 08:25:13 2010 +0000 xcb: Fix leak of clip rectangle during show-glyphs. src/cairo-xcb-surface-render.c | 15 ++++++--------- 1 files changed, 6 insertions(+), 9 deletions(-) commit 1d4ad787747b5c92c3b062afde5b98c72ac4cc95 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Mar 23 08:20:49 2010 +0000 test/pthread-same-source: Free source after use. test/pthread-same-source.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) commit bfc027ac6d05f489d0d26110c225d2871be0971c Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Mar 23 08:16:57 2010 +0000 test/clip-image: Free image after use. test/clip-image.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit e214f09d633093ce9b2ca0bffce10bc68a6e30b0 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Mar 22 22:20:58 2010 +0000 xcb: Consume the implicit reference for the cached connection on finish src/cairo-xcb-connection.c | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) commit c235543bdfd8b1495cb7ae8f2a82b6267c4d9b84 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Mar 22 22:15:44 2010 +0000 xcb: Destroy reference to local source picture in show-glyphs. src/cairo-xcb-surface-render.c | 14 +++++++++++--- 1 files changed, 11 insertions(+), 3 deletions(-) commit c42cdd2c9d883ef359ac57b65eba4ed15441181d Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Mar 22 20:14:09 2010 +0000 xcb: Gracefully destroy any lingering fallback during finish. A fallback should never persist beyond the flush into the finish, but yet one remains in test/clip-shapes-unaligned-rectangles. For the time been, simply clean up the rogue surface. src/cairo-xcb-surface.c | 19 ++++++++++++------- 1 files changed, 12 insertions(+), 7 deletions(-) commit fd96aa3de2218dcc6671636f35a24738e3cae996 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Mar 22 19:07:31 2010 +0000 gl: Hook in glyph cache finalisation. src/cairo-gl-glyphs.c | 23 ++++++++++++----------- src/cairo-gl-private.h | 7 ++++--- src/cairo-gl-surface.c | 4 ++++ 3 files changed, 20 insertions(+), 14 deletions(-) commit c7511fa7ad932675c8cebba504d3c538ead3c44c Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Mar 22 17:21:38 2010 +0000 drm/intel: Revoke glyph caches on device finish src/drm/cairo-drm-i915-glyphs.c | 2 +- src/drm/cairo-drm-i965-glyphs.c | 2 +- src/drm/cairo-drm-intel-private.h | 1 + src/drm/cairo-drm-intel.c | 18 ++++++++++++------ 4 files changed, 15 insertions(+), 8 deletions(-) commit 9ba73bdfc451d205f411e3dbc8073ae10d58b4f3 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Mar 22 17:17:08 2010 +0000 gl: Decouple cache from scaled-font on context destruction src/cairo-gl-glyphs.c | 8 +++++++- src/cairo-gl-private.h | 4 ++++ src/cairo-gl-surface.c | 14 +++++++++++++- src/cairo-scaled-font-private.h | 2 ++ src/cairo-scaled-font.c | 1 + 5 files changed, 27 insertions(+), 2 deletions(-) commit 7812d095ab7657400be470af8fdc7f20eaedd6c5 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Mar 22 16:46:58 2010 +0000 drm/intel: Replace open-coding of _cairo_rtree_node_remove() src/drm/cairo-drm-intel.c | 17 +++-------------- 1 files changed, 3 insertions(+), 14 deletions(-) commit 48d847162558dc09388942a96ff443c253068d68 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Mar 22 13:05:23 2010 +0000 recording: Cleanup the clip on error. Whilst recording the commands, remember to cleanup the local clip after detecting an error. src/cairo-recording-surface.c | 5 +++++ src/cairo-surface-snapshot.c | 2 ++ 2 files changed, 7 insertions(+), 0 deletions(-) commit c87737c2bf983a8555b08c526050423a5eab5642 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Mar 22 13:04:19 2010 +0000 ps: Skip surface emission if in error state. During finish, if we encountered an error during the construction of the surface, simply proceed to cleanup rather than emit the incomplete and potentially subtly broken output. src/cairo-ps-surface.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit e961cdf568f4551bbd6bca6b7505fc9f9b0805f9 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Mar 22 10:48:48 2010 +0000 image: Special case wholly unbounded fixups. In the event of an empty bounded rectangle, the computation of the unbounded - bounded rectangles leads to negative areas, integer overflow and death. [And similarly for the derived surfaces.] src/cairo-image-surface.c | 24 ++++++++++ src/cairo-xcb-surface-render.c | 62 ++++++++++++++----------- src/drm/cairo-drm-i915-surface.c | 62 ++++++++++++++----------- src/drm/cairo-drm-i965-surface.c | 95 ++++++++++++++++++++----------------- 4 files changed, 145 insertions(+), 98 deletions(-) commit 844d8ea57d69c9a68fbec64f4438953850f7657f Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Mar 22 10:37:18 2010 +0000 surface: Check pattern for error status. Ensure that the error status from patterns is propagated when used by doing so in the surface layer. Similarly check that a surface pattern has not been finished. src/cairo-surface.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 55 insertions(+), 4 deletions(-) commit 213093f43770d078dd146d5a10b9a5803097b8a8 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Mar 22 10:36:47 2010 +0000 ps: Free page on error path. src/cairo-ps-surface.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit c8a8e57d6af7261d70103ddd46f8da409896b5e7 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Mar 21 20:42:34 2010 +0000 script: Use a stack to push/pop recursed line numbers. Still not entirely helpful in the event of recursive parsing without a reference to the file as well as the line number in the event of an exception. util/cairo-script/cairo-script-scanner.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-) commit 4b4de940ee6e76ec9677b5468ebf709c6d2db982 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Mar 21 20:41:18 2010 +0000 script: Remove the version check. When compiling we can depend on whatever version of cairo we need, but we should be wary of checking for runtime compatibility when building standalone. util/cairo-script/cairo-script-operators.c | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-) commit a7cb314b060f6ada855ec75b283ef64bf835824a Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Mar 21 20:40:54 2010 +0000 test/any2ppm: Check for errors after executing script. test/any2ppm.c | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-) commit b73a33b89e43d63a437035a05cf91df5c3b4d186 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Mar 21 20:40:19 2010 +0000 script: Make the test suite run again! src/cairo-script-surface.c | 194 +++++++++++++++++++++++--------------------- 1 files changed, 103 insertions(+), 91 deletions(-) commit 2a59f0af6aab5fe0ebb19195d4c018fc5221016c Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Mar 21 20:38:27 2010 +0000 wrapper: Apply device transform inverse as appropriate. Fixes many failures of the paginated surfaces as they replayed through the recording surfaces. src/cairo-surface-wrapper.c | 89 +++++++++++++++---------------------------- 1 files changed, 31 insertions(+), 58 deletions(-) commit 5720fff827e5149b201a9366179db93ce258b120 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Mar 21 20:37:38 2010 +0000 ps: Destroy the local surface on error. Minor leak of the intermediate surface when converting to an opaque source following an error. src/cairo-ps-surface.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) commit 35f318a59cde9c635036cc14c90878400528882d Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Mar 21 20:36:26 2010 +0000 paginated: Use common is_clear. As equivalent processing to the page_is_blank optimisation done inside the paginated surface is applied by the gstate, remove the redundant code. src/cairo-paginated-surface-private.h | 1 - src/cairo-paginated-surface.c | 34 +-------------------------------- 2 files changed, 1 insertions(+), 34 deletions(-) commit b101c7dab8cdbf7b9321355a8d2311b2f863f011 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Mar 11 01:48:43 2010 +0000 gl: Add EGL interface Enable the EGL backend for GL. boilerplate/Makefile.win32.features | 8 ++ boilerplate/cairo-boilerplate-gl.c | 98 ++++++++++++++++++++ build/Makefile.win32.features-h | 1 + configure.ac | 52 ++++++----- src/Makefile.sources | 1 + src/Makefile.win32.features | 8 ++ src/cairo-egl-context.c | 168 +++++++++++++++++++++++++++++++++++ src/cairo-gl.h | 14 +++ 8 files changed, 327 insertions(+), 23 deletions(-) commit ca6e4e1f91e0a90666551d2fa74cfc04484d4e80 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Mar 11 01:48:08 2010 +0000 spans: Initialise rects->is_bounded for polygon compat. src/cairo-spans.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 6754f1db1716a6570c82e207e21b09a10de120ba Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Mar 10 15:13:00 2010 +0000 gstate: Account for undropped non-transformed glyphs. In the simplest case of pass-through glyphs we made a mistake in propagating the number of glyphs. Reported-by: Christophe de Dinechin <christophe@taodyne.com> src/cairo-gstate.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 5fb36fe5ab2a2b30da213557936122a829493906 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Mar 8 15:32:15 2010 +0000 drm/i965: Acquire device around commit. src/drm/cairo-drm-i915-surface.c | 4 +- src/drm/cairo-drm-i965-shader.c | 13 +++-- src/drm/cairo-drm-i965-surface.c | 106 ++++++++++++++++++++++++++------------ 3 files changed, 82 insertions(+), 41 deletions(-) commit 4083f40fbd085dc2039fe62592cf1239373c7fca Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Mar 7 16:59:57 2010 +0000 glew: don't pull in GL/glu.h src/glew/GL/glew.h | 10 ---------- 1 files changed, 0 insertions(+), 10 deletions(-) commit 473e006ad6ef0959c8a7059aba0689a16a937732 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Mar 6 18:12:36 2010 +0000 test: Add a1-mask-sample Test sampling positions with a NEAREST mask. test/Makefile.am | 1 + test/Makefile.sources | 1 + test/a1-mask-sample.c | 83 +++++++++++++++++++++++++++++++++++++++++++ test/a1-mask-sample.ref.png | Bin 0 -> 148 bytes 4 files changed, 85 insertions(+), 0 deletions(-) commit f79b2ceea4722b5059563be1eb55de617fecc004 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Mar 4 19:52:58 2010 +0000 drm/i915: Discard redundant solitary clips during fill src/drm/cairo-drm-i915-surface.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-) commit 7cea9ae290ba24e4d2f87cef4228cce5fcb3181b Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Mar 4 17:23:55 2010 +0000 drm/i915: Apply more micro-optimisations when targetting CONTENT_ALPHA src/drm/cairo-drm-i915-shader.c | 51 ++++++++++++++++++++++++++++---------- 1 files changed, 37 insertions(+), 14 deletions(-) commit dce8b028cd5b249054e8197a536c29f6ba4110da Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Mar 4 17:13:53 2010 +0000 drm/i915: Adjust clip matrix for clip origin. src/drm/cairo-drm-i915-shader.c | 8 +++----- 1 files changed, 3 insertions(+), 5 deletions(-) commit 8e702044b3816002011488c56f1ec9c6b9682eee Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Mar 4 17:13:02 2010 +0000 drm/i915: Handle clip/combine coords for spans. src/drm/cairo-drm-i915-spans.c | 71 ++++++++++++++++++++++++---------------- 1 files changed, 43 insertions(+), 28 deletions(-) commit e1f0c2e73fa8cda9e38ab182288201fa27a3b363 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Mar 4 17:11:58 2010 +0000 perf: Check for and include unistd.h isatty() and access() require unistd.h, so include it! perf/cairo-perf-trace.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-) commit 271752b944ef0898b5d1be57f26de83c8e40ae3a Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Mar 4 08:24:08 2010 +0000 gl: Pad the gradient texture. Fixes test/linear-gradient-subset src/cairo-gl-surface.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit afe6f4f0519606c4bc7e9b705b0cae75692d7af2 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Mar 3 23:06:43 2010 +0000 drm/i915: Use a preserved temporary to store the radial texcoord. src/drm/cairo-drm-i915-shader.c | 12 ++++++------ 1 files changed, 6 insertions(+), 6 deletions(-) commit 4b2e0478822cb8415be4bac21950dbf03c0f01c8 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Mar 3 21:45:31 2010 +0000 drm/i915: Eliminate redundant radial vertex shader. It is always equivalent to a simple texture transformation, so reduce it to the texture shader. src/drm/cairo-drm-i915-glyphs.c | 13 ----------- src/drm/cairo-drm-i915-private.h | 1 - src/drm/cairo-drm-i915-shader.c | 8 +------ src/drm/cairo-drm-i915-spans.c | 42 +------------------------------------ 4 files changed, 3 insertions(+), 61 deletions(-) commit 51610517982a4cf70ca8d396d0ad4c58a477c5e9 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Mar 3 21:56:56 2010 +0000 drm/i915: Fix encoding of negated operand channels Long ago when converting the pixel shader structs into macros and reducing the code size by ~100k (the inlines were too depth for constant propagation and CSE), I broke the encoding of negated channels. So instead use a single bit to indicate a negation rather than 2s complement (with sign extension into neighbouring channels, oops). The disadvantage is that expressing the negated channel is a little more ugly. src/drm/cairo-drm-i915-private.h | 22 ++++++++++++++-------- src/drm/cairo-drm-i915-shader.c | 16 ++++++++-------- 2 files changed, 22 insertions(+), 16 deletions(-) commit 5b973c670807bda2bb355c90ea817e2a2f092f0b Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Mar 3 21:25:11 2010 +0000 drm/i915: Fix crash with linear-step-function Avoid the potential divide by zero by falling back to pixman rendered gradient textures for such troublesome input. src/drm/cairo-drm-i915-shader.c | 17 +++++++++++------ 1 files changed, 11 insertions(+), 6 deletions(-) commit 404ead7eebafa7ca077e1d012dde0a598b64245a Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Mar 3 21:01:49 2010 +0000 drm/i915: Ensure simple alpha is written to green on alpha-only surfaces. The intricacies of h/w make convoluted s/w. src/drm/cairo-drm-i915-shader.c | 20 ++++++++++++++------ 1 files changed, 14 insertions(+), 6 deletions(-) commit 1f2daf652480ef768f847467d9171b5e4a7f01a3 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Mar 3 20:06:08 2010 +0000 drm/i915: Avoid double multiplication of linear alpha. src/drm/cairo-drm-i915-shader.c | 8 ++------ 1 files changed, 2 insertions(+), 6 deletions(-) commit cdaef58c19a191632473fcbbe688e6231c02b9b2 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Mar 3 18:52:40 2010 +0000 drm/i915: Acquire device before shader commit. src/drm/cairo-drm-i915-shader.c | 2 + src/drm/cairo-drm-i915-surface.c | 111 +++++++++++++++++++++++++------------ 2 files changed, 77 insertions(+), 36 deletions(-) commit dd6f96dd4aeb48262d5af8a3006e6404521c151b Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Mar 3 16:06:25 2010 +0000 drm/i965: Ignore flushing on device finish. src/drm/cairo-drm-i965-surface.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit 3692597567f62dd300e8ce8c43d43ac449616041 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Mar 3 13:56:48 2010 +0000 drm/i965: Merge the constants into the surface stream. As we can use an offset from the surface base for the constant buffers, we need to fold the constants into the surface stream. src/drm/cairo-drm-i965-private.h | 11 ++---- src/drm/cairo-drm-i965-shader.c | 26 +++----------- src/drm/cairo-drm-i965-surface.c | 70 +++----------------------------------- 3 files changed, 14 insertions(+), 93 deletions(-) commit cc585947574f6e17d299a5987ee69162f63d5a52 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Mar 3 23:06:23 2010 +0000 drm/intel: Set the 1D gradient texture to be untiled. src/drm/cairo-drm-intel.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 543cf073643b259096ee2a95d91b9067395a7e09 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Mar 3 21:19:41 2010 +0000 drm/intel: Set default extend mode for rendering gradient subsets. src/drm/cairo-drm-intel.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 521d1c1d2c51bca07db1aed3c7f62d860cece3f4 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Mar 3 20:25:54 2010 +0000 surface: Simplify is_clear logic. As we pre-check whether the operation is a no-op on an already cleared surface, then for all but a paint with CLEAR and no clip, the result is a non-clear surface. src/cairo-surface.c | 22 ++++++++-------------- 1 files changed, 8 insertions(+), 14 deletions(-) commit 017db956644fa1da22033653490f362d1e3e47e0 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Mar 3 20:06:30 2010 +0000 gstate: Use _cairo_pattern_clear for CLEAR. src/cairo-gstate.c | 100 ++++++++++++++++++++++++++++++++-------------------- 1 files changed, 62 insertions(+), 38 deletions(-) commit 70412bba0e9fd0ac6e7343d7aebe953355207aab Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Mar 3 17:34:39 2010 +0000 test: Avoid derefencing a NULL xcb connection test/xcb-surface-source.c | 23 ++++++++++++++--------- 1 files changed, 14 insertions(+), 9 deletions(-) commit 5bfea8447b1b2333218295f51a9474d061192d49 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Mar 3 21:32:13 2010 +0000 test: Add references for rounded-rectangle-{fill,stroke} test/Makefile.am | 2 ++ test/rounded-rectangle-fill.ref.png | Bin 0 -> 787 bytes test/rounded-rectangle-stroke.ref.png | Bin 0 -> 871 bytes 3 files changed, 2 insertions(+), 0 deletions(-) commit 4126d580d8b9db9217ed17aadcce20b14e77a00b Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Mar 2 14:38:36 2010 +0000 surface-fallback: Free traps on composite_trapezoids() error src/cairo-surface-fallback.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 8a59522bbdc61d5c90f1ae55111b5408865755b3 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Mar 2 14:36:16 2010 +0000 surface-fallback: Propagate NOTHING_TO_DO NOTHING_TO_DO is converted to SUCCESS by the surface layer, so clean up the code slightly by reducing the number of checks and conversions. src/cairo-surface-fallback.c | 15 +++------------ 1 files changed, 3 insertions(+), 12 deletions(-) commit f07195860620959c27d43080a7b987e28222735a Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Mar 2 13:57:02 2010 +0000 xlib: Handle a1 image uploads through converter Fixes test/large-source [xlib] src/cairo-xlib-surface.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) commit f979dd22d8f48e6ac7c50372c7d180c3b590dc74 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Mar 2 11:20:11 2010 +0000 image: Don't rely on clip regions being clipped to surface extents. Fixes a crash in test/clip-fill-unbounded [xlib-fallback]. src/cairo-image-surface.c | 32 ++++++++++++++++++++------------ 1 files changed, 20 insertions(+), 12 deletions(-) commit 15d9c5fcd8881b4593ec23633450a4f629b6d42b Author: Alexander Shulgin <alex.shulgin@gmail.com> Date: Sat Feb 20 20:59:32 2010 +0200 Added new MIME type CAIRO_MIME_TYPE_URI and it's support in SVG backend The rationale behind this change is that when someone is trying to draw on a SVG surface using image surface patterns, the resulting SVG file can take up to ridiculous 20 megabytes for 3-4 typical photographic images in a single SVG file. This also can take significant amount of CPU time to complete. The reason for this behaviour is that currently whenever SVG backend needs to emit an image tag for a surface pattern it takes a snapshot of the subject surface, encodes it in PNG, then Base64-encodes and emits the (huge) resulting string. With use of cairo_surface_set_mime_data API this can be somewhat improved by associating JPEG image contents with the corresponding surfaces. Still this doesn't allow for post-processing of involved photographic images without regenerating the SVG file. As SVG specification allows URIs in the image tag's xlink:href attribute, it is possible instead of embedding encoded image data to simply link image files residing physically on the same medium as the generated SVG file: files on disk under common directory, files on a web server at common base URI, etc. To make this happen we add new (unofficial) MIME type "text/x-uri" and let users associate URIs with surfaces through cairo_surface_set_mime_data() API. When SVG backend needs to emit surface contents and it sees "text/x-uri" attached to the surface, it emits this data instead of taking snapshot. The URI data is emitted as is, so correctness check is left solely to the client code. doc/public/cairo-sections.txt | 1 + doc/public/tmpl/cairo-surface.sgml | 7 +++ src/cairo-surface.c | 16 +++++++- src/cairo-svg-surface.c | 72 ++++++++++++++++++++++++++++++++++-- src/cairo.h | 1 + 5 files changed, 92 insertions(+), 5 deletions(-) commit d91bab565c54205f8dd7aa8a9de819dc4bc3551c Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Mar 2 08:12:52 2010 +0000 test: Remove the double-clip from clip-group-shapes A push/pop is an implicit save/restore, so a clip applied inside the group is temporary, whereas a clip applied outside affects both the geometry inside *and* the application of the group when painted. So reset the clip afterwards to get the desired behaviour. test/clip-group-shapes.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) commit e8c819c5227d29dfdf503022339276eb725a3e97 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Mar 1 10:25:01 2010 +0000 Warnings cleanup for CAIRO_FORMAT_INVALID. A few more fixes required case statements to handle the addition of CAIRO_FORMAT_INVALID. src/cairo-qt-surface.cpp | 2 ++ src/drm/cairo-drm-i915-surface.c | 2 ++ src/drm/cairo-drm-i965-shader.c | 2 ++ src/drm/cairo-drm-i965-surface.c | 1 + src/drm/cairo-drm-intel-surface.c | 1 + src/drm/cairo-drm-intel.c | 3 +++ src/drm/cairo-drm-radeon-surface.c | 1 + 7 files changed, 12 insertions(+), 0 deletions(-) commit 1a7ba1a8061c373cd66d15b3a1c8dfada92745ef Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Mon Mar 1 01:23:17 2010 +0200 xcb: Update minimum required versions of libxcb. The new xcb surface uses xcb_writev() and xcb_take_socket() which were introduced in libxcb 1.1.92. The boilerplate in turn uses the major_code and minor_code fields in xcb_generic_error_t, which were introduced in 1.4. boilerplate/cairo-boilerplate-xcb.c | 6 ++++++ configure.ac | 5 ++++- 2 files changed, 10 insertions(+), 1 deletions(-) commit 5b7f4bb241f3191c1589cd714f373719efded56e Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Sun Feb 28 23:31:06 2010 +0200 api: Introduce CAIRO_FORMAT_INVALID formally in the API. We were exposing the actual value of CAIRO_FORMAT_INVALID through API functions already, so it makes sense to just go ahead and put it in the cairo_format_t enum. boilerplate/cairo-boilerplate.c | 2 +- src/cairo-debug.c | 1 + src/cairo-gl-glyphs.c | 6 ++++++ src/cairo-image-surface.c | 6 +++++- src/cairo-png.c | 1 + src/cairo-scaled-font.c | 1 + src/cairo-script-surface.c | 22 ++++++++++++++-------- src/cairo-win32-surface.c | 6 ++++++ src/cairo-xcb-surface-render.c | 3 +++ src/cairo-xlib-display.c | 1 + src/cairo-xlib-surface.c | 3 +++ src/cairo-xml-surface.c | 28 +++++++++------------------- src/cairo.h | 10 ++++++---- src/cairoint.h | 4 ++-- src/drm/cairo-drm-gallium-surface.c | 1 + src/drm/cairo-drm-i915-surface.c | 1 + src/drm/cairo-drm-intel-surface.c | 2 +- src/drm/cairo-drm-intel.c | 11 ++++++++--- src/drm/cairo-drm-radeon-surface.c | 2 +- test/any2ppm.c | 1 + test/png.c | 1 + util/cairo-script/cairo-script-operators.c | 5 +++++ util/cairo-sphinx/sphinx.c | 9 ++++++--- util/cairo-trace/trace.c | 4 ++++ 24 files changed, 88 insertions(+), 43 deletions(-) commit 620cd9c2be4a6bef790e6818652470a5c53d578d Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Feb 28 09:09:20 2010 +0000 image: Allow reduction of repeat modes for unity scaled patterns. src/cairo-image-surface.c | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-) commit 9ecb0f3cec491264041d0d3718595ad95164980a Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Sun Feb 28 01:42:10 2010 +0200 image: Fix bug optimizing surface pattern extend modes. The image surface tries to convert surface pattern's extend modes to EXTEND_NONE, if it can, when converting a cairo_pattern_t to a pixman_image_t. The check was not taking into account the transformation matrix on the pattern, so it was possible to trick it into using EXTEND_NONE by downscaling the source pattern enough. This patch changes the optimization to only take if the pattern has no transformation. Fixes surface-pattern-scale-down-extend-{pad,reflect,repeat} failures in the test suite for the image backend. src/cairo-image-surface.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit 260d7f8ace9dea8ff6b3a70f481e433cf399a3d2 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Sat Feb 27 17:41:28 2010 +0200 test: Test downscaling and extending a surface pattern. Franz Schmid reported a regression in 1.9.6 when downscaling and using EXTEND_REPEAT for an image surface pattern. This patch adds such tests for every extend mode. test/Makefile.sources | 1 + .../surface-pattern-scale-down-extend-none.ref.png | Bin 0 -> 329 bytes test/surface-pattern-scale-down-extend-pad.ref.png | Bin 0 -> 320 bytes ...rface-pattern-scale-down-extend-reflect.ref.png | Bin 0 -> 328 bytes ...urface-pattern-scale-down-extend-repeat.ref.png | Bin 0 -> 330 bytes test/surface-pattern-scale-down-extend.c | 107 ++++++++++++++++++++ 6 files changed, 108 insertions(+), 0 deletions(-) commit ebadc2ed0810d9941a2f44586016073fea90115b Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Sat Feb 27 03:24:55 2010 +0200 test: Add tests covering more clip fast paths in groups. The clip-group-shapes-* tests check that it doesn't matter whether the clip path is set before or after pushing a group using specific types of clip paths (aligned/unaligned rectangles and general paths.) test/Makefile.sources | 1 + test/clip-group-shapes-aligned-rectangles.ref.png | Bin 0 -> 378 bytes test/clip-group-shapes-circles.ref.png | Bin 0 -> 1510 bytes .../clip-group-shapes-unaligned-rectangles.ref.png | Bin 0 -> 415 bytes test/clip-group-shapes.c | 189 ++++++++++++++++++++ 5 files changed, 190 insertions(+), 0 deletions(-) commit e8d0b4fb39eba799e8649df6dd609f6100efb95e Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Feb 26 10:28:23 2010 +0000 gl: Markup internal functions with cairo_private src/cairo-gl-private.h | 22 +++++++++++----------- 1 files changed, 11 insertions(+), 11 deletions(-) commit ef807119ff8ee23c0444f1197f92b06a5caf6024 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Thu Feb 25 13:58:53 2010 +0200 compiler: Explain the slim hidden macros. The slim_hidden_* macro definitions are rather cryptic at first sight and I keep needing to rederive how they work just find out what they're supposed to do. This patch adds a comment explaining how they're used and work. src/cairo-compiler-private.h | 30 ++++++++++++++++++++++++++++++ 1 files changed, 30 insertions(+), 0 deletions(-) commit dcf897967d54f579c737bbcc10af7fa295b586e5 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Sun Feb 21 01:45:30 2010 +0200 test: Fix a wrongly typed return value in scaled-font-zero-matrix. The test was returning a cairo_status_t, but should be returning a cairo_test_status_t instead. When the test failed it was being reported as having crashed, rather than merely failed, because the enum value of CAIRO_TEST_CRASHED happened to be same as the cairo_status_t value of the cairo context at the end of the failing test. test/scaled-font-zero-matrix.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) commit 8bb06915ed6628c6d8978b6c2fec474bbf08d7e9 Author: Benjamin Otte <otte@redhat.com> Date: Tue Feb 23 21:01:13 2010 +0100 image: split cairo_image_surface_coerce() Split into a general cairo_image_surface_coerce() that coerces to one of the 3 supported formats (ARGB32, RGB24, A8) based on content and the more general cairo_image_surface_coerce_to_format() that coerces to a specified format. src/cairo-gl-glyphs.c | 3 +-- src/cairo-gl-surface.c | 3 +-- src/cairo-image-surface.c | 14 ++++++++++++-- src/cairo-png.c | 3 +-- src/cairo-scaled-font.c | 2 +- src/cairo-script-surface.c | 4 +--- src/cairo-svg-surface.c | 4 ++-- src/cairo-type3-glyph-surface.c | 2 +- src/cairo-xcb-surface-render.c | 21 ++++----------------- src/cairoint.h | 8 ++++++-- 10 files changed, 30 insertions(+), 34 deletions(-) commit b7c42b6aaa2dba09ed3ff9ae85eae27bec268713 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Feb 23 19:27:16 2010 +0000 drm: Add missing private headers Reported by: Thomas Jones <thomas.jones@utoronto.ca> src/Makefile.sources | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 6ab5f89571b0252496d58242ed3060a9486d68d4 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Feb 23 08:54:58 2010 +0000 bo-rectangular: Fix incorrect skipping of colinear eo edges Fixes test/bug-bo-rectangular After skipping edges, we need to bd careful to only terminate the box on a closing edge. src/cairo-bentley-ottmann-rectangular.c | 31 ++++++++++++++----------------- 1 files changed, 14 insertions(+), 17 deletions(-) commit 1897156d96d77ff28f585794c1eb1baffa105488 Author: Benjamin Otte <otte@gnome.com> Date: Tue Feb 23 08:41:27 2010 +0000 test: Add bug-bo-rectangular Exercises a bug found in the special case rectangular tessellator with colinear eo edges. test/Makefile.am | 1 + test/Makefile.sources | 1 + test/bug-bo-rectangular.c | 67 +++++++++++++++++++++++++++++++++++++++ test/bug-bo-rectangular.ref.png | Bin 0 -> 950 bytes 4 files changed, 69 insertions(+), 0 deletions(-) commit 21b2457aabf7df2a9f040751cd48e396443262f1 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Feb 22 15:26:37 2010 +0000 fallback: Initialize rects.is_bounded for span renderer. src/cairo-surface-fallback.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 6dd22b767808f721de5d00fe384711ffaa269453 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Feb 22 15:24:08 2010 +0000 gl: Initialise glyphs mask to ensure allocation in absence of stash. src/cairo-gl-glyphs.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 668ac047e6c790b0f8f58c52f169c688caa81678 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Feb 22 14:57:01 2010 +0000 gl: Avoid attempting to create a program on GLSL-incapable h/w for spans src/cairo-gl-shaders.c | 17 ++++++++++++----- src/cairo-gl-surface.c | 6 ++++++ 2 files changed, 18 insertions(+), 5 deletions(-) commit 29df5c91d02276211962a083284feb9a424f0d97 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Feb 22 14:46:18 2010 +0000 gl: Return unsupported for h/w that cannot handle shaders. Remove the ASSERT_NOT_REACHED and propagate the unsupported status so that we fallback to fixed-function gracefully. src/cairo-gl-shaders.c | 28 +++++++++++++++------------- 1 files changed, 15 insertions(+), 13 deletions(-) commit 9f46bad301eff967dc0790fc271d872f8a45cedb Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Feb 22 14:20:34 2010 +0000 bo-rectangular: Prevent invalid read during edge traversal Benjamin Otte tracked down an invalid read triggered by WebKit. The cause is that we attempt to dereference the list_head as an edge as we failed to check that during the skipping of colinear edges we advanced to the end, under the false assumption that there would always be a closing edge in a rectangle. This assumption is broken if the tail rectangles having colinear right edges. src/cairo-bentley-ottmann-rectangular.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) commit 75db4f0ece194b7aa0455509785a300784778ec4 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Mon Feb 22 02:26:47 2010 +0200 text: Fix assert failure from compositing by SOURCE with a mask internally. Change the operator used to upgrade the format of a glyph mask from CAIRO_OPERATOR_SOURCE to CAIRO_OPERATOR_ADD. The _cairo_scaled_font_show_glyphs() function upgrades the pixel format of a glyph mask by calling _cairo_surface_composite() to copy the mask to an image surface of the upgraded destination. The way it was doing it however was to use CAIRO_OPERATOR_SOURCE, a white source pattern and the glyph's rasterised glyph as the mask pattern. This combination isn't supported by _cairo_surface_composite(), which asserts that no mask is present when the operator is SOURCE or CLEAR. Reported by Mikael Magnusson to #cairo on irc.freenode.net. src/cairo-scaled-font.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 20f8f17f0e494a57a6b413be76f9333b42d88014 Author: Andrea Canciani <ranma42@gmail.com> Date: Sat Feb 20 21:42:23 2010 +0100 xcb: Fix compilation without dri2 XCB should be able to compile without xcb-drm. To do so it can include xcb/dri2.h only if xcb-drm is enabled. src/cairo-xcb-surface.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit fc7be0014d91c8536db8a15ae98b5e78c354c160 Author: Carl Worth <cworth@cworth.org> Date: Fri Feb 19 17:39:50 2010 -0800 Update version to 1.9.7. Following the 1.9.6 snapshot. cairo-version.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit cb090136b2b0b89bde69d9575f2f592b46e144e8 Author: Carl Worth <cworth@cworth.org> Date: Fri Feb 19 17:28:29 2010 -0800 Update REFERENCE_IMAGES list for "make distcheck". As usual, "make distcheck" does not work until we update this list. test/Makefile.am | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) commit 20cf7c92b332a5fd28227f0cdaa50e3f1080c038 Author: Carl Worth <cworth@cworth.org> Date: Fri Feb 19 17:24:33 2010 -0800 Update version to 1.9.6 For a new cairo 1.9.6 snapshot. cairo-version.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 1c3d417c30bd60c51512d23440896a6a7f51bf23 Author: Carl Worth <cworth@cworth.org> Date: Fri Feb 19 17:23:16 2010 -0800 NEWS: Add notes for the 1.9.6 snapshot. Based on a very brief reading of the git log. There's certainly a lot of interesting stuff missing here. NEWS | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 112 insertions(+), 2 deletions(-) commit 9057c4b6be5f5cc6f8905e017dde534402ddedda Author: Eric Anholt <eric@anholt.net> Date: Wed Feb 17 12:37:07 2010 -0800 test: Add an option to explicitly specify a test name to the runner. test/cairo-test-runner.c | 14 +++++++++++--- 1 files changed, 11 insertions(+), 3 deletions(-) commit e0a948bd2ff3504f5d8b3b3f2136cd9b86cf8ec6 Author: Eric Anholt <eric@anholt.net> Date: Wed Feb 17 11:48:41 2010 -0800 gl: Be sure to do linear interpolation on gradients. src/cairo-gl-surface.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) commit f1e794956f60a935bfc38ae1c2c2d51d37aadee3 Author: Eric Anholt <eric@anholt.net> Date: Wed Feb 17 11:03:52 2010 -0800 gl: Stop trying to handle first/last stop offset in the gradient shaders. Since moving to pixman for the gradient textures, first=0 and last=1, so there's no need to rescale to 0,1 any more. Shaves 6 Gen4 ISA instructions, including 2 inverses, in the radial fragment shader. src/cairo-gl-private.h | 4 --- src/cairo-gl-shaders.c | 12 ----------- src/cairo-gl-surface.c | 51 ++--------------------------------------------- 3 files changed, 3 insertions(+), 64 deletions(-) commit f813a0243b90ea4151f60f3d13bb6c84d21270df Author: Eric Anholt <eric@anholt.net> Date: Wed Feb 17 10:58:16 2010 -0800 gl: Remove the old unused radial/linear gradients shaders. They're dynamically generated now for source/mask. src/cairo-gl-private.h | 6 --- src/cairo-gl-shaders.c | 117 ------------------------------------------------ 2 files changed, 0 insertions(+), 123 deletions(-) commit 8da843e996bda7152abb217b3f461a8091dbc880 Author: Eric Anholt <eric@anholt.net> Date: Wed Feb 17 10:54:39 2010 -0800 gl: Reduce complexity of radial fragment shaders. This shaves 1 Mesa IR instruction, and 6 Gen4 ISA instructions. src/cairo-gl-shaders.c | 10 ++-------- 1 files changed, 2 insertions(+), 8 deletions(-) commit 89bdc2f8d55d951e15b77e6737c57b208d984b0a Author: Eric Anholt <eric@anholt.net> Date: Thu Feb 4 23:17:59 2010 -0800 gl: Implement draw_image for window targets. Creates a texture and draws with it instead of doing TexSubImage. Open question is whether this wouldn't be better in general. Fixes several failures with ARB_texture_rectangle path due to fallbacks to window drawing. src/cairo-gl-surface.c | 157 ++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 124 insertions(+), 33 deletions(-) commit fcd29473ff71b74bf541199293a966df2232fd63 Author: Eric Anholt <eric@anholt.net> Date: Tue Feb 16 13:47:41 2010 -0800 gl: Fix glyphs texture coordinates for ARB_texture_rectangle. Fixes most of the text testcases to match the ARB_texture_non_power_of_two results. src/cairo-gl-glyphs.c | 16 ++++++++++------ 1 files changed, 10 insertions(+), 6 deletions(-) commit e845450905f373e4fcb9ae4717cfd2c3e6472423 Author: Eric Anholt <eric@anholt.net> Date: Tue Feb 16 13:18:33 2010 -0800 gl: Add GLSL support for ARB_texture_rectangle, and repeat/reflect fallbacks. Most testcases are now passing like the ARB_texture_non_power_of_two case. EXT_texture_rectangle support is dropped in favor of ARB_texture_non_power_of_two. If we have issues with drivers not having that but having EXT (which just lacks the GLSL part of the spec), we can split it out. Right now non-GLSL support in cairo-gl is probably in bad shape anyway and will require someone that cares for it in order to get fixed up. src/cairo-gl-shaders.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ src/cairo-gl-surface.c | 21 +++++++++++++++------ 2 files changed, 59 insertions(+), 6 deletions(-) commit 40294377cb26fab7bcf17ee98b8e4f5bf9778ca2 Author: Dave Airlie <airlied@redhat.com> Date: Sat Jan 30 19:24:31 2010 +1000 gl: initial support for EXT_texture_rectangle extension The only issue is the repeat modes aren't supported for rectangular textures. In any case even with ARB_npot radeon's pre-r600 lie and fail to do repeats anyway. src/cairo-gl-glyphs.c | 25 +++++----- src/cairo-gl-private.h | 1 + src/cairo-gl-surface.c | 124 +++++++++++++++++++++++++++++------------------- 3 files changed, 89 insertions(+), 61 deletions(-) commit 6542a515f04d52d10fdc89ee9abc76e54282a2d8 Author: Eric Anholt <eric@anholt.net> Date: Sun Feb 7 20:26:56 2010 +0100 gl: Reduce the size of the gradient texture for small numbers of stops. This code is stolen straight from cairo-drm-intel.c. This saves a bunch of time calculating interpolated points when we just do interpolation between points at sampling time anyway. Reduces firefox-talos-svg from 47 seconds back to the 42 it was at before the pixman change. This regresses the reported result of huge-radial, but there's no visible difference. src/cairo-gl-surface.c | 63 ++++++++++++++++++++++++++++++++++------------- 1 files changed, 45 insertions(+), 18 deletions(-) commit 3b678a88b0d026bb765fd9cdff92fe7235e19848 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Feb 12 16:44:25 2010 +0000 drm/i915: Set a source for unbounded fixups. src/drm/cairo-drm-i915-surface.c | 52 ++++++++++++++++++++++++++++++-------- 1 files changed, 41 insertions(+), 11 deletions(-) commit 45a275ee29095b69c620ece868411885f4574be9 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Feb 12 14:12:24 2010 +0000 drm/i915: Use correct linear mode for mask. src/drm/cairo-drm-i915-shader.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 37dbf157f354234d04cd4f0c5d069ff0d535e862 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Feb 12 14:08:32 2010 +0000 clip: Avoiding derefencing NULL clip_region src/cairo-image-surface.c | 26 ++++++++++++++------------ src/cairo-xcb-surface-render.c | 26 ++++++++++++++------------ 2 files changed, 28 insertions(+), 24 deletions(-) commit 6995e1d982a3ad84a1b74730ce557840745fcd8e Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Feb 12 14:08:14 2010 +0000 boilerplate: Include X11.h for GL/GLX boilerplate/cairo-boilerplate-gl.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit 5390df961f6dff8e25e5aac21062026a81710d88 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Feb 12 12:20:35 2010 +0000 clip: Restrict composite extents to clip extents Fixes test/clip-rectangle-twice. src/cairo-clip-private.h | 6 +++ src/cairo-clip.c | 84 ++++++++++++++++++++++++++++++++++++++ src/cairo-image-surface.c | 74 ++++++++------------------------- src/cairo-surface-fallback.c | 71 +------------------------------ src/cairo-xcb-surface-render.c | 78 +++++++++-------------------------- src/drm/cairo-drm-i915-surface.c | 47 +-------------------- src/drm/cairo-drm-i965-surface.c | 47 +-------------------- 7 files changed, 137 insertions(+), 270 deletions(-) commit 51047483f462a905567b42275ae061ead4df0a07 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Feb 12 12:18:30 2010 +0000 test: Add clip-twice-rectangle Jeff Muizeelar found another bug with clipping whereby the clip was been incorrectly discarded. test/Makefile.am | 1 + test/Makefile.sources | 1 + test/clip-twice-rectangle.c | 70 +++++++++++++++++++++++++++++++++++++ test/clip-twice-rectangle.ref.png | Bin 0 -> 323 bytes 4 files changed, 72 insertions(+), 0 deletions(-) commit 22b5f78c1c1ae7d289a99a3c52354bba3b9e817f Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Feb 11 10:38:51 2010 +0000 gl: Remove eagle support Eagle is no more, Kristian has superseded it with true EGL support. He is so happy... boilerplate/Makefile.win32.features | 10 -- build/Makefile.win32.features | 1 - build/Makefile.win32.features-h | 3 - build/configure.ac.features | 1 - configure.ac | 12 --- src/Makefile.sources | 2 - src/Makefile.win32.features | 14 --- src/cairo-eagle-context.c | 185 ----------------------------------- src/cairo-gl.h | 12 --- 9 files changed, 0 insertions(+), 240 deletions(-) commit ed4a30b38311e4ce0730ecd6026432f4a1e8ddf7 Author: Benjamin Otte <otte@redhat.com> Date: Wed Feb 10 22:10:23 2010 +0100 build: Add -Wdeclaration-after-statement ... and fix the compile errors from it I get on my build. It's Cairo style to put declarations before the code, so better warn about it. Besides, it eases porting to old compilers like MSVC. build/configure.ac.warnings | 2 +- src/cairo-gl-shaders.c | 8 ++++---- src/cairo-gl-surface.c | 3 ++- src/cairo-xcb-surface-core.c | 3 ++- 4 files changed, 9 insertions(+), 7 deletions(-) commit 4113e455a317785b83324215a6b0156995665989 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Feb 10 21:09:56 2010 +0000 drm/i965: fix use of uninitialized variable whilst dumping errors Cut'n'paste bug from i915 error path. src/drm/cairo-drm-i965-surface.c | 6 ++---- 1 files changed, 2 insertions(+), 4 deletions(-) commit 5d34902c0cb9712179292112fbdb0f06be327fd8 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Feb 10 12:10:16 2010 +0000 script: Compile without mmap Should fix: Bug 26509 - Cairo fails to compile without mmap http://bugs.freedesktop.org/show_bug.cgi?id=26509 As reported by Hib Eris, Cairo files to compile under a mingw32 cross-compiler as we use a structure only defined if HAVE_MMAP unconditionally. util/cairo-script/cairo-script-operators.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) commit fb5af4ae407044d1c0d0144ec13f5951075426a3 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Feb 10 12:00:59 2010 +0000 drm/intel: An interrupted SET_TILING modifies the input parameters If a signal interrupts the SET_TILING ioctl, the tiling and stride values are updated to reflect the current condition of the buffer, so we need to restore those to the desired values before repeating the ioctl. src/drm/cairo-drm-intel.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit 3c66c721d1bb1db6052acf722f609dcbe56431f5 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Feb 9 08:48:42 2010 +0000 qt: Fix compile error. Update after prototype changed for create_similar(), as pointed out by augzilla. src/cairo-qt-surface.cpp | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) commit a1e5b07fa834819b8d9df9fa56758639a08262d7 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Feb 7 20:26:27 2010 +0000 ps: Initialise page bbox to page size src/cairo-ps-surface.c | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) commit 44b6370cb04d27e1ae3e50558a9085d318990938 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Feb 7 19:36:29 2010 +0000 ps: Propagate NOTHING_TO_DO The upper layers should know what to do if there is nothing to be done, so pass on that knowledge. src/cairo-ps-surface.c | 36 ++++-------------------------------- 1 files changed, 4 insertions(+), 32 deletions(-) commit a4793d1331845b85a9c1810035119dfbcffa5082 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Feb 7 19:27:32 2010 +0000 test: Add linear-gradient-subset It was observed that we never actually test the condition that the gradient is only defined for a portion of its range, i.e. the starting offset is >0 and the ending offset is <0. By definition the colour between 0 and start offset is the start color, so check that this behaviour is followed by all backends. test/Makefile.am | 1 + test/Makefile.sources | 1 + test/linear-gradient-subset.c | 127 +++++++++++++++++++++++++++++++++++ test/linear-gradient-subset.ref.png | Bin 0 -> 825 bytes 4 files changed, 129 insertions(+), 0 deletions(-) commit 0f99303cd6d68df79070200a843194a20ad1c597 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Feb 7 12:40:19 2010 +0000 gl: Use pixman to create the gradient texture This is just for consistency as we know that pixman has to handle all the corner cases anyway... src/cairo-gl-surface.c | 147 ++++++++++++++++++++++++++--------------------- 1 files changed, 81 insertions(+), 66 deletions(-) commit b028d287e6effe30833963f4df40db3846e7f4da Author: Eric Anholt <eric@anholt.net> Date: Fri Feb 5 07:25:04 2010 -0800 [gl] Make the VBO once at startup instead of recreating per glyphs/spans. This shaves 2% off of firefox-talos-gfx. src/cairo-gl-glyphs.c | 10 ++-------- src/cairo-gl-private.h | 1 + src/cairo-gl-surface.c | 8 +++----- 3 files changed, 6 insertions(+), 13 deletions(-) commit 696a715702ed18bbe3f7d8b97654a055fa37444e Author: Eric Anholt <eric@anholt.net> Date: Wed Feb 3 21:34:24 2010 -0800 [gl] Add radial gradients acceleration. This is significantly cribbed from Zach Laine's work, but reworked so that gradients can be plugged in as either source or mask operands for any of the paths. src/cairo-gl-private.h | 13 +++++ src/cairo-gl-shaders.c | 77 +++++++++++++++++++++++++++- src/cairo-gl-surface.c | 129 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 216 insertions(+), 3 deletions(-) commit 297b0ab47fa63ef99e65b6834b731c260ea3e941 Author: Eric Anholt <eric@anholt.net> Date: Thu Feb 4 23:57:43 2010 -0800 [gl] When making a boilerplate GLX window, ensure it has alpha. cairo_gl_surface_create_for_window assumes CONTENT_COLOR_ALPHA, so make sure the fbconfig we choose is good enough. Fixes gl-window testcase results to basically match the non-window testcases. boilerplate/cairo-boilerplate-gl.c | 17 +++++++++-------- 1 files changed, 9 insertions(+), 8 deletions(-) commit 6708bc0593a649d083ede429ae73f06691edc018 Author: Eric Anholt <eric@anholt.net> Date: Thu Feb 4 23:47:33 2010 -0800 [gl] When filling a gradient texture, multiply alpha after interpolating. Fixes gradient-alpha testcase. src/cairo-gl-surface.c | 20 +++++++++----------- 1 files changed, 9 insertions(+), 11 deletions(-) commit e426cdd56973ff1114dac5e8b1130180d43631b0 Author: Eric Anholt <eric@anholt.net> Date: Wed Feb 3 16:03:52 2010 -0800 [gl] Implement linear gradients acceleration. This is significantly cribbed from Zach Laine's work, but reworked so that gradients can be plugged in as either source or mask operands for any of the paths. This cuts the runtime of firefox-talos-svg in half on my GM45, at the expense of gradient-alpha. surface-pattern-operator also now fails due to small rasterization differences. src/cairo-gl-glyphs.c | 1 + src/cairo-gl-private.h | 11 ++++ src/cairo-gl-shaders.c | 39 ++++++++++++- src/cairo-gl-surface.c | 139 ++++++++++++++++++++++++++++++++++++++++++++---- 4 files changed, 176 insertions(+), 14 deletions(-) commit 05b18fc09af0e0887c652bd482d68f00bec6d4d7 Author: Eric Anholt <eric@anholt.net> Date: Thu Feb 4 00:12:58 2010 -0800 [gl] Fix create_gradient_texture to premultiply alpha. src/cairo-gl-surface.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit 31e706454b7f0fa510047f582250a7a2db24dd31 Author: Eric Anholt <eric@anholt.net> Date: Wed Feb 3 15:48:40 2010 -0800 [gl] Pull the gradient operand setup out to its own function. Hopefully this clarifies what's going on, including the fallthrough to texture setup on failure. src/cairo-gl-surface.c | 77 ++++++++++++++++++++++++++--------------------- 1 files changed, 43 insertions(+), 34 deletions(-) commit 745f263c1c2d263f7c5e78964bf7181f650301cc Author: T. Zachary Laine <whatwasthataddress@gmail.com> Date: Wed Feb 3 15:38:02 2010 -0800 [gl] Add function for creating a 1D texture to use for gradient lookups. Rather than have fragment shaders try to walk a variable-length set of stops and try to compute the interpolation between the nearest stops per fragment, we make a little texture representing the gradient along a line and have the shaders compute texture coordinates along the line and sample. This should be a good tradeoff between CPU work and GPU work. [anholt: I pulled this set of code out of Zach Laine's tree to use for gradient acceleration, and wanted to make sure attribution was appropriate. I applied only minor tweaking] src/cairo-gl-private.h | 1 + src/cairo-gl-surface.c | 117 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 118 insertions(+), 0 deletions(-) commit 88c8304e9072e5a46890a0eb32fcdbc857eb1a12 Author: Eric Anholt <eric@anholt.net> Date: Wed Feb 3 17:06:45 2010 -0800 [gl] Sanity check the sampler uniform binding. src/cairo-gl-shaders.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) commit 42597170f2303475bb0507f4c6e948eead28c7bd Author: Eric Anholt <eric@anholt.net> Date: Wed Feb 3 16:55:45 2010 -0800 [gl] Convert the spans code to using GLSL when available. src/cairo-gl-private.h | 1 + src/cairo-gl-shaders.c | 35 +++++++++++++++++++++++++++++-- src/cairo-gl-surface.c | 52 +++++++++++++++++++++++++++++------------------ 3 files changed, 65 insertions(+), 23 deletions(-) commit 8d16fb10ea9940c0c9f311ff08c51d572c068c17 Author: Eric Anholt <eric@anholt.net> Date: Wed Feb 3 15:31:57 2010 -0800 [gl] Test for required EXT_bgra and explain what it's used for. src/cairo-gl-surface.c | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-) commit b2d8c9cbf2faec570450d163da140c54e64bbdc8 Author: Eric Anholt <eric@anholt.net> Date: Wed Feb 3 15:25:47 2010 -0800 [gl] Use the shader source choice from operand setup instead of DIY. src/cairo-gl-glyphs.c | 15 +-------------- 1 files changed, 1 insertions(+), 14 deletions(-) commit 0fceac4d52d4b574b9c1f911b83d15dc7e01691d Author: Eric Anholt <eric@anholt.net> Date: Wed Feb 3 12:24:41 2010 -0800 [gl] Move the component alpha composite to using GLSL when available. src/cairo-gl-surface.c | 165 +++++++++++++++++++++++++++++++----------------- 1 files changed, 108 insertions(+), 57 deletions(-) commit 8357336ed7be91ad359d205b1f223486d13215f2 Author: Eric Anholt <eric@anholt.net> Date: Wed Feb 3 11:54:24 2010 -0800 [gl] Move normal composites to using GLSL when available. src/cairo-gl-private.h | 2 + src/cairo-gl-surface.c | 55 ++++++++++++++++++++++++++++++++++------------- 2 files changed, 42 insertions(+), 15 deletions(-) commit 106bc158bafa4eecfd7f79422fc19d267c20dcdb Author: Eric Anholt <eric@anholt.net> Date: Wed Feb 3 15:15:02 2010 -0800 [gl] Move the glyphs shader construction to a more general location. src/cairo-gl-glyphs.c | 213 ++++++++++-------------------------------------- src/cairo-gl-private.h | 48 +++++++---- src/cairo-gl-shaders.c | 200 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 273 insertions(+), 188 deletions(-) commit f475351f75a3ec079628a2eb2643ebc09f0e5cc8 Author: Eric Anholt <eric@anholt.net> Date: Tue Feb 2 19:23:17 2010 -0800 [gl] Use GLSL when available for glyph rendering. This reduces the CPU work in translating fixed function state to shaders, but currently is a slight cost on GM45 because we end up changing shaders more frequently since other parts of the pipeline are doing fixed function still. src/cairo-gl-glyphs.c | 189 +++++++++++++++++++++++++++++++++++++++++++++--- src/cairo-gl-private.h | 19 +++++ src/cairo-gl-shaders.c | 10 ++- src/cairo-gl-surface.c | 58 +++++++++------ 4 files changed, 240 insertions(+), 36 deletions(-) commit 672973caa0c3877b3b9f1c5f5966449ce0d7e239 Author: Eric Anholt <eric@anholt.net> Date: Tue Feb 2 11:17:43 2010 -0800 [gl] Convert fill_rectangles to the new GLSL core/arb wrapper. src/cairo-gl-private.h | 12 +++--- src/cairo-gl-shaders.c | 106 ++++++++++------------------------------------- src/cairo-gl-surface.c | 39 +++++++++--------- 3 files changed, 48 insertions(+), 109 deletions(-) commit 416273db34a715a6fa180f52ddfd11b82b6e8b6c Author: Eric Anholt <eric@anholt.net> Date: Tue Feb 2 10:37:42 2010 -0800 [gl] Cut out the abstraction of GL_VERTEX_SHADER vs GL_VERTEX_SHADER_ARB. They're the same number, so just use the core 2.0 name. src/cairo-gl-shaders.c | 38 ++------------------------------------ 1 files changed, 2 insertions(+), 36 deletions(-) commit 48a5a6eefc923db47c35ad7da3b635d205736716 Author: Eric Anholt <eric@anholt.net> Date: Tue Feb 2 10:36:16 2010 -0800 [gl] Avoid macro obfuscation of the shader impl structures. src/cairo-gl-shaders.c | 52 ++++++++++++++++++++++++++++------------------- 1 files changed, 31 insertions(+), 21 deletions(-) commit 25ccc5dcb036554430b66fb1bf5f74766daa5612 Author: Zach Laine <whatwasthataddress@gmail.com> Date: Thu Jan 14 11:49:04 2010 -0600 [gl] Add shader support code for GL versions < 3.0. Adds cairo_gl_shader_program_t, and functions to manipulate same. Multiple GL entry points for shaders are provided -- one for the pre-GL 2.0 extenstions entry points, and one for GL 2.0. This code is well tested, but currently unused in the GL backend. src/cairo-gl-private.h | 49 ++++ src/cairo-gl-shaders.c | 623 +++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 671 insertions(+), 1 deletions(-) commit a6897ad3867611bd74f8ab7de4b1e8d8d1c12c71 Author: Eric Anholt <eric@anholt.net> Date: Tue Feb 2 11:24:36 2010 -0800 [gl] Check for GLSL support once at context init instead of per draw. src/cairo-gl-private.h | 1 + src/cairo-gl-surface.c | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletions(-) commit b1829a47bff2b03a850d4049f228d2a41e14d6bd Author: Andrea Canciani <ranma42@gmail.com> Date: Wed Feb 3 11:19:26 2010 +0100 [quartz] Unbreak mask fallback path _cairo_quartz_surface_paint will never fail as it falls back to image when CoreGraphics can't handle the requested operation. This means that upon fallback the ClipImage set by the masking code gets ignored, thus the mask fallback path is broken. Using the _cg function ensures that masking is either completely done by CoreGraphics, or the fallback path passes the mask operation to image. src/cairo-quartz-surface.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 597dd24ddcc763281c82790b7677e54dc2db8f92 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Feb 3 08:53:44 2010 +0000 drm/i915: Free potential leak of cloned textures. src/drm/cairo-drm-i915-shader.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) commit 913a31494ec4bd000dfa303e362d8273b6857cfe Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Feb 2 17:49:09 2010 +0000 drm/i915: Increase batch buffer space. src/drm/cairo-drm-i915-private.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 1315323b20398c7c4efa68e4e1c7f6fd6c1d8d91 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Feb 2 17:38:06 2010 +0000 drm/i915: check for batch buffer overflow. Oops, the check for sufficient batch space mysteriously disappeared during the rearrangement. src/drm/cairo-drm-i915-private.h | 3 -- src/drm/cairo-drm-i915-shader.c | 44 ++++++++++++++++++++++++++++++++++++++ src/drm/cairo-drm-i915-surface.c | 35 ------------------------------ 3 files changed, 44 insertions(+), 38 deletions(-) commit e2be50c722347734801468d7d9568a18dbbaaa17 Author: Andrea Canciani <ranma42@gmail.com> Date: Fri Jan 29 12:06:13 2010 +0100 [quartz] Fix UNSUPPORTED operations The fallback path shouldn't be used anymore, thus fallbacks are now handled by passing unsupported ops to the image backend. Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> src/cairo-quartz-surface.c | 234 +++++++++++++++++++++++++++++++++++++------- 1 files changed, 198 insertions(+), 36 deletions(-) commit 3e69c38fe642be467fee0cad166b83006741d55c Author: Andrea Canciani <ranma42@gmail.com> Date: Sun Jan 24 21:59:32 2010 +0100 [quartz] Fix surface to CGImage conversion Snapshotting a surface doesn't produce a cairo_image_surface_t. Acquiring (and later releasing) the surface is needed to access its image data. src/cairo-quartz-surface.c | 75 ++++++++++++++++++++++--------------------- 1 files changed, 38 insertions(+), 37 deletions(-) commit 7aba47e9d87bf09a5fa7e41a3c76c775f28b08f3 Author: Andrea Canciani <ranma42@gmail.com> Date: Mon Jan 25 15:09:51 2010 +0100 [quartz] Silence compiler warnings src/cairo-quartz-surface.c | 16 ++++++++-------- 1 files changed, 8 insertions(+), 8 deletions(-) commit e9b07d194630f3f5e31eef3606f8e4c188a01d5f Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Feb 2 16:28:30 2010 +0000 drm/i915: Don't tile page sized bo. Minor tweak from < to <= so that a page sized bo is also not tiled for those 32x32 pixmaps... src/drm/cairo-drm-i915-surface.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 70ca9dd170ce1cf8941311ec1f3dc117aef141b6 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Feb 2 16:28:09 2010 +0000 drm/i915: Pass the correct length to dump the batchbuffer. src/drm/cairo-drm-i915-surface.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 3266a1a72be9c0a6b6c0014c4b64098507b6d385 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Feb 2 16:27:52 2010 +0000 drm: Handle absence of PCI_ID src/drm/cairo-drm.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 1ecefc53a1d370d9fffb323952dcabeef5b872c6 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Feb 2 16:26:54 2010 +0000 pattern: Zero-length gradients are not necessary empty Fixes: test/linear-step-function If the extend mode is unbounded, then the gradient is also unbound. src/cairo-pattern.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) commit 2a59220aa448cd7416f1851c4c62ca6ac396302d Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Feb 2 16:24:30 2010 +0000 test: Add linear-step-function Another bug identified by Jeff Muizelaar was that the bounds for a zero-length (i.e. it started and stopped at the same point) were miscomputed. This test case exercises that bug. Note: I believe the output is wrong here when padding a zero-length gradient. On the left it should be red, and on the right it should be blue. test/Makefile.am | 1 + test/Makefile.sources | 1 + test/linear-step-function.c | 60 +++++++++++++++++++++++++++++++++++ test/linear-step-function.xfail.png | Bin 0 -> 116 bytes 4 files changed, 62 insertions(+), 0 deletions(-) commit 7b37ba8a49dca39a42b5395e0715d3d0a5a89972 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Feb 2 16:17:13 2010 +0000 clip: Propagate all-clipped when copying Fixes test/clip-empty-save. The all-clipped flag was not being copied to the new clip, which occurs for instance when an empty clip is pushed via a gstate save. src/cairo-clip.c | 7 ++----- 1 files changed, 2 insertions(+), 5 deletions(-) commit 7dc464bb2bd64d1469b7b03afaf2191ee6d9e28b Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Feb 2 16:15:32 2010 +0000 test: Add clip-empty-save Jeff Muizelaar found a bug in _cairo_clip_init_copy() which was not correctly propagating the all-clipped status when an empty clip was saved in the gstate. This test case exercises that bug. test/Makefile.am | 1 + test/Makefile.sources | 1 + test/clip-empty-save.c | 68 ++++++++++++++++++++++++++++++++++++++++++ test/clip-empty-save.ref.png | Bin 0 -> 118 bytes 4 files changed, 70 insertions(+), 0 deletions(-) commit ab3dc7bb31f7f8b8c4d87c1ae62bd946b260c77e Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Jan 31 16:59:07 2010 +0000 csi-replay: compile fix util/cairo-script/csi-replay.c | 32 +++++++++++++++++++++----------- 1 files changed, 21 insertions(+), 11 deletions(-) commit ab605214d151098ad153e8bf74ae0ca71a34c963 Author: Andrea Canciani <ranma42@gmail.com> Date: Mon Feb 1 09:27:16 2010 +0100 Partially revert "Improve stroking of densely dashed styles" This reverts commit 26e9f149063b9e1fdb54fc54fccbefdf04a68190 on cairo-path-stroke. The changes in cairo-path-stroke are not needed anymore since dash pattern approximation is now done in gstate before passing the dash pattern to the backend. src/cairo-path-stroke.c | 24 ++++++------------------ 1 files changed, 6 insertions(+), 18 deletions(-) commit 8ffe0fc3825f0f6bc4d06607f6819ea8c2c2040b Author: Andrea Canciani <ranma42@gmail.com> Date: Sat Jan 30 09:29:48 2010 +0100 Revert "[quartz] Approximate dense dashing patterns" This reverts commit 27701ed8447d4c21b7bf9709a2fc21690b3cdc96. Approximation is now done in gstate. src/cairo-quartz-surface.c | 32 +++++++++++--------------------- 1 files changed, 11 insertions(+), 21 deletions(-) commit 2e91648bcba06832dfa92bd742c32b2f5c1ad989 Author: Andrea Canciani <ranma42@gmail.com> Date: Fri Jan 15 15:46:20 2010 +0100 Approximate dash patterns in gstate Since approximation is only done when the pattern is sub-tolerance, it is acceptable to apply it even for vector backends. By doing it once and for all backends, backends are guaranteed to have non-degenerate input. Acked-by: Adrian Johnson <ajohnson@redneon.com> src/cairo-gstate.c | 13 ++++++++++++- 1 files changed, 12 insertions(+), 1 deletions(-) commit 67f666896cbfd0ac2728c7aa1325a7d0b2c8282d Author: Andrea Canciani <ranma42@gmail.com> Date: Sun Jan 24 22:17:18 2010 +0100 Improve comments style consistency Each line of a multi-line comment should begin with '*'. src/cairo-stroke-style.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 45c795a1820e0317b123e7782cefed6ade8996d7 Author: Andrea Canciani <ranma42@gmail.com> Date: Fri Jan 15 10:44:58 2010 +0100 Improve dash pattern approximation Dash pattern approximation was taking the caps style into account only for coverage computation, but not when computing the new pattern, thus the computed approximation had a higher coverage if the caps style was SQUARE or ROUND. Reviewed-by: M. Joonas Pihlaja <jpihlaja@cc.helsinki.fi> src/cairo-stroke-style.c | 56 ++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 54 insertions(+), 2 deletions(-) commit 8d7841048b079ce2a582ff17c90e82e0081e5f42 Author: Andrea Canciani <ranma42@gmail.com> Date: Sun Jan 17 19:00:47 2010 +0100 Round caps coverage extimate explanation Comment on how the round caps coverage has been computed, explaining the complete procedure. The comments doesn't contain intermediate (verbose and ugly) results, but when executed in a symbolic math program (sage, for example) computes the expected results. Reviewed-by: M. Joonas Pihlaja <jpihlaja@cc.helsinki.fi> src/cairo-stroke-style.c | 16 ++++++++++++++++ 1 files changed, 16 insertions(+), 0 deletions(-) commit 8558cd579059974758bda696c33f08399267d33e Author: Eric Anholt <eric@anholt.net> Date: Thu Jan 28 17:39:34 2010 -0800 [gl] Use GL_MESA_pack_invert to flip get_image of windows around. This doesn't have any fallback for a GL that fails to implement the extension. Fixes 120 testcases for gl-window. src/cairo-gl-surface.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit 11a120fb8477910f5ac63dc1ebde45c276764783 Author: Andrea Canciani <ranma42@gmail.com> Date: Fri Jan 29 14:21:06 2010 +0100 Silence autoconf on Mac OS X Autoconf was complaining that AC_COMPILE_IFELSE and AC_RUN_IFELSE were called before AC_GNU_SOURCE. Moving AC_GNU_SOURCE right after AC_INIT solves this. configure.ac | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 05d4f9b461749f129b17cc97d6e3e6b49fe8e8d9 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 29 11:30:49 2010 +0000 xlib: Compile fix for no fontconfig src/cairo-xlib-screen.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit e3e74641450481e7ad393bbc6fd1a7428be53de1 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 29 11:22:26 2010 +0000 atomic: Fix up compile on PPC with libatomic-ops src/cairo-atomic-private.h | 2 -- src/cairo-atomic.c | 3 ++- 2 files changed, 2 insertions(+), 3 deletions(-) commit e11d2d0b4d646757fcba11631b6db169e2c183b0 Author: Alexander Shulgin <alex.shulgin@gmail.com> Date: Fri Jan 29 09:17:01 2010 +0000 surface: Fix detach mime-data after ecda633f887a10da650b4cd3efb17c861a6f519f Hi, while browsing the git log I've noticed a small mistake in the above commit, where we reversed the order of init/fini required to reset the mime-data array. src/cairo-surface.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 5f0a0088af784157d8efe149ed073c8fa010e648 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Jan 28 13:23:39 2010 +0000 drm-intel: Unmap a full glyph cache. When we swap a full glyph cache for a fresh one, be sure to unmap the old one prior to release. src/drm/cairo-drm-i915-glyphs.c | 2 +- src/drm/cairo-drm-intel.c | 3 +++ 2 files changed, 4 insertions(+), 1 deletions(-) commit 78cd9471200c69c8b3737e859260f4552145d958 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Jan 27 23:45:17 2010 +0000 drm: Paranoid assert that the fallback is released upon finish. src/drm/cairo-drm-surface.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 5aa1191204e3eed6e3e97e23f37a52bbdfffcbce Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Jan 27 23:42:26 2010 +0000 drm-intel: flush in memory modifications to texture. If the surface was written to using a fallback, and so is mapped, we need to flush those modifications by relinquishing the map. So the next time the application tries to write to the surface, those writes are correctly serialised with our reads. src/drm/cairo-drm-i915-shader.c | 14 ++++++++++++++ src/drm/cairo-drm-i965-shader.c | 12 ++++++++++++ 2 files changed, 26 insertions(+), 0 deletions(-) commit a38accb694452fc5dfac63535648656885cd47eb Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Jan 27 23:27:46 2010 +0000 drm-intel: The accumulation bo may be NULL, beware. If we are not accumulating but rendering directly to the output vbo, then the tail bo may not even be allocated, let alone mapped. src/drm/cairo-drm-i915-spans.c | 2 +- src/drm/cairo-drm-i965-glyphs.c | 2 +- src/drm/cairo-drm-i965-spans.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) commit 44734b9d3ba60fb45abb0268a916e40cd688ef6a Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Jan 27 23:17:44 2010 +0000 drm-intel: Assert that the bo is unmapped upon release. Check through error paths to catch a few more places where the mapped bo may have been leaked, and add an assert to abort in case we do leak a mapping. src/drm/cairo-drm-i915-spans.c | 3 +++ src/drm/cairo-drm-i965-glyphs.c | 4 ++++ src/drm/cairo-drm-i965-spans.c | 3 +++ src/drm/cairo-drm-intel.c | 6 +++++- 4 files changed, 15 insertions(+), 1 deletions(-) commit 6848c7c850aa0a710c1409d1fc2cb441d02a2b28 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Jan 27 23:01:37 2010 +0000 drm-i915: Don't tile temporary image textures. As uploading to a tiled buffer is much slower than linear memory, don't unless we expect to reuse the texture. This is not true for sub-image clones, which are single shot affairs. src/drm/cairo-drm-i915-shader.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit f75b7c4c110e880f4bdd578d9180f9afbb1d0034 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Jan 27 19:20:57 2010 +0000 drm/i915: Ensure surface is initialized. Let's try that again, this time remembering to place it on the conjunction of the two branches, so *both* paths are initialized. src/drm/cairo-drm-i915-shader.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) commit 02f20458d1dd48fc4589734fc4b3e0c8bea1ce5c Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Jan 27 19:02:21 2010 +0000 drm-i915: Ensure surface size for clone is initialized. If the surface had a snapshot, then we would have not initialized the surface size and so compute a bogus normalization matrix. src/drm/cairo-drm-i915-shader.c | 7 +++---- 1 files changed, 3 insertions(+), 4 deletions(-) commit c82ff8cbcf27dc20d2b44a988eed1b676d996e8c Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Jan 27 18:48:32 2010 +0000 configure: Enable AC_SYS_LARGEFILE for drm drm makes use of 64bit offsets when mmaping, and so we require the 64bit file interfaces. I had presumed that it would be pulled in with AC_GNU_SOURCE, but no. configure.ac | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 6d2d338ac04b02200e009c9e97d3ce030d07eb6f Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jan 25 22:47:10 2010 +0000 drm: compile fix for cairo_always_inline s/always_inline/cairo_always_inline/ src/drm/cairo-drm-i965-private.h | 8 +- src/drm/cairo-drm-intel-brw-eu.h | 132 ++++++++++++++++++------------------ src/drm/cairo-drm-intel-private.h | 2 +- src/drm/cairo-drm-private.h | 2 +- 4 files changed, 72 insertions(+), 72 deletions(-) commit 58980b4ad60a60923a59370c81d59bb0457a7922 Author: Benjamin Otte <otte@redhat.com> Date: Wed Jan 27 09:56:14 2010 +0100 build: Remove glitz surface glitz is unmaintained and the GL surface is far superior anyway. README | 8 +- boilerplate/Makefile.am | 13 - boilerplate/Makefile.sources | 5 - boilerplate/Makefile.win32.features | 10 - boilerplate/cairo-boilerplate-glitz-agl.c | 191 --- boilerplate/cairo-boilerplate-glitz-glx.c | 265 ---- boilerplate/cairo-boilerplate-glitz-wgl.c | 188 --- build/Makefile.win32.features | 1 - build/Makefile.win32.features-h | 3 - build/configure.ac.features | 1 - configure.ac | 38 - doc/public/cairo-docs.xml | 1 - doc/public/cairo-sections.txt | 1 - doc/public/tmpl/cairo-glitz.sgml | 22 - src/Makefile.sources | 4 - src/Makefile.win32.features | 14 - src/cairo-deprecated.h | 1 - src/cairo-glitz-private.h | 41 - src/cairo-glitz-surface.c | 2450 ----------------------------- src/cairo-glitz.h | 57 - test/Makefile.am | 8 - test/Makefile.sources | 2 - test/glitz-surface-source.argb32.ref.png | Bin 377 -> 0 bytes test/glitz-surface-source.c | 293 ---- test/glitz-surface-source.ps2.ref.png | Bin 376 -> 0 bytes test/glitz-surface-source.ps3.ref.png | Bin 376 -> 0 bytes test/glitz-surface-source.rgb24.ref.png | Bin 301 -> 0 bytes util/cairo.modules | 10 +- 28 files changed, 3 insertions(+), 3624 deletions(-) commit 17ddb1598b3df374b6275d907441f34318b4257f Author: Benjamin Otte <otte@redhat.com> Date: Mon Jan 25 20:17:12 2010 +0100 docs: appease make check src/cairo-gl-surface.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit bac513a85dc8ef2915b2e60d034cf3dbc82a8e0c Author: Benjamin Otte <otte@redhat.com> Date: Mon Jan 25 20:05:56 2010 +0100 build: Fix pthread detection THe pthread.h detection code didn't pass -lpthread or -pthread to Cairo. configure.ac | 10 ++++++++-- 1 files changed, 8 insertions(+), 2 deletions(-) commit 582604f7b6b5b2ab6e681245bc7cde64d4995307 Author: Benjamin Otte <otte@redhat.com> Date: Mon Jan 25 19:22:33 2010 +0100 [png] Simplify coercion code Call _cairo_image_surface_coerce() unconditionally to ensure coercion to one of the standard formats happens even when it's a format we support. src/cairo-png.c | 16 ++++++---------- 1 files changed, 6 insertions(+), 10 deletions(-) commit 002e02715cac9a285fd97e1bb6b068ceebfae3d8 Author: Benjamin Otte <otte@redhat.com> Date: Mon Jan 25 19:42:54 2010 +0100 Remove useless pixman version checks We require pixman >= 0.15.16 in configure.ac, so checks for older versions aren't required anymore. src/cairo-gl-surface.c | 2 -- src/cairo-image-surface.c | 10 ++-------- 2 files changed, 2 insertions(+), 10 deletions(-) commit 5a690ad4acb3687c45c201b3ce92cd3e41bf3b30 Author: Benjamin Otte <otte@gnome.org> Date: Fri Jan 15 13:44:04 2010 +0100 Give cairo_surface_mark_dirty() the slim hidden treatment Fixes test suite failure src/cairo-surface.c | 1 + src/cairoint.h | 1 + 2 files changed, 2 insertions(+), 0 deletions(-) commit 571ab1007571cb8d78fcb5206b43d6b964aa0df1 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jan 25 18:22:03 2010 +0000 xcb: Fix linking with xcb-drm src/cairo-xcb-surface.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit ecda633f887a10da650b4cd3efb17c861a6f519f Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jan 25 18:17:28 2010 +0000 mime-data: Detach existing alternate representations upon modification A major sore point in the current mime-data API is the choice to keep the alternate mime-data representations after the user has actually modifying the primary representation (i.e. has made it a target of a cairo_t and drawn to it). This has been rightly chastised as unexpected behaviour, and given that we already have the mechanism to detach snapshots upon modification, there is no reason not to behave as expected. src/cairo-surface.c | 21 ++++++++++++++++++++- 1 files changed, 20 insertions(+), 1 deletions(-) commit 123bdb086ad9c5725a51791458d31309c69a3f41 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jan 25 16:45:03 2010 +0000 xcb: Make shm optional Trying to build xcb on a system without SHM wrapped by xcb. The right answer would be to build libxcb-shm. The quick answer is to compile out shm support. boilerplate/Makefile.win32.features | 10 ++++++++++ build/Makefile.win32.features | 1 + build/Makefile.win32.features-h | 3 +++ build/configure.ac.features | 1 + configure.ac | 14 +++++++++++++- src/Makefile.sources | 8 ++++++-- src/Makefile.win32.features | 14 ++++++++++++++ src/cairo-xcb-connection.c | 22 ++++++++++++++++++---- src/cairo-xcb-private.h | 21 +++++++++++++++++++++ src/cairo-xcb-surface-core.c | 2 ++ src/cairo-xcb-surface-render.c | 2 ++ src/cairo-xcb-surface.c | 14 ++++++++++++++ 12 files changed, 105 insertions(+), 7 deletions(-) commit e1b3330376c173633e146eb6cf578592d424e4d5 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jan 25 14:48:44 2010 +0000 configure: dri2 is only required for xcb-drm Move the optional dependency on dri2 to the xcb-drm integration where it is required. configure.ac | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) commit 8151c72307e8cb369fbb524de56f87f805efff2b Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jan 25 12:14:39 2010 +0000 xcb: compile errors with lockdep After moving the mutex to the superclass, I forgot to update the references from the lockdep asserts. src/cairo-xcb-connection.c | 6 +++--- src/cairo-xcb-screen.c | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) commit be81d656c53c76032fd3fe11c81402d17ec56327 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jan 25 11:54:24 2010 +0000 clip: Create a fallback clip surface If the destination cannot support a clip surface, then we will need to use an intermediate image surface and trigger fallbacks upon use. src/cairo-clip.c | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) commit c453d8ab704e5f41cb010241efe9bcb9ff886024 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jan 25 11:45:01 2010 +0000 test: Erroneous ref image for big-line xlib-fallback. test/big-line.xlib-fallback.ref.png | Bin 723 -> 0 bytes 1 files changed, 0 insertions(+), 0 deletions(-) commit 180aea76adbb6d5c5909652b7a8cafb7a693e982 Author: Adrian Johnson <ajohnson@redneon.com> Date: Mon Jan 25 20:48:02 2010 +1030 Fix printing of rotated user fonts b7550bf0 introduced a regression when user fonts are rendered to a rotated context. src/cairo-type3-glyph-surface.c | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-) commit abcb9d2c39178620b1847fe6ea6e144602464ecc Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jan 25 09:35:09 2010 +0000 image: Prevent deref of NULL clip_region Another stray from surface-fallback, spotted by Carlos: *INT_cairo_region_get_extents (region=0x0, extents=0xbfffce90) at cairo-region.c:385 385 if (region->status) { (gdb) bt 0 *INT_cairo_region_get_extents (region=0x0, extents=0xbfffce90) at cairo-region.c:385 1 0x0013ba46 in _cairo_image_surface_composite_trapezoids (op=CAIRO_OPERATOR_OVER, pattern=0xbfffdda8, abstract_dst=0x837de10, antialias=CAIRO_ANTIALIAS_DEFAULT, src_x=486, src_y=45, dst_x=0, dst_y=0, width=15, height=25, traps=0x837f100, num_traps=30, clip_region=0x0) at cairo-image-surface.c:4102 2 0x0015d846 in _cairo_surface_composite_trapezoids (op=CAIRO_OPERATOR_OVER, pattern=0xbfffdda8, dst=0x837de10, antialias=CAIRO_ANTIALIAS_DEFAULT, src_x=486, src_y=45, dst_x=0, dst_y=0, width=15, height=25, traps=0x837f100, num_traps=30, clip_region=0x0) at cairo-surface.c:2125 3 0x001607ce in _cairo_surface_fallback_composite_trapezoids (op=CAIRO_OPERATOR_OVER, pattern=0xbfffdda8, dst=0x837db00, antialias=CAIRO_ANTIALIAS_DEFAULT, src_x=486, src_y=45, dst_x=486, dst_y=45, width=15, height=25, traps=0x837fd78, num_traps=30, clip_region=0x0) at cairo-surface-fallback.c:1641 4 0x0015d8a4 in _cairo_surface_composite_trapezoids (op=CAIRO_OPERATOR_OVER, pattern=0xbfffdda8, dst=0x837db00, antialias=CAIRO_ANTIALIAS_DEFAULT, src_x=486, src_y=45, dst_x=486, dst_y=45, width=15, height=25, traps=0x837fd78, num_traps=30, clip_region=0x0) at cairo-surface.c:2137 5 0x001623b0 in _composite_traps_draw_func (closure=0xbfffd350, op=CAIRO_OPERATOR_OVER, src=0xbfffdda8, dst=0x837db00, dst_x=0, dst_y=0, extents=0xbfffdc78, clip_region=0x0) at cairo-surface-fallback.c:546 6 0x00161234 in _clip_and_composite (clip=0x0, op=<value optimized out>, src=0xbfffdda8, draw_func=0x162310 <_composite_traps_draw_func>, draw_closure=0xbfffd350, dst=0x837db00, extents=0xbfffdc78) at cairo-surface-fallback.c:463 7 0x0016205b in _clip_and_composite_trapezoids (src=<value optimized out>, op=CAIRO_OPERATOR_OVER, dst=0x837db00, traps=0xbfffd7bc, antialias=CAIRO_ANTIALIAS_DEFAULT, clip=0x0, extents=0xbfffdc78) at cairo-surface-fallback.c:853 8 0x001626ef in _cairo_surface_fallback_stroke (surface=0x837db00, op=CAIRO_OPERATOR_OVER, source=0xbfffdda8, path=0x1b164c, stroke_style=0x1b1524, ctm=0x1b15b0, ctm_inverse=0x1b15e0, tolerance=0.10000000000000001, antialias=CAIRO_ANTIALIAS_DEFAULT, clip=0x0) at cairo-surface-fallback.c:1173 9 0x0015f2f4 in _cairo_surface_stroke (surface=0x837db00, op=CAIRO_OPERATOR_OVER, source=0xbfffdda8, path=0x1b164c, stroke_style=0x1b1524, ctm=0x1b15b0, ctm_inverse=0x1b15e0, tolerance=0.10000000000000001, antialias=CAIRO_ANTIALIAS_DEFAULT, clip=0xbfffde88) at cairo-surface.c:2041 10 0x00134629 in _cairo_gstate_stroke (gstate=0x1b1514, path=0x1b164c) at cairo-gstate.c:1133 11 0x0012a706 in *INT_cairo_stroke_preserve (cr=0x1b13c0) at cairo.c:2234 12 0x0012a732 in *INT_cairo_stroke (cr=0x1b13c0) at cairo.c:2207 src/cairo-image-surface.c | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletions(-) commit 38ba696c483c289c2522b124ca628ef602c12126 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jan 25 09:20:11 2010 +0000 surface-fallback: We no longer own a reference to the clip surface _cairo_clip_get_surface() now returns a borrowed reference to the cached surface on the clip, so we must not destroy it - as Carlos pointed out when he hit the assert: 12:55 < KaL> ickle: cairo-surface.c:595: cairo_surface_destroy: Assertion `((*&(&surface->ref_count)->ref_count) > 0)' failed. 12:56 < KaL> ickle: trying to render any pdf file with poppler glib demo after installing cairo from git master 13:00 < KaL> ickle: well, it seems it has nothing ot do with poppler, since it crashes in clearlooks src/clearlooks_draw.c:347 src/cairo-surface-fallback.c | 3 --- 1 files changed, 0 insertions(+), 3 deletions(-) commit b3ba610ec05f863a0830a1f30ed130649fbadfbb Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jan 25 09:09:18 2010 +0000 win32: Trivially fix the compile error with printing. _cairo_pattern_is_opaque() now takes the extents over which the operation is defined so that we make exclude the clear pixels that surround EXTEND_NONE surfaces when determining opacity. In order to take full advantage of this we need to start performing an extents query on the operation and pass that down to the analysis... This patch however is just the quick compile fix to pass a NULL and restore the old behaviour. Fixes (with previous commit): Bug 26197 - Cairo doesn't build on windows http://bugs.freedesktop.org/show_bug.cgi?id=26197 src/cairo-win32-printing-surface.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 386ca53f280652983870316593e510cfef59c559 Author: Haakon Sporsheim <haakon.sporsheim@gmail.com> Date: Sun Jan 24 16:43:42 2010 +0100 win32: Compile fix, rename render_row to render_rows. src/cairo-win32-surface.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit a9a73e5df42840148fd4db60cc0d1ba5d137b764 Author: Andrea Canciani <ranma42@gmail.com> Date: Sun Jan 24 23:26:28 2010 +0100 Constrain subsurface creation Force the subsurface extents to be inside the target extents and compose subsubsurfaces offsets correctly. Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> src/cairo-surface-subsurface.c | 36 +++++++++++++++--------------------- 1 files changed, 15 insertions(+), 21 deletions(-) commit b7550bf0f1cafb5cc5df13da50b0cec80313038f Author: Adrian Johnson <ajohnson@redneon.com> Date: Sun Jan 24 22:23:26 2010 +1030 Fix incorrect font scale and glyph position in Type 3 fonts The PDF file referenced by bug 26186 contains a Type 3 font with non identity font matrix and a "1/2" glyph created by drawing the "1" and "2" from a Type 1 font. This combination exposed a bug in the font scale and glyph position in _cairo_type3_glyph_surface_show_glyphs when printing user font glyphs. src/cairo-type3-glyph-surface.c | 21 +++++---------------- 1 files changed, 5 insertions(+), 16 deletions(-) commit ea7fda442c169a159b2e3c51894a0f5e70a13984 Author: Eric Anholt <eric@anholt.net> Date: Fri Jan 22 16:26:38 2010 -0800 [gl] Release the context acquired in surface_create. Fixes assertion failures in many testcases since cf9ea9f2f0ea1e1b42dc1507ed0dac4dfbf5d387 src/cairo-gl-surface.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 20990365f3885457d66b4a8bef865f027a98333f Author: Eric Anholt <eric@anholt.net> Date: Fri Jan 22 16:13:02 2010 -0800 [gl] Emit rectanges a whole primitive at a time. Since the spans rework, we were emitting half a primitive at a time, and if we flushed our VBO full of quads out halfway through, we could end up dropping the primitive and then out of phase. src/cairo-gl-surface.c | 25 +++++++++++-------------- 1 files changed, 11 insertions(+), 14 deletions(-) commit c8a61a3267ffd53d4b4d61e2e2bcb70448ea4d41 Author: Andrea Canciani <ranma42@gmail.com> Date: Sat Jan 23 18:25:11 2010 +0100 Fix compilation on MacOS X Some functions declared in MacOS X headers use the always_inline attribute, thus defining it to be a different expression breaks the build. src/cairo-botor-scan-converter.c | 8 ++++---- src/cairo-compiler-private.h | 4 ++-- src/cairo-gl-private.h | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) commit 90ba1242b61e7b8e5ae2c2ca028d0058f6dabd88 Author: Andrea Canciani <ranma42@gmail.com> Date: Sat Jan 23 18:13:35 2010 +0100 Fix image backend compilation When HAS_ATOMIC_OPS is not defined, cairo-image-surface.c does not compile because _pixman_white_image calls _pixman_image_for_solid which gets defined only later in the code. src/cairo-image-surface.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit 2a466ba07072cb394cfc955cfb0633b0cc278044 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 22 22:26:52 2010 +0000 script: Encode octal values correctly. Oops, we were emitting the octal numerals in reverse order. src/cairo-script-surface.c | 21 +++++++++++++-------- 1 files changed, 13 insertions(+), 8 deletions(-) commit 87529198aa37f5eb5943eb80cc1aae858fdaadd0 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 22 22:21:44 2010 +0000 scaled-font: Mark an error site with _cairo_error() src/cairo-scaled-font-subsets.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 6544f3b25d2120b7bd04f6c956c2ea7b9c101c76 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 22 22:15:25 2010 +0000 ps: Wean off the low-level image composite interface The low-level surface composite interface will disappear in the near future and results in much more ugly code than calling the high level interface - so use it when flattening images into the page background. src/cairo-ps-surface.c | 77 +++++++++++++++++------------------------------- 1 files changed, 27 insertions(+), 50 deletions(-) commit f57cb45fa9274351b36f96eb932a931493b5db94 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 22 22:18:35 2010 +0000 ps: Arguments to fill_extents() were reversed. src/cairo-ps-surface.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 58540405d9bc6581c1d07f17bd5aee330f06d4a2 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 22 22:05:37 2010 +0000 pdf: Arguments to fill_extents() were reversed. src/cairo-pdf-surface.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 34dd80632e4671f0ca245be9db4280db62bdb1f9 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Jan 21 18:39:26 2010 +0000 glew: Silence compiler. src/glew/GL/glew.h | 2 +- src/glew/glew.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) commit cf9ea9f2f0ea1e1b42dc1507ed0dac4dfbf5d387 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Jan 21 18:39:12 2010 +0000 gl: Acquire the context whilst creating surfaces. src/cairo-gl-private.h | 5 ++--- src/cairo-gl-surface.c | 37 ++++++++++++++++++++++++------------- 2 files changed, 26 insertions(+), 16 deletions(-) commit a7e05bd602e7f8bee63f5d32cb95d65628e6e715 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Jan 21 18:22:04 2010 +0000 glew: Do not assume that UNIX == GLX src/glew/glew.c | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) commit c0008242b0f162d8c7717009ba792ed61b2924d1 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 22 21:35:23 2010 +0000 misc: Only use custom lround() under DISABLE_SOME_FLOATING_POINT On my Core2, the library version of lround() is faster than our hand-rolled non-floating point implementation. So only enable our code if we are trying to minimise the number of floating point operations -- even then, it would worth investigating the library performance first. [Just a reminder that optimisation choices will change over time as our hardware and software evolves.] src/cairo-misc.c | 2 ++ src/cairo-ps-surface.c | 4 ++-- src/cairoint.h | 5 +++++ 3 files changed, 9 insertions(+), 2 deletions(-) commit 1236c41072a7966eda7db48a381fd0508e5289be Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 22 21:26:26 2010 +0000 xcb: Refresh. Still an experimental backend, it's now a little too late to stabilise for 1.10, but this should represent a major step forward in its feature set and an attempt to catch up with all the bug fixes that have been performed on xlib. Notably not tested yet (and expected to be broken) are mixed-endian connections and low bitdepth servers (the dithering support has not been copied over for instance). However, it seems robust enough for daily use... Of particular note in this update is that the xcb surface is now capable of subverting the xlib surface through the ./configure --enable-xlib-xcb option. This replaces the xlib surface with a proxy that forwards all operations to an equivalent xcb surface whilst preserving the cairo-xlib API that is required for compatibility with the existing applications, for instance GTK+ and Mozilla. Also you can experiment with enabling a DRM bypass, though you need to be extremely foolhardy to do so. boilerplate/Makefile.win32.features | 20 + boilerplate/cairo-boilerplate-xcb.c | 522 ++++- build/Makefile.win32.features | 2 + build/Makefile.win32.features-h | 6 + build/configure.ac.features | 2 + configure.ac | 26 +- src/Makefile.sources | 22 +- src/Makefile.win32.features | 28 + src/cairo-list-private.h | 7 + src/cairo-mutex-list-private.h | 4 + src/cairo-pattern.c | 41 +- src/cairo-xcb-connection-core.c | 482 ++++ src/cairo-xcb-connection-render.c | 969 ++++++++ src/cairo-xcb-connection-shm.c | 194 ++ src/cairo-xcb-connection.c | 867 +++++++ src/cairo-xcb-private.h | 760 ++++++ src/cairo-xcb-screen.c | 518 ++++ src/cairo-xcb-shm.c | 576 +++++ src/cairo-xcb-surface-cairo.c | 94 + src/cairo-xcb-surface-core.c | 613 +++++ src/cairo-xcb-surface-private.h | 37 + src/cairo-xcb-surface-render.c | 4471 +++++++++++++++++++++++++++++++++++ src/cairo-xcb-surface.c | 3344 +++++++------------------- src/cairo-xcb-xrender.h | 63 - src/cairo-xcb.h | 41 +- src/cairo-xlib-xcb-surface.c | 515 ++++ src/cairoint.h | 16 + test/xcb-surface-source.c | 1 - 28 files changed, 11689 insertions(+), 2552 deletions(-) commit 77afe8491ed7038a8399c01f10d8f062a7239225 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 22 20:48:54 2010 +0000 drm: Add backends for i915 and i965. As proof-of-principle add the nearly working demonstrations of using DRM to render directly with the GPU bypassing both RENDER and GL for performance whilst preserving high quality rendering. The basis behind developing these chip specific backends is that this is the idealised interface that we desire for this chips, and so a target for cairo-gl as we continue to develop both it and our GL stack. Note that this backends do not yet fully pass the test suite, so only use if you are brave and willing to help develop them further. boilerplate/cairo-boilerplate-drm.c | 2 +- src/Makefile.sources | 17 + src/cairo-drm.h | 31 +- src/cairo-misc.c | 57 + src/cairoint.h | 2 + src/drm/cairo-drm-bo.c | 13 +- src/drm/cairo-drm-gallium-surface.c | 3 +- src/drm/cairo-drm-i915-glyphs.c | 534 ++++++ src/drm/cairo-drm-i915-private.h | 1169 ++++++++++++ src/drm/cairo-drm-i915-shader.c | 2674 +++++++++++++++++++++++++++ src/drm/cairo-drm-i915-spans.c | 708 +++++++ src/drm/cairo-drm-i915-surface.c | 1996 ++++++++++++++++++++ src/drm/cairo-drm-i965-glyphs.c | 500 +++++ src/drm/cairo-drm-i965-private.h | 742 ++++++++ src/drm/cairo-drm-i965-shader.c | 2852 +++++++++++++++++++++++++++++ src/drm/cairo-drm-i965-spans.c | 408 ++++ src/drm/cairo-drm-i965-surface.c | 1949 ++++++++++++++++++++ src/drm/cairo-drm-intel-brw-defines.h | 824 +++++++++ src/drm/cairo-drm-intel-brw-eu-emit.c | 1089 +++++++++++ src/drm/cairo-drm-intel-brw-eu-util.c | 121 ++ src/drm/cairo-drm-intel-brw-eu.c | 250 +++ src/drm/cairo-drm-intel-brw-eu.h | 1043 +++++++++++ src/drm/cairo-drm-intel-brw-structs.h | 1328 ++++++++++++++ src/drm/cairo-drm-intel-command-private.h | 909 +++++++++ src/drm/cairo-drm-intel-debug.c | 1208 ++++++++++++ src/drm/cairo-drm-intel-ioctl-private.h | 417 +++++ src/drm/cairo-drm-intel-private.h | 427 ++++- src/drm/cairo-drm-intel-surface.c | 421 ++--- src/drm/cairo-drm-intel.c | 1240 +++++++++---- src/drm/cairo-drm-private.h | 101 +- src/drm/cairo-drm-radeon-private.h | 3 - src/drm/cairo-drm-radeon-surface.c | 281 ++-- src/drm/cairo-drm-radeon.c | 5 +- src/drm/cairo-drm-surface.c | 235 +-- src/drm/cairo-drm.c | 232 ++-- 35 files changed, 22675 insertions(+), 1116 deletions(-) commit b9407af6a4bc792c1bcb52c90aa8a618627bb618 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 22 17:57:41 2010 +0000 image: Implement high level interface. Write a dedicated compositor for pixman so that we avoid the middle-layer syndrome of surface-fallback. The major upshot of this rewrite is that the image surface is now several times quicker for glyph compositing, which dramatically improves performance for text rendering by firefox and friends. It also uses a couple of the new scan convertors, such as the rectangular scan converter for rectilinear paths. Speedups ======== image-rgba firefox-talos-gfx-0 342050.17 (342155.88 0.02%) -> 69412.44 (69702.90 0.21%): 4.93x speedup ███▉ image-rgba vim-0 97518.13 (97696.23 1.21%) -> 30712.63 (31238.65 0.85%): 3.18x speedup ██▏ image-rgba evolution-0 69927.77 (110261.08 19.84%) -> 24430.05 (25368.85 1.89%): 2.86x speedup █▉ image-rgba poppler-0 41452.61 (41547.03 2.51%) -> 21195.52 (21656.85 1.08%): 1.96x speedup █ image-rgba firefox-planet-gnome-0 217512.61 (217636.80 0.06%) -> 123341.02 (123641.94 0.12%): 1.76x speedup ▊ image-rgba swfdec-youtube-0 41302.71 (41373.60 0.11%) -> 31343.93 (31488.87 0.23%): 1.32x speedup ▍ image-rgba swfdec-giant-steps-0 20699.54 (20739.52 0.10%) -> 17360.19 (17375.51 0.04%): 1.19x speedup ▎ image-rgba gvim-0 167837.47 (168027.68 0.51%) -> 151105.94 (151635.85 0.18%): 1.11x speedup ▏ image-rgba firefox-talos-svg-0 375273.43 (388250.94 1.60%) -> 356846.09 (370370.08 1.86%): 1.05x speedup src/cairo-image-surface.c | 3893 ++++++++++++++++++++++++----- src/cairo-mutex-list-private.h | 2 + src/cairo-xcb-surface.c | 10 +- src/cairoint.h | 21 +- test/clip-fill-unbounded.argb32.ref.png | Bin 1615 -> 1607 bytes test/clip-fill-unbounded.rgb24.ref.png | Bin 1312 -> 1304 bytes test/clip-stroke-unbounded.argb32.ref.png | Bin 1703 -> 1694 bytes test/clip-stroke-unbounded.rgb24.ref.png | Bin 1383 -> 1372 bytes test/clip-stroke.ref.png | Bin 1451 -> 1442 bytes test/clipped-group.ref.png | Bin 289 -> 289 bytes test/leaky-dashed-rectangle.ref.png | Bin 347 -> 357 bytes test/scale-offset-image.xfail.png | Bin 9960 -> 9961 bytes test/scale-offset-similar.xfail.png | Bin 9960 -> 9961 bytes test/self-intersecting.ref.png | Bin 213 -> 168 bytes 14 files changed, 3295 insertions(+), 631 deletions(-) commit ec7cc9dea16f94e1e56720be548cf5520ec4708b Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 22 19:27:45 2010 +0000 ft: Tidy computation of transformed bitmap, and mark if CA Discard a redundant clear as the image surface is guaranteed to return a cleared surface that meets pixman/xlib requirements for alignment, and more importantly add the ComponentAlpha flag on the pixman image generated as appropriate. src/cairo-ft-font.c | 31 +++++++++++-------------------- 1 files changed, 11 insertions(+), 20 deletions(-) commit b713510f213d0a83cb0575d6870416a0f13786c9 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 22 17:56:26 2010 +0000 surface-fallback: Convert to composite rectangles src/cairo-surface-fallback.c | 396 ++++++++++++++---------------------------- src/cairo-surface.c | 3 + src/cairo-traps.c | 47 +++--- src/cairoint.h | 3 +- 4 files changed, 158 insertions(+), 291 deletions(-) commit 498c10032ea3f8631a928cd7df96766f2c8ddca4 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 22 16:39:29 2010 +0000 clip: Implement clipping using only the high-level operators. Revamp clipping in preparation for the removal of the low-level interface and promote backend to use the higher levels. The principle here is that the higher level interface gives the backend more scope for choosing better performing primitives. src/cairo-clip-private.h | 6 +- src/cairo-clip.c | 257 ++++++++++++++++++++--------------------- src/cairo-surface-fallback.c | 2 +- 3 files changed, 131 insertions(+), 134 deletions(-) commit 05bb43a00770f17566c80f28faf684597d1b6afb Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 22 16:14:53 2010 +0000 types: Move cairo_scaled_glyph_t to cairo-types-private.h Another step in bringing some sanity to our headers. src/cairo-types-private.h | 25 +++++++++++++++++++++++++ src/cairoint.h | 26 -------------------------- 2 files changed, 25 insertions(+), 26 deletions(-) commit 9c98656fb1ac10a6085c5db5731b6b986af26165 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 22 16:11:48 2010 +0000 color: Add enum value for the largest stock color. Useful if we wish to keep a cache of patterns for the very common stock colors... src/cairo-color.c | 13 +++++++------ src/cairo-types-private.h | 3 ++- 2 files changed, 9 insertions(+), 7 deletions(-) commit b7b65b5315836297f86c54121ea45e469f514312 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 22 16:07:25 2010 +0000 stroke: Convert rectilinear paths to boxes. A quick and efficient method for extracting the set of boxes that represent the path when stroked. src/cairo-path-stroke.c | 170 +++++++++++++++++++++++++++++++++++++---------- src/cairoint.h | 7 ++ 2 files changed, 142 insertions(+), 35 deletions(-) commit fe6a7f4c9e69c86588eca4925a9d65f3086f98bf Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 22 16:02:07 2010 +0000 fill: Convert rectilinear paths to boxes. A quick and efficient method for extracting the set of boxes that represent the path when filled. src/cairo-path-fill.c | 76 ++++++++++++++++++++++++++++++++++++++++++++++++- src/cairoint.h | 5 +++ 2 files changed, 80 insertions(+), 1 deletions(-) commit 6b77567b6ef28710c7707ab82c7fa95c810152d1 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 22 15:54:45 2010 +0000 path: Compute coarse bounds upon construction. Frequently we only need the coarse path bounds, so avoid walking over the list of points once more as we can cheaply track the extents during construction. src/cairo-debug.c | 6 ++ src/cairo-gstate.c | 21 ++++- src/cairo-path-bounds.c | 159 +++++++++++++++++++-------------------- src/cairo-path-fixed-private.h | 4 +- src/cairo-path-fixed.c | 83 +++++++++++++++++++-- src/cairo.c | 2 + src/cairoint.h | 9 +- 7 files changed, 184 insertions(+), 100 deletions(-) commit 6bfcf3ea55964fee1c9b73818c3bb7cdacbc4f82 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 22 15:37:25 2010 +0000 matrix: Do not need to iteratively refine conversion for unity matrices. If the scale factors on the matrix are unity, then the conversion from a cairo_matrix_t to a pixman_matrix_t is exact (within numerical restrictions). src/cairo-matrix.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 13c56800ca6c32a6d8251edec5d3976399b70ea4 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 22 16:33:34 2010 +0000 gstate: Reduce operators Some operators may be equivalent to simpler operations, so make the transformation in the gstate, before calling down into the surface backends. src/cairo-gstate.c | 86 +++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 72 insertions(+), 14 deletions(-) commit 4d52be39bf36a3557f4e7c61dba764b1c6542c8f Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 22 16:09:11 2010 +0000 gstate: Skip ops with a clear mask. As pointed out by Benjamin Otte, these are expensive no-ops that we can trivially detect, just so long as we remember the semantics of extend modes. src/cairo-gstate.c | 6 ++++++ src/cairo-pattern.c | 23 +++++++++++++++++++++++ src/cairoint.h | 3 +++ 3 files changed, 32 insertions(+), 0 deletions(-) commit c2ef45226d6801acb15854de55a5f5bc728ed65d Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 22 14:33:53 2010 +0000 gstate: Check for an invalid matrix before cairo_transform() Similar to the other checks that will generate an invalid matrix prior to performing the operation. src/cairo-gstate.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit 22316a0c17cd3b49ec625814f4e737b3fdc6ca63 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 22 14:33:16 2010 +0000 gstate: White space. A couple of minor coding style violations. src/cairo-gstate.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) commit 29bedde904824098f73b978d73d36b3b5420ac32 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 22 16:19:31 2010 +0000 pattern: Add convenience patterns for stock colours By preallocating in our data segment a couple of solid patterns for the stock colours, it becomes more convenient when using those in surface operations, such as when clearing. src/cairo-clip.c | 29 +++++++++++------------------ src/cairo-gl-glyphs.c | 10 +++------- src/cairo-gstate.c | 9 +++------ src/cairo-pattern.c | 24 ++++++++++++++++++++++++ src/cairo-scaled-font.c | 9 ++------- src/cairo-surface-fallback.c | 14 +++----------- src/cairo-vg-surface.c | 5 ++--- src/cairo-win32-printing-surface.c | 8 ++------ src/cairo-xcb-surface.c | 7 +------ src/cairo-xlib-surface.c | 6 +----- src/cairoint.h | 3 ++- 11 files changed, 54 insertions(+), 70 deletions(-) commit 9eb98e1dc5af7eac896bf469e491063777e678be Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 22 14:14:51 2010 +0000 scaled-font: Use tight glyph bounds when determining overlap. An issue that we currently have is that we have a pessimistic false-positive rate when determining whether glyphs within a string overlap. By using the tight bounds, the overlap detection is arguably less accurate presuming pixel-aligned opacity masks but we make the trade-off for performance. src/cairo-scaled-font.c | 55 +++++++++++++++++++++------------------------- 1 files changed, 25 insertions(+), 30 deletions(-) commit 005b0c4eb2a1fe2c4de31ebe2a3244bea8bd2625 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 22 19:47:58 2010 +0000 test: Add explicit device management to xlib-surface-source Mostly pedagogical example. test/xlib-surface-source.c | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) commit ca02b51ef6d058b6fb492258177f0396a5819e26 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 22 21:57:58 2010 +0000 test: Add an xcb surface source test test/Makefile.am | 6 ++ test/Makefile.sources | 3 + test/xcb-surface-source.argb32.ref.png | Bin 0 -> 377 bytes test/xcb-surface-source.c | 145 ++++++++++++++++++++++++++++++++ test/xcb-surface-source.rgb24.ref.png | Bin 0 -> 301 bytes 5 files changed, 154 insertions(+), 0 deletions(-) commit f0678fb70ceec5db1b7c3f0eb1c5603039daf307 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 22 19:02:39 2010 +0000 test: Tweak aligned of text-rotate Reset the rotation for every quadrant so that the starting rectangles are pixel-aligned. test/text-rotate.c | 68 +++++++++++++++++++++++++++++++++------------- test/text-rotate.ref.png | Bin 16738 -> 16722 bytes 2 files changed, 49 insertions(+), 19 deletions(-) commit 2edd2adafc471f4aa9c417d4bc76cc38466a9ed0 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Jan 19 22:45:59 2010 +0000 test: Exercise scan converters with large rounded rectangles. Having added a specialised scan converter on the premise that it should be better at handling rounded rectangles, ensure that they are indeed rendered correctly. test/Makefile.am | 2 + test/Makefile.sources | 2 + test/rounded-rectangle-fill.c | 65 ++++++++++++++++++++++++++++ test/rounded-rectangle-fill.xlib.ref.png | Bin 0 -> 890 bytes test/rounded-rectangle-stroke.c | 64 +++++++++++++++++++++++++++ test/rounded-rectangle-stroke.xlib.ref.png | Bin 0 -> 860 bytes 6 files changed, 133 insertions(+), 0 deletions(-) commit 5187501e997d6b8c0d135542d21accde9e311281 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Jan 19 22:41:45 2010 +0000 test: Add --track-origins=yes to valgrind flags. Enable origin tracking by default for make check-valgrind. This is slower and consumes more memory than regular valgrind, but the additional information provided about the source of the uninitialised data is often invaluable. test/Makefile.am | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) commit 3a5d71c431dfb251308c3e4e02d2ea4acec90a91 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Jan 19 19:18:54 2010 +0000 pattern: An EXTEND_NONE surface is not opaque if we sample outside Fixes test/clear-source as proposed by Benjamin Otte. src/cairo-gstate.c | 2 +- src/cairo-pattern.c | 33 +++++++- src/cairo-pdf-surface.c | 219 +++++++++++++++++++++++++++------------------ src/cairo-ps-surface.c | 186 +++++++++++++++++++++++---------------- src/cairo-xlib-surface.c | 8 ++- src/cairoint.h | 3 +- 6 files changed, 284 insertions(+), 167 deletions(-) commit b07de014eba1a482747ac235670011972a82d19d Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Jan 19 18:44:34 2010 +0000 spans: Add a rectangular scan converter This is a highly specialised scan converter for the relatively common case of where the input geometry is known to be a series of rectangles. Generally not device aligned (or else we would most likely have chosen an even higher performance path that does not require a coverage mask), this optimised converter can simply compute the analytical coverage by utilising a special case Bentley-Ottmann intersection finder. src/Makefile.sources | 1 + src/cairo-rectangular-scan-converter.c | 723 ++++++++++++++++++++++++++++++++ src/cairo-spans-private.h | 25 ++ 3 files changed, 749 insertions(+), 0 deletions(-) commit e49855497e7214c21c85b03d7ab94e9e008f821b Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Jan 19 18:36:20 2010 +0000 spans: Add a Bentley-Ottmann variant on the Tor scan converter This variant uses the Bentley-Ottmann algorithm to only maintain the active edge list upon edge events and so can efficiently skip areas where no change occurs. This means that it can be much quicker than the Tor algorithm (which is still used to compute the coverages from the active edges) for geometries consisting of long straight lines with few intersections. However due to the computational overhead of the Bentley-Ottmann event processing, for dense curvy paths, simply updating the active edge list in sync with computing the coverages is a win. Due to advantageous adaptive step size, the scan converter can be run at a much higher subsampling with little extra overhead compared with Tor, currently it uses a 256x256 subsampling grid to avoid any impedance mismatch with path precision. Given the current status of implementations, this scan converter [botor] is likely to be advantage where detecting large regions of unchanged span data will result in improved performance, for instance the drm backends which convert the scan data into rectangles. src/Makefile.sources | 1 + src/cairo-botor-scan-converter.c | 2199 ++++++++++++++++++++++++++++++++++++++ src/cairo-compiler-private.h | 11 + src/cairo-fixed-private.h | 22 +- src/cairo-freelist-private.h | 16 + src/cairo-freelist.c | 38 +- src/cairo-spans-private.h | 23 + src/cairoint.h | 9 - 8 files changed, 2299 insertions(+), 20 deletions(-) commit 424dcf296378a107286a164aaf135a34e40c42ac Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Jan 19 19:11:31 2010 +0000 boxes: Enable generation of boxes from rectilinear polygons. Extend the special case rectilinear tessellator to also produce boxes. src/cairo-bentley-ottmann-rectilinear.c | 122 ++++++++++++++++++++++++++----- src/cairoint.h | 5 + 2 files changed, 108 insertions(+), 19 deletions(-) commit b83f1c347dfd77139e9485745d43da946b086b74 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Jan 19 19:09:10 2010 +0000 boxes: Enable tessellation Extend the special case rectangular tessellator to handle generation of cairo_boxes_t. src/cairo-bentley-ottmann-rectangular.c | 778 ++++++++++++++++--------------- src/cairoint.h | 5 + 2 files changed, 416 insertions(+), 367 deletions(-) commit 43beaa5873b9ad10620bfe7ed5f9212a3c44effd Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Jan 19 18:11:26 2010 +0000 boxes: Efficient storage for an array of cairo_box_t. Currently we use cairo_traps_t to also pass around arrays of boxes. This is woefully inefficient in terms of storage, but also means that we repeatedly have to verify that the traps are a set of boxes. By explicitly passing around a cairo_boxes_t we avoid the semantic loss. This will be heavily used in pending commits. src/Makefile.sources | 2 + src/cairo-boxes-private.h | 80 +++++++++++++ src/cairo-boxes.c | 269 +++++++++++++++++++++++++++++++++++++++++++++ src/cairo-types-private.h | 1 + 4 files changed, 352 insertions(+), 0 deletions(-) commit ae25f1c360b79f0b7b1bb73e9ebc47eb794d8007 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Jan 19 17:11:55 2010 +0000 Alter definition of cairo_composite_rectangles_t This is a more useful definition that is able to individually track the rectangles that compose the composite operation. This will be used by the specialist compositors as a means to perform the common extents determination for an operation. src/Makefile.sources | 2 + src/cairo-composite-rectangles-private.h | 105 ++++++++++++++++ src/cairo-composite-rectangles.c | 197 ++++++++++++++++++++++++++++++ src/cairo-gl-surface.c | 19 ++- src/cairo-image-surface.c | 31 +++--- src/cairo-misc.c | 41 ++++++ src/cairo-rectangle.c | 21 --- src/cairo-spans.c | 29 +++-- src/cairo-surface-fallback.c | 13 +- src/cairo-types-private.h | 24 +---- src/cairo-win32-surface.c | 21 ++-- src/cairoint.h | 14 +- 12 files changed, 417 insertions(+), 100 deletions(-) commit 9cd9137843f8f1c3d32bedb6510259ab3638a2c5 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Jan 19 17:11:11 2010 +0000 spans: Pass multiple rows of identical spans to the renders. It is quite common amongst our geometry to have rows of repeated span data, for example a rounded rectangle will have repeating data between the top and bottom rounded corners. By passing the repeat length to the renderers, they may be able to use that information more efficiently, and the scan converters can avoid recomputing the same span data. src/cairo-gl-surface.c | 141 +++++++++-------- src/cairo-image-surface.c | 79 ++++------ src/cairo-spans-private.h | 24 ++-- src/cairo-spans.c | 6 +- src/cairo-tor-scan-converter.c | 343 +++++++++++++++++++++++++--------------- src/cairo-win32-surface.c | 13 ++- src/cairoint.h | 4 +- 7 files changed, 349 insertions(+), 261 deletions(-) commit a04873c0770df5eaed078493df5216ca28322de7 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jan 18 23:40:00 2010 +0000 qt: Trivial compile fix for boilerplate. boilerplate/cairo-boilerplate-qt.cpp | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 0f09349dd85b15d5de14248e2f3f17a91fbcbb5e Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jan 18 23:37:36 2010 +0000 gl: Exercise Window destinations with boilerplate Add a gl-window boilerplate target to exercise using GL to render to a visible Drawable -- for instance, a window has a different coordinate system to a framebuffer... boilerplate/cairo-boilerplate-gl.c | 99 ++++++++++++++++++++++++++++++++++++ 1 files changed, 99 insertions(+), 0 deletions(-) commit ccea7fd7c1a2d7144e892c19615488e368529bc0 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jan 18 23:37:11 2010 +0000 gl: Port to cairo_device_t boilerplate/cairo-boilerplate-gl.c | 28 +++-- src/cairo-eagle-context.c | 25 +++-- src/cairo-gl-glyphs.c | 46 +++++--- src/cairo-gl-private.h | 44 +++++--- src/cairo-gl-surface.c | 222 ++++++++++++++++-------------------- src/cairo-gl.h | 22 +--- src/cairo-glx-context.c | 25 +++-- 7 files changed, 211 insertions(+), 201 deletions(-) commit 3acd520c9dec89e72d7ff61adb1ae30bab12e256 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jan 18 23:11:19 2010 +0000 xml: Port to cairo_device_t src/cairo-xml-surface.c | 210 ++++++++++++++++++++++++----------------------- src/cairo-xml.h | 13 +-- util/trace-to-xml.c | 7 +- 3 files changed, 115 insertions(+), 115 deletions(-) commit 49ab86772a44d7a044464d875324bd0af96af728 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jan 18 22:43:24 2010 +0000 script: Port cairo_script_context_t to cairo_device_t Use the unifying cairo_device_t for cairo_script_context_t and replace. boilerplate/cairo-boilerplate-script.c | 6 +- boilerplate/cairo-boilerplate.c | 6 +- src/cairo-script-surface.c | 491 +++++++++++++++++--------------- src/cairo-script.h | 35 +-- test/cairo-test-trace.c | 7 +- util/cairo-fdr/fdr.c | 10 +- util/cairo-script/csi-trace.c | 11 +- util/cairo-sphinx/fdr.c | 4 +- util/cairo-sphinx/sphinx.c | 17 +- util/cairo-trace/trace.c | 8 +- 10 files changed, 312 insertions(+), 283 deletions(-) commit f617d5fc982f749d0981c81c1de1be8dc3632717 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jan 18 21:53:42 2010 +0000 Add cairo_device_t The device is a generic method for accessing the underlying interface with the native graphics subsystem, typically the X connection or perhaps the GL context. By exposing a cairo_device_t on a surface and its various methods we enable finer control over interoperability with external interactions of the device by applications. The use case in mind is, for example, a multi-threaded gstreamer which needs to serialise its own direct access to the device along with Cairo's across many threads. Secondly, the cairo_device_t is a unifying API for the mismash of backend specific methods for controlling creation of surfaces with explicit devices and a convenient hook for debugging and introspection. The principal components of the API are the memory management of: cairo_device_reference(), cairo_device_finish() and cairo_device_destroy(); along with a pair of routines for serialising interaction: cairo_device_acquire() and cairo_device_release() and a method to flush any outstanding accesses: cairo_device_flush(). The device for a particular surface may be retrieved using: cairo_surface_get_device(). The device returned is owned by the surface. src/Makefile.sources | 2 + src/cairo-analysis-surface.c | 9 +- src/cairo-beos-surface.cpp | 5 +- src/cairo-device-private.h | 85 +++++++++++ src/cairo-device.c | 265 +++++++++++++++++++++++++++++++++++ src/cairo-directfb-surface.c | 2 + src/cairo-gl-surface.c | 1 + src/cairo-glitz-surface.c | 4 +- src/cairo-image-surface.c | 4 +- src/cairo-misc.c | 4 + src/cairo-os2-surface.c | 1 + src/cairo-paginated-surface.c | 4 +- src/cairo-pdf-surface.c | 4 +- src/cairo-ps-surface.c | 4 +- src/cairo-qt-surface.cpp | 7 +- src/cairo-quartz-image-surface.c | 1 + src/cairo-quartz-surface.c | 6 +- src/cairo-recording-surface.c | 9 +- src/cairo-script-surface.c | 1 + src/cairo-skia-surface.cpp | 1 + src/cairo-spans.c | 4 + src/cairo-surface-private.h | 1 + src/cairo-surface-snapshot.c | 1 + src/cairo-surface-subsurface.c | 1 + src/cairo-surface.c | 29 ++++ src/cairo-svg-surface.c | 4 +- src/cairo-tee-surface.c | 1 + src/cairo-type3-glyph-surface.c | 4 +- src/cairo-types-private.h | 1 + src/cairo-vg-surface.c | 1 + src/cairo-win32-printing-surface.c | 1 + src/cairo-win32-surface.c | 8 +- src/cairo-xcb-surface.c | 4 +- src/cairo-xlib-surface.c | 4 +- src/cairo-xml-surface.c | 1 + src/cairo.h | 117 +++++++++++++++ src/cairoint.h | 1 + src/drm/cairo-drm-gallium-surface.c | 2 + src/drm/cairo-drm-intel-surface.c | 5 +- src/drm/cairo-drm-radeon-surface.c | 5 +- src/test-fallback-surface.c | 4 +- src/test-fallback16-surface.c | 1 + src/test-null-surface.c | 5 +- src/test-paginated-surface.c | 4 +- src/test-wrapping-surface.c | 1 + util/cairo-trace/trace.c | 2 + 46 files changed, 607 insertions(+), 24 deletions(-) commit 82f8aa548d70acf51b319000d7a5c176fc73da64 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jan 18 22:02:09 2010 +0000 Recursive mutex. Implement a recursive mutex which will be needed for cairo_device_t. In particular only pthreads by default is a non-recursive mutex (to my knowledge) - both win32 critical sections and mutexes on Quartz are recursive. src/cairo-mutex-impl-private.h | 28 ++++++++++++++++++++++++++++ src/cairo-mutex-type-private.h | 9 ++++++++- 2 files changed, 36 insertions(+), 1 deletions(-) commit d2f251f84b326c5f8825c9a631ea729f21891580 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jan 18 22:12:23 2010 +0000 configure: Globally define AC_GNU_SOURCE We were using _GNU_SOURCE throughout the codebase, so simply define it once during configure. This is the easiest method to enable recursive mutexes using pthreads, as required in a pending patch. boilerplate/cairo-boilerplate-pdf.c | 4 ++++ boilerplate/cairo-boilerplate-ps.c | 4 ++++ configure.ac | 3 +++ src/cairo-gstate.c | 2 -- src/cairo-matrix.c | 2 -- src/cairo-scaled-font.c | 2 -- 6 files changed, 11 insertions(+), 6 deletions(-) commit 934d0d0d6585eb7638c7db597c40dd821092c034 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jan 18 19:05:34 2010 +0000 Real zero-copy cow snapshotting The first iteration of COW snapshotting always made an initial copy when the snapshot was requested (and reused that copy until the surface was modified). However, in a few circumstances we can avoid even that copy so long as the surface is still alive and unmodified between the snapshotting and its use. In order to do so, we need a new proxy surface that can automatically perform the copy if the target should disappear prior to use. src/Makefile.sources | 2 + src/cairo-paginated-surface.c | 7 +- src/cairo-surface-snapshot-private.h | 48 +++++++ src/cairo-surface-snapshot.c | 225 ++++++++++++++++++++++++++++++++++ src/cairo-surface.c | 101 ++-------------- src/cairo-types-private.h | 2 + 6 files changed, 291 insertions(+), 94 deletions(-) commit 6b3e19aa434d159db7878b2a7fb28a026b2d1756 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jan 18 19:12:25 2010 +0000 Remove content matching from snapshot lookup. This was never used, so remove the complexity from the interface. src/cairo-recording-surface.c | 3 +-- src/cairo-surface.c | 23 +++++++---------------- src/cairo-vg-surface.c | 3 +-- src/cairoint.h | 3 +-- src/drm/cairo-drm-intel-surface.c | 3 +-- src/drm/cairo-drm-radeon-surface.c | 3 +-- 6 files changed, 12 insertions(+), 26 deletions(-) commit dc8290814c0e98b38828953bac6dd0893c31c9ad Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jan 18 18:06:51 2010 +0000 Add subsurface. A subsurface is a region of another surface that may be used either to restrict the writable area of a context or the readable extents of a source. Whilst writing, access to the exterior of the subsurface is prevented via clipping and when used as a source reads from the exterior of the subsurface are governed via the extend mechanism of the pattern. src/Makefile.sources | 2 + src/cairo-surface-subsurface-private.h | 48 ++++ src/cairo-surface-subsurface.c | 464 ++++++++++++++++++++++++++++++++ src/cairo-types-private.h | 4 +- src/cairo.h | 7 + test/Makefile.am | 3 + test/Makefile.sources | 3 + test/subsurface-repeat.c | 72 +++++ test/subsurface-repeat.ref.png | Bin 0 -> 197 bytes test/subsurface-similar-repeat.c | 83 ++++++ test/subsurface-similar-repeat.ref.png | Bin 0 -> 197 bytes test/subsurface.c | 80 ++++++ test/subsurface.ref.png | Bin 0 -> 1597 bytes 13 files changed, 765 insertions(+), 1 deletions(-) commit b8eacbfae1c155f412d84120411103cb610e383b Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jan 18 18:09:11 2010 +0000 Add surface-offset internal API. This is a simplified version of the wrapping surface where the target surface is just a subsurface onto which we wish to draw the current operation. In particular this is useful for the subsurface API as well as fallbacks. src/Makefile.sources | 2 + src/cairo-surface-offset-private.h | 95 ++++++++++ src/cairo-surface-offset.c | 354 ++++++++++++++++++++++++++++++++++++ 3 files changed, 451 insertions(+), 0 deletions(-) commit f2c32d01836379766bc287edf77381123767daeb Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Jan 19 18:06:54 2010 +0000 Unify the two freed object pools Discard some duplicate code and shared a single freed object pointer pool between the pattern and clip. src/Makefile.sources | 2 + src/cairo-clip.c | 88 +---------------------------- src/cairo-freed-pool-private.h | 121 ++++++++++++++++++++++++++++++++++++++++ src/cairo-freed-pool.c | 91 ++++++++++++++++++++++++++++++ src/cairo-pattern.c | 115 ++++++-------------------------------- 5 files changed, 234 insertions(+), 183 deletions(-) commit cfd204824fada7d2b4bcf4994c4200ae9b5a8b26 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jan 18 18:20:16 2010 +0000 Constify stroke style and matrices. As a simple step to ensure that we do not inadvertently modify (or at least generate compiler warns if we try) user data, mark the incoming style and matrices as constant. src/cairo-analysis-surface.c | 12 +++--- src/cairo-paginated-surface.c | 6 ++-- src/cairo-path-bounds.c | 6 ++-- src/cairo-path-stroke.c | 60 +++++++++++++++++----------------- src/cairo-pdf-operators-private.h | 24 +++++++------- src/cairo-pdf-operators.c | 38 +++++++++++----------- src/cairo-pdf-surface-private.h | 11 +++--- src/cairo-pdf-surface.c | 40 +++++++++++----------- src/cairo-ps-surface.c | 6 ++-- src/cairo-qt-surface.cpp | 14 ++++---- src/cairo-quartz-surface.c | 6 ++-- src/cairo-recording-surface.c | 6 ++-- src/cairo-script-surface.c | 6 ++-- src/cairo-stroke-style.c | 2 +- src/cairo-surface-fallback-private.h | 6 ++-- src/cairo-surface-fallback.c | 6 ++-- src/cairo-surface-wrapper-private.h | 12 +++--- src/cairo-surface-wrapper.c | 12 +++--- src/cairo-surface.c | 14 ++++---- src/cairo-svg-surface.c | 40 +++++++++++----------- src/cairo-tee-surface.c | 6 ++-- src/cairo-type3-glyph-surface.c | 6 ++-- src/cairo-win32-printing-surface.c | 6 ++-- src/cairo-xml-surface.c | 6 ++-- src/cairoint.h | 44 ++++++++++++------------ src/drm/cairo-drm-private.h | 6 ++-- src/drm/cairo-drm-surface.c | 6 ++-- src/test-null-surface.c | 6 ++-- src/test-paginated-surface.c | 6 ++-- src/test-wrapping-surface.c | 6 ++-- 30 files changed, 212 insertions(+), 213 deletions(-) commit 3e17c559b04e2df208f28125746d7e0acfb4b476 Author: Benjamin Otte <otte@gnome.org> Date: Wed Dec 9 19:46:28 2009 +0100 [test] Add pthread-same-source test Multiple threads render using the same source surface, but with different extend and filter. test/Makefile.am | 1 + test/Makefile.sources | 1 + test/pthread-same-source.c | 160 ++++++++++++++++++++++++++++++++++++++ test/pthread-same-source.ref.png | Bin 0 -> 1000 bytes 4 files changed, 162 insertions(+), 0 deletions(-) commit 30a12f802f4ff46f13dc36e60936cd857585a9ea Author: Benjamin Otte <otte@gnome.org> Date: Wed Nov 25 18:55:05 2009 +0100 [test] Add a simple multithreading test test/Makefile.am | 1 + test/Makefile.sources | 5 ++- test/pthread-similar.c | 106 ++++++++++++++++++++++++++++++++++++++++++ test/pthread-similar.ref.png | Bin 0 -> 170 bytes 4 files changed, 111 insertions(+), 1 deletions(-) commit 038829eb84e53532a6e3c75225933ad85da50cfc Author: Benjamin Otte <otte@gnome.org> Date: Sun Dec 6 17:47:50 2009 +0100 [test] Add new test checking is_clear is handled properly This test does various operations with a clear source surface with various content types. The idea is to make sure optimizations done when surface->is_clear == TRUE only happen in the proper cases. test/Makefile.sources | 1 + test/clear-source.c | 163 +++++++++++++++++++++++++++++++++++++++++++++ test/clear-source.ref.png | Bin 0 -> 881 bytes 3 files changed, 164 insertions(+), 0 deletions(-) commit bf7fb4e0e09d05f42425cc7969c64992d4dc9ff9 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jan 18 17:18:08 2010 +0000 script: Handle cache allocation failure more gracefully Instead of bailing out if we cannot store the glyph cache on the font, simply do not store the glyph cache on the font... util/cairo-script/cairo-script-operators.c | 74 ++++++++++++--------------- 1 files changed, 33 insertions(+), 41 deletions(-) commit 2b312806f138da6f88d03bb3c0c3852b342eb220 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jan 18 17:14:24 2010 +0000 script: Free the correct pattern after failure. The error path attempted to free the resolved pattern which it had just discovered was NULL and not the locally allocated pattern... util/cairo-script/cairo-script-operators.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit bc2d0ad114f8fc0b0579851154fe9d39c0aa0fc9 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Nov 27 17:30:51 2009 +0000 script: Permit surface operations on the context By implicitly reference the target of the context instead, i.e. this reduces the use of: /target get (example.png) write-to-png pop as a common idiom where the context is kept on the stack and the surface forgotten. util/cairo-script/cairo-script-operators.c | 14 +++++++++++--- 1 files changed, 11 insertions(+), 3 deletions(-) commit 411c09eed7ebff7335948a7f96d2b29d82ed817a Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Nov 1 08:40:41 2009 +0000 perf: Enable a surface cache for perf-trace Real applications that control their Drawable externally to Cairo are 'disadvantaged' by cairo-perf-trace when it creates a similar surface for each new instance of the same Drawable. The difficulty in maintaining one perf surface for every application surface is that the traces do not track lifetimes for the application surfaces, so we would just accumulate stale surfaces. The surface cache takes a different approach and returns the same surface for each active Drawable, and maintains a hold-over of the MRU 16 surfaces. This achieves 60-80% hit rate with firefox, which is probably as good as can be expected. Obviously for double-buffered applications we only every draw to freshly created surfaces (and Gtk+ bypasses cairo to do the final copy -- the ideal application would just use a push-group for double buffering, in which case we would capture and replay the entire expose event). To enable use of the surface cache whilst replaying use -c: ./cairo-perf-trace -c firefox-talos-gfx perf/Makefile.am | 3 +- perf/cairo-perf-trace.c | 141 +++++++++++++++++++++++++- test/any2ppm.c | 4 +- util/cairo-script/cairo-script-interpreter.h | 3 +- util/cairo-script/cairo-script-operators.c | 13 ++- util/cairo-sphinx/sphinx.c | 3 +- 6 files changed, 157 insertions(+), 10 deletions(-) commit c50c8b90c0033686b465e6766fba4772c1d698c6 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jan 18 16:58:40 2010 +0000 Move _cairo_error() to a standalone header A pending commit will want to include some utility code from cairo and so we need to extricate the error handling from the PLT symbol hiding. src/Makefile.sources | 1 + src/cairo-analysis-surface.c | 1 + src/cairo-array.c | 1 + src/cairo-base64-stream.c | 1 + src/cairo-base85-stream.c | 1 + src/cairo-bentley-ottmann-rectangular.c | 1 + src/cairo-bentley-ottmann-rectilinear.c | 1 + src/cairo-bentley-ottmann.c | 1 + src/cairo-beos-surface.cpp | 2 + src/cairo-cache.c | 1 + src/cairo-cff-subset.c | 1 + src/cairo-clip.c | 1 + src/cairo-deflate-stream.c | 1 + src/cairo-directfb-surface.c | 1 + src/cairo-eagle-context.c | 1 + src/cairo-error-private.h | 60 +++++++++++++++++++++++++++++++ src/cairo-font-face-twin.c | 1 + src/cairo-font-face.c | 1 + src/cairo-font-options.c | 1 + src/cairo-freelist.c | 1 + src/cairo-ft-font.c | 1 + src/cairo-gl-glyphs.c | 2 + src/cairo-gl-shaders.c | 1 + src/cairo-gl-surface.c | 1 + src/cairo-glitz-surface.c | 2 + src/cairo-glx-context.c | 2 + src/cairo-gstate.c | 1 + src/cairo-hash.c | 1 + src/cairo-hull.c | 1 + src/cairo-image-surface.c | 1 + src/cairo-lzw.c | 1 + src/cairo-matrix.c | 1 + src/cairo-misc.c | 1 + src/cairo-os2-surface.c | 1 + src/cairo-output-stream.c | 1 + src/cairo-paginated-surface.c | 1 + src/cairo-path-fill.c | 1 + src/cairo-path-fixed.c | 1 + src/cairo-path-stroke.c | 1 + src/cairo-path.c | 1 + src/cairo-pattern.c | 1 + src/cairo-pdf-operators.c | 1 + src/cairo-pdf-surface.c | 1 + src/cairo-pen.c | 1 + src/cairo-png.c | 2 + src/cairo-polygon.c | 1 + src/cairo-ps-surface.c | 1 + src/cairo-qt-surface.cpp | 6 ++- src/cairo-quartz-font.c | 2 + src/cairo-quartz-image-surface.c | 2 + src/cairo-quartz-surface.c | 2 + src/cairo-recording-surface.c | 3 +- src/cairo-region.c | 1 + src/cairo-rtree.c | 1 + src/cairo-scaled-font-subsets.c | 1 + src/cairo-scaled-font.c | 1 + src/cairo-script-surface.c | 1 + src/cairo-stroke-style.c | 1 + src/cairo-surface-fallback.c | 1 + src/cairo-surface-wrapper.c | 1 + src/cairo-surface.c | 1 + src/cairo-svg-surface.c | 1 + src/cairo-tee-surface.c | 1 + src/cairo-tor-scan-converter.c | 1 + src/cairo-toy-font-face.c | 1 + src/cairo-traps.c | 1 + src/cairo-truetype-subset.c | 1 + src/cairo-type1-fallback.c | 1 + src/cairo-type1-subset.c | 1 + src/cairo-type3-glyph-surface.c | 1 + src/cairo-unicode.c | 1 + src/cairo-user-font.c | 1 + src/cairo-vg-surface.c | 3 +- src/cairo-win32-font.c | 1 + src/cairo-win32-printing-surface.c | 1 + src/cairo-win32-surface.c | 1 + src/cairo-xcb-surface.c | 3 +- src/cairo-xlib-display.c | 1 + src/cairo-xlib-screen.c | 1 + src/cairo-xlib-surface.c | 1 + src/cairo-xlib-visual.c | 2 + src/cairo-xml-surface.c | 1 + src/cairo.c | 1 + src/cairoint.h | 12 ------ src/drm/cairo-drm-bo.c | 1 + src/drm/cairo-drm-intel-surface.c | 1 + src/drm/cairo-drm-intel.c | 1 + src/drm/cairo-drm-radeon-surface.c | 1 + src/drm/cairo-drm-radeon.c | 1 + src/drm/cairo-drm-surface.c | 1 + src/drm/cairo-drm.c | 1 + src/test-fallback-surface.c | 1 + src/test-fallback16-surface.c | 1 + src/test-null-surface.c | 2 + src/test-paginated-surface.c | 1 + src/test-wrapping-surface.c | 1 + 96 files changed, 170 insertions(+), 17 deletions(-) commit 558f9501700ba569f04f345f7c64d16b1870e37c Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Jan 18 22:47:34 2010 +0000 surface-wrapper: Avoid copying patterns and clips unless transformed. An older variant of the fixes for moving the device transformation out of the surface layer, but languished in a side branch. The only benefit of this patch is that it avoids the copy where possible. src/cairo-surface-wrapper.c | 134 ++++++++++++++++++++++++------------------- 1 files changed, 75 insertions(+), 59 deletions(-) commit 8f694817227366f4a4c6bbbf46e6cdddb4a065df Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Jan 19 17:12:47 2010 +0000 gitignore: refresh Add forgotten local targets to .gitignore .gitignore | 1 + perf/.gitignore | 1 + util/.gitignore | 2 ++ util/cairo-script/.gitignore | 1 + 4 files changed, 5 insertions(+), 0 deletions(-) commit 5914e995723682e0b1f685d9ff5ea5abe05ae024 Author: Eric Anholt <eric@anholt.net> Date: Fri Jan 22 09:21:36 2010 -0800 [gl] Cache a temporary glyph compositing mask for reuse later. Cuts firefox-talos-gfx time from 56 seconds to 43 seconds. src/cairo-gl-glyphs.c | 29 ++++++++++++++++++++++------- src/cairo-gl-private.h | 4 ++++ src/cairo-gl-surface.c | 4 +++- 3 files changed, 29 insertions(+), 8 deletions(-) commit 1bf0f64ee7783742fa777a496567e4da48e300dd Author: Eric Anholt <eric@anholt.net> Date: Thu Jan 21 14:08:11 2010 -0800 [gl] Composite component-alpha glyphs directly instead of through a mask. Cuts gnome-terminal-vim time from 58 seconds to 20. src/cairo-gl-glyphs.c | 190 +++++++++++++++++++++++++++++++----------------- src/cairo-gl-private.h | 4 + src/cairo-gl-surface.c | 2 +- 3 files changed, 127 insertions(+), 69 deletions(-) commit 12d521df8acc483b2daa844d4f05dc2fe2765ba6 Author: Eric Anholt <eric@anholt.net> Date: Thu Jan 21 13:19:17 2010 -0800 [gl] Use GL_RGBA textures even for CAIRO_CONTENT_COLOR. When the texture is GL_RGB, GL_CLAMP_TO_BORDER (EXTEND_NONE) fills the border color alpha channel with 1, when the whole reason we were using the border color was to get a color and alpha of 0. We're forced to use GL_RGBA textures and do extra work to fill in the alpha channel of them to 1 to get cairo's desired behavior. This fixes a failure in rotate-image-surface-paint and 4 other testcases. No performance difference in firefox-talos-gfx. src/cairo-gl-surface.c | 131 +++++++++++++++++++++++++++-------------------- 1 files changed, 75 insertions(+), 56 deletions(-) commit e316cb9db57094359c28f6b740e73674e8dcc134 Author: Eric Anholt <eric@anholt.net> Date: Wed Jan 20 13:33:56 2010 -0800 [gl] Add support for component-alpha glyph rendering. This is done using a mask and the two-pass trick I did for EXA. Fixes text-antialias-subpixel. src/cairo-gl-glyphs.c | 60 ++++++-- src/cairo-gl-private.h | 3 +- src/cairo-gl-surface.c | 384 ++++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 424 insertions(+), 23 deletions(-) commit ceeb7e7e703213a83ca43d80962519074a19364d Author: Eric Anholt <eric@anholt.net> Date: Tue Jan 19 13:43:16 2010 -0800 [gl] Use the UNSUPPORTED() macro in more places for fallback debugging. src/cairo-gl-surface.c | 14 +++++++------- 1 files changed, 7 insertions(+), 7 deletions(-) commit 5d9e2fd84b4f66e5b121d95805ce34e2f482d1b0 Author: Andrea Canciani <ranma42@gmail.com> Date: Fri Jan 15 16:28:12 2010 +0100 [quartz] Leftbehind change from a39075c88f9b2e12e19348ea11c9b3f739818265 This commit completes the change in a39075c88f9b2e12e19348ea11c9b3f739818265. It removes unused variables and corrects the extents rect computation. src/cairo-quartz-surface.c | 4 +--- 1 files changed, 1 insertions(+), 3 deletions(-) commit 6950b233e41a0c926465728c37f9bc5512f2844b Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 15 14:25:16 2010 +0000 qt: Make flush() robust. Hanno Meyer-Thurow reported in http://bugs.freedesktop.org/show_bug.cgi?id=26063 [PATCH] various fixes to cairo-qt a few issues related to _cairo_qt_surface_flush() where firefox was crashing after being built to use cairo-qt. This is an amalgam of those patches that hopefully address the issue. src/cairo-qt-surface.cpp | 33 ++++++++++++++++++++++++++------- 1 files changed, 26 insertions(+), 7 deletions(-) commit 4e315d84723b27746a6a012ab7de429b2f2ef90b Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 15 12:21:52 2010 +0000 pattern: Premultiply color-stop when converting to solid Fixes: test/linear-uniform https://bugzilla.mozilla.org/show_bug.cgi?id=539165 Bug 539165 - gradients with a single stop do not have their color multiplied by the alpha. As reported by Jeff Muizelaar, we regressed in 2d790daa as the color-stops are not premultiplied and so could not be treated as an ordinary cairo_color_t. Instead we have to create a intermediate cairo_color_t from the original values in order for the premultiplication to be performed. src/cairo-gstate.c | 26 +++++++++++++++++++------- src/cairo-pattern.c | 32 +++++++++++++++++++++----------- 2 files changed, 40 insertions(+), 18 deletions(-) commit f40560a9bb5b12d2584ed297bf4114baf2aa9cc1 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 15 12:17:30 2010 +0000 test: Add linear-uniform Jeff reported a regression found by Mozilla whereby a uniform gradient was not being premultiplied on conversion to a solid pattern. https://bugzilla.mozilla.org/show_bug.cgi?id=539165 [Bug 539165] gradients with a single stop do not have their color multiplied by the alpha. test/Makefile.am | 1 + test/Makefile.sources | 1 + test/linear-uniform.c | 63 +++++++++++++++++++++++++++++++++++++++++++ test/linear-uniform.ref.png | Bin 0 -> 128 bytes 4 files changed, 65 insertions(+), 0 deletions(-) commit e22c02dbaeda6941083fc89b517508dc0c4386a0 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 15 12:02:58 2010 +0000 test: Add degenerate-arcs A simple test to ensure that using degenerate-arcs such as when drawing a rounded rectangle with radii=0 construct a proper path. test/Makefile.am | 1 + test/Makefile.sources | 1 + test/degenerate-arcs.c | 57 ++++++++++++++++++++++++++++++++++++++++++ test/degenerate-arcs.ref.png | Bin 0 -> 120 bytes 4 files changed, 59 insertions(+), 0 deletions(-) commit a39075c88f9b2e12e19348ea11c9b3f739818265 Author: Andrea Canciani <ranma42@gmail.com> Date: Wed Jan 6 18:53:54 2010 +0100 [quartz] Fix generic masking Masking with unbounded operators was broken because an incorrect transformation was applied to inverted mask used for the fixup. src/cairo-quartz-surface.c | 59 +++++++++++++++---------------------------- 1 files changed, 21 insertions(+), 38 deletions(-) commit 27701ed8447d4c21b7bf9709a2fc21690b3cdc96 Author: Andrea Canciani <ranma42@gmail.com> Date: Tue Jan 5 19:42:23 2010 +0100 [quartz] Approximate dense dashing patterns Quartz doesn't try to approximate dash pattern even if they are well beyond suface sampling frequency. Approximating dash patterns when their density is too high avoids looping indefinitely in these degenerate cases. src/cairo-quartz-surface.c | 32 +++++++++++++++++++++----------- 1 files changed, 21 insertions(+), 11 deletions(-) commit ad7ab00c10fc1adcf2ef4574fdd00b25dfcdafdd Author: Andrea Canciani <ranma42@gmail.com> Date: Sat Jan 2 13:23:53 2010 +0100 [quartz] Improve A8 and A1 support Use A8 images as alpha-only masks intread of greyscale images. Add support to A1 images (they were ignored before). src/cairo-quartz-surface.c | 59 ++++++++++++++++++++++++++------------------ 1 files changed, 35 insertions(+), 24 deletions(-) commit f3b3a5c43f247f3e9019fa6c1fd2abb3b00dd9ea Author: Adrian Johnson <ajohnson@redneon.com> Date: Fri Jan 15 07:47:30 2010 +1030 Fix bug in _cairo_ft_index_to_ucs4 Previously it would miss the first character causing the space glyph to return 0x00A0 instead of 0x0020. src/cairo-ft-font.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit e26e2c8cc41b4e60462eacbd87894dc82beca883 Author: Eric Anholt <eric@anholt.net> Date: Thu Jan 14 10:05:02 2010 -0800 [gl] Fix the color bits of CAIRO_CONTENT_ALPHA surface patterns to be 0. Fixes surface-pattern-operator and alpha-similar. src/cairo-gl-private.h | 1 - src/cairo-gl-surface.c | 22 +++++++++++----------- 2 files changed, 11 insertions(+), 12 deletions(-) commit 520945603cdbacb90b3067f24a37b6dbd2ea6808 Author: Eric Anholt <eric@anholt.net> Date: Thu Jan 14 10:00:37 2010 -0800 [gl] Remove the special-casing of acquiring a pattern surface. _cairo_pattern_acquire_surface() should do fine at it, and matches what cairo-drm-i915 does. src/cairo-gl-surface.c | 127 ------------------------------------------------ 1 files changed, 0 insertions(+), 127 deletions(-) commit dbf9faf8232e7bf279377b5f3fc08ed210ca4e51 Author: Eric Anholt <eric@anholt.net> Date: Wed Jan 13 10:33:32 2010 -0800 [gl] Use GLSL for fill_rectangles when available. Ultimately, we want all of our paths to use shaders when they are exposed -- it brings us closer to GL 3.0 compatibility and it should reduce the work that GL drivers have to do per operation to compute the required hardware state. src/Makefile.sources | 2 +- src/cairo-gl-private.h | 6 ++ src/cairo-gl-shaders.c | 117 ++++++++++++++++++++++++++++++++++++++++++++ src/cairo-gl-surface.c | 125 ++++++++++++++++++++++++++++++++++++++++++++++-- 4 files changed, 244 insertions(+), 6 deletions(-) commit 57341cf5ac4d16222da27856e3a1092a473597e8 Author: Eric Anholt <eric@anholt.net> Date: Wed Jan 13 14:18:06 2010 -0800 [gl] Use ADD instead of SOURCE when making a mask for overlapping glyphs. The whole point of making the mask was to avoid overwriting one glyph with the data from another. Whoops. Fixes ft-show-glyphs-positioning, text-rotate, overlapping-glyphs, clip-text. src/cairo-gl-glyphs.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 6e0a63102e7e2d3fa3d5c993f2b94a2d6e40bdd8 Author: Eric Anholt <eric@anholt.net> Date: Wed Jan 13 14:06:23 2010 -0800 [gl] Clear the current_target cache when binding a framebuffer in creation. Failing to do so meant that we might not re-bind the framebuffer to the correct one if we didn't follow up surface creation with drawing to it. Fixes many testcases. Thanks to T. Zachary Laine for tracking down that the current_target was the source of these issues. src/cairo-gl-surface.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit ad0f4bee19b214b96fb07a45d1f059b362afee0f Author: T. Zachary Laine <whatwasthataddress@gmail.com> Date: Thu Jan 7 17:24:31 2010 -0600 [gl] Clear the is_clear flag on the temporary glyph mask we create. Normally is_clear is cleared by the caller of one of the 5 basic entrypoints, but in this temporary surface usage nobody else can do it for us. Fixes ft-show-glyphs-table, user-font-rescale, and select-font-face. src/cairo-gl-glyphs.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 384e50d858e9eec670f764c758fb3aa09b56caed Author: T. Zachary Laine <whatwasthataddress@gmail.com> Date: Wed Jan 13 15:06:24 2010 -0600 [gl] Removed repeated lines of source The two removed lines are redundant with code a few lines above them. src/cairo-gl-surface.c | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-) commit 515ccb63a67c88ddb2bc5adfd018cae55bc93185 Author: Eric Anholt <eric@anholt.net> Date: Mon Jan 11 16:04:21 2010 -0800 [gl] Fix the glyph cache full flush to really try again. Previously, the initial error handling would dump through to software fallback instead of retrying in the following code. src/cairo-gl-glyphs.c | 6 ++---- 1 files changed, 2 insertions(+), 4 deletions(-) commit 4aae4bfa8f28a470ab18575670563ad28374e445 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Jan 12 17:10:04 2010 +0000 test: Fix typo in path-stroke-twice reference image Sigh. I committed the reference image with the name path-stroke-twice-ref.png. test/path-stroke-twice-ref.png | Bin 206 -> 0 bytes test/path-stroke-twice.ref.png | Bin 0 -> 206 bytes 2 files changed, 0 insertions(+), 0 deletions(-) commit 74ea4c908067f5579b51d3dbaea387da8f343671 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Jan 12 17:00:25 2010 +0000 path: Do not remove anti-parallel line segments in case we are stroking Bug 26010 - cairo_line_to optimizes away path segments http://bugs.freedesktop.org/show_bug.cgi?id=26010 As exercised by path-stroke-twice, we incorrectly optimise away a line segment if the path doubled back upon itself. This is very reminiscent of the optimisation bug for replacing curve-to with line-to. src/cairo-path-fixed.c | 5 ++++- src/cairo-slope-private.h | 7 +++++++ 2 files changed, 11 insertions(+), 1 deletions(-) commit a5dd5a6069c0d7435260a954d8d98483f5fbcc1c Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Jan 12 16:32:09 2010 +0000 test: Add path-stroke-twice Exercises a bug found by alois@astro.ch, whereby we inadvertently remove a line segment when the path doubles back upon itself. Bug 26010 - cairo_line_to optimizes away path segments http://bugs.freedesktop.org/show_bug.cgi?id=26010 test/Makefile.am | 2 + test/Makefile.sources | 1 + test/path-stroke-twice-ref.png | Bin 0 -> 206 bytes test/path-stroke-twice.c | 54 +++++++++++++++++++++++++++++++++++++ test/path-stroke-twice.ps.ref.png | Bin 0 -> 197 bytes 5 files changed, 57 insertions(+), 0 deletions(-) commit 4204605813d93e7e2f0d8761e90a6dd6b8089dcb Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Jan 8 11:58:15 2010 +0000 type1: Destroy the output stream. mpsuzuki spotted that the output stream for the subset was not being destroyed on the error path - on closer inspection, it wasn't destroyed along the normal path either and may never have been correctly initialised to NULL on an earlier error. Reported-by: mpsuzuki@hiroshima-u.ac.jp src/cairo-type1-subset.c | 28 +++++++++++++++------------- 1 files changed, 15 insertions(+), 13 deletions(-) commit 41a24d822ac094f0841ba0c92ca86448ad062def Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Jan 7 11:58:01 2010 +0000 trace: Correctly encode octal values. How embarrassing. util/cairo-trace/trace.c | 21 ++++++++++++++------- 1 files changed, 14 insertions(+), 7 deletions(-) commit 3ae9d04c6ddd311ffab91170fb9342e37c5530a8 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Fri Jan 1 20:13:33 2010 +0200 [stroker] Fix off-by-one memory allocation in _tessellate_fan(). The number of points in a triangle fan was miscomputed because it was computing the number of line segments rather than points in the fan. Now we include the final point of the fan correctly in the count. This fixes https://bugs.webkit.org/show_bug.cgi?id=33071 as reported by Benjamin Otte. A derived test case was not added to the cairo test suite since the bug is difficult to trigger in a reliable way which causes visible results (as opposed to silent heap corruption.) The easiest way of triggering the bug is to stroke a line using a large line width and round caps or joins. src/cairo-path-stroke.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit a0ea0b63fdd38a73d6696da5cd4800d9a7289240 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Dec 30 16:21:50 2009 +0000 arc: Just emit a line-to if radius is zero. In order to be consistent with the semantics of cairo_arc() using a radius of 0 should simply degenerate into a line-to. Reported-by: Benjamin Berg src/cairo.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) commit 21560b3ec6d015004867207c5bdd90061b8a5d80 Author: Andrea Canciani <ranma42@gmail.com> Date: Fri Dec 11 10:29:12 2009 +0100 [trace] Fix compilation when FreeType is disabled cairo-trace needs some headers which are missing if freetype is not enabled. Adding them explicitly fixes compilation. util/cairo-trace/trace.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit 393d2d9c9199c368916fb5412abaac163f57ff86 Author: Tim Janik <timj@gtk.org> Date: Mon Dec 28 13:34:43 2009 +0100 Fixed documentation typo. src/cairo-image-surface.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit e2d75203c515f9740a8e0e9779391de0a1a54b07 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Sun Nov 29 15:56:26 2009 +0200 [dirty] Add more missing surface dirtying notifications. Now that the image surface actually cares about cairo_surface_mark_dirty() we're hitting cases where we've forgotten to mark surfaces dirty. boilerplate/cairo-boilerplate.c | 1 + src/cairo-xlib-surface.c | 1 + util/cairo-script/cairo-script-operators.c | 2 ++ 3 files changed, 4 insertions(+), 0 deletions(-) commit b76565d2f4a2510aabada4cef968b9b597bbef09 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Sun Nov 29 15:40:30 2009 +0200 [test] Don't use uninitialised data in surface-source.c The draw_pattern() function assumed the incoming surface was clear, but it's not. Explicitly clear the surface first. test/surface-source.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit e09b754fdd43206e1668812be4ff11d25188148c Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Sun Nov 29 01:11:29 2009 +0200 [gstate] Change dash offset normalisation to preserve offsets in range. We have a test case get-and-set which wants to see whatever it puts into a cairo_t come back out again, but at the same time cairo-gstate wants to range reduce the dash offset it's given to a sane range. This patch changes the range reduction algorithm to always normalize to a non-negative dash offset and not touch dash offsets which are already in range. src/cairo-gstate.c | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-) commit b394240941dffa263776a62cf42dc9b7e477f7a2 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Sun Nov 29 02:48:23 2009 +0200 [test] Add missing mark_dirty() calls to test cases. A recent optimisation has added a flag to the image surface which is used to track whether the surface is clear or not. This makes it imperative that clients call cairo_surface_mark_dirty() if they use cairo to allocate their pixel buffers and then proceed to initialize them without telling cairo about it. test/a1-mask.c | 1 + test/large-source.c | 2 ++ test/user-font-mask.c | 1 + 3 files changed, 4 insertions(+), 0 deletions(-) commit 9ddf14cfd5c3bf0cf507cfc82b192f5c46f66f9a Author: Adrian Johnson <ajohnson@redneon.com> Date: Sun Nov 29 10:40:18 2009 +1030 PDF: Don't specify colorspace in JPEG2000 image dictionary PDF uses the colorspace specified in the JPEG2000 image. src/cairo-pdf-surface.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) commit d58560bda8361bd25f1b2207ecfab4b331601045 Author: Benjamin Otte <otte@gnome.org> Date: Fri Nov 27 21:04:55 2009 +0100 Satisfy make check src/cairo-stroke-style.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 16fffc5c05857896c03decdcebff7f1b5e582390 Author: Benjamin Otte <otte@gnome.org> Date: Fri Nov 27 18:13:45 2009 +0100 Apply device transform in surface wrapper src/cairo-surface-wrapper.c | 56 +++++++++++++++++++++++++++++++++++------- 1 files changed, 46 insertions(+), 10 deletions(-) commit 02d7e123d640d62db46ef03d7faecbc7598444e1 Author: Adrian Johnson <ajohnson@redneon.com> Date: Fri Nov 27 23:11:56 2009 +1030 PDF: Remove extraneous \n from end of jpeg/jp2 data PDF requires a '\n' between the end of stream data and the "endstream" that is not included in the stream length. Ensure this is always added in _close_stream where it is not included in the stream length. Previously the jpeg/jp2 embedding functions were adding the '\n'. This resulted in the '\n' becoming part of the stream data. src/cairo-pdf-surface.c | 5 +---- 1 files changed, 1 insertions(+), 4 deletions(-) commit 4fc7bdaed651a5c19eb89dddd88808468e0e7eb8 Author: Adrian Johnson <ajohnson@redneon.com> Date: Thu Nov 26 21:14:20 2009 +1030 PS: Add some missing pdf-operators flushes src/cairo-ps-surface.c | 15 +++++++++++++++ 1 files changed, 15 insertions(+), 0 deletions(-) commit 3f0c9afa9760a90065c67927c63770f9bb8abe99 Author: Benjamin Otte <otte@gnome.org> Date: Wed Nov 25 15:57:46 2009 +0100 [clip] Don't ignore outermost clip when it clips everything Fixes testcases clip-stroke-no-op and clip-fill-no-op added in 0d8a04ef47426d87c7932f308a831e36b4ef7683 src/cairo-clip.c | 5 +---- 1 files changed, 1 insertions(+), 4 deletions(-) commit 0d8a04ef47426d87c7932f308a831e36b4ef7683 Author: Benjamin Otte <otte@gnome.org> Date: Wed Nov 25 10:48:39 2009 +0000 test: Add cases to exercise clipping after no-ops Whilst investigating: Bug 31788: SVG <line> with y1 == y2 and both with fractional part don't render https://bugs.webkit.org/show_bug.cgi?id=31788 I found that it can be reduced to a no-op clip following a no-op stroke or fill. These conditions are exercised here and are shown to be a bug introduced in the 1.9.x development series. test/Makefile.am | 2 + test/Makefile.sources | 2 + test/clip-fill-no-op.c | 66 ++++++++++++++++++++++++++++++++++++++++ test/clip-fill-no-op.ref.png | Bin 0 -> 152 bytes test/clip-stroke-no-op.c | 66 ++++++++++++++++++++++++++++++++++++++++ test/clip-stroke-no-op.ref.png | Bin 0 -> 152 bytes 6 files changed, 136 insertions(+), 0 deletions(-) commit 26e9f149063b9e1fdb54fc54fccbefdf04a68190 Author: Andrea Canciani <ranma42@gmail.com> Date: Tue Nov 10 23:09:56 2009 +0100 Improve stroking of densely dashed styles Add some auxiliary functions to cairo-stroke-style to compute properties of the dashed patterns (period, "on" coverage) and to generate approximations when the dash pattern is sub-tolerance. These functions are used in cairo-path-stroke to simplify dash patterns stroked by cairo. Fixes dash-infinite-loop See http://bugs.freedesktop.org/show_bug.cgi?id=24702 src/cairo-path-stroke.c | 24 +++++++-- src/cairo-stroke-style.c | 119 ++++++++++++++++++++++++++++++++++++++++++++++ src/cairoint.h | 20 ++++++++ 3 files changed, 157 insertions(+), 6 deletions(-) commit 9c24288c820069e80b0feb5e99ece4c89e92c0c6 Author: Andrea Canciani <ranma42@gmail.com> Date: Wed Nov 11 00:09:08 2009 +0100 Revert "[test] Reorder dash-infinite-loop to not hit a runaway allocation." The infinite loop problem in _cairo_stroker_dash_start is solved by commit ee02f3484899527380df94c00f40da87f41660ea, so hitting that problem is not possible anymore and dash-infinite stroke always hit the memory intensive loops. This reverts commit 29432d3d32bc84ec4a2e1815a84e4ac2089138fe. test/dash-infinite-loop.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit cc2d2630669b084ec43e415d2806d94af00cf56c Author: Andrea Canciani <ranma42@gmail.com> Date: Tue Nov 10 22:58:59 2009 +0100 Improve stroke offset computation The stroke offset was forced to be positive because stroking code wants to be able to decrement it until it finds the first dash to be drawn. This can lead to long (almost infinite) loops if the offset is positive but huge compared to the total length of the dash pattern. Computing the offset this way guarantees that it's always the smallest non-negative equivalent offset. src/cairo-gstate.c | 10 ++++------ 1 files changed, 4 insertions(+), 6 deletions(-) commit e436a57c22f2c2a87404cac27e2d5e3c404f8bf9 Author: Andrea Canciani <ranma42@gmail.com> Date: Tue Nov 10 13:29:28 2009 +0100 Fix odd length dashing with negative offset When computing an equivalent offset, a wrong total dash length was used when the dash elements were odd and more than 1. Doubling the total dash length whenever they are odd is needed to correctly compute the new offset. Fixes dash-offset. src/cairo-gstate.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit b1a76394655793fd698a1281b00a3d049f9e70f5 Author: Andrea Canciani <ranma42@gmail.com> Date: Tue Nov 10 13:09:50 2009 +0100 Add dash-offset test Stroking a dash pattern of odd length with a negative offset is broken (except when the pattern is composed by a single dash). test/Makefile.am | 1 + test/Makefile.sources | 1 + test/dash-offset.c | 95 ++++++++++++++++++++++++++++++++++++++++++++++ test/dash-offset.ref.png | Bin 0 -> 794 bytes 4 files changed, 97 insertions(+), 0 deletions(-) commit 7d8788b4ba5ae335a7bb77bd09e7ebd20376f632 Author: Robert O'Callahan <robert at ocallahan.org> Date: Mon Nov 9 18:58:59 2009 +0100 [quartz] Cleanup fallback source Remove the transformation code as it's useless and confusing. The clipbox was transformed in a wrong way if the CTM was not the base one, otherwise the transformation did nothing. As long as _cairo_quartz_setup_fallback_source is only called with the base CTM, no transformation needs to be performed on the clipbox. Patch by Robert O'Callahan, see Mozilla bug #507939. src/cairo-quartz-surface.c | 9 --------- 1 files changed, 0 insertions(+), 9 deletions(-) commit 248090e52b02f2b2dc424c6073489df32632b9d1 Author: Andrea Canciani <ranma42@gmail.com> Date: Mon Nov 9 21:38:00 2009 +0100 [quartz] Fix compositing operators Fallback on SATURATE (since quartz doesn't support it) and on blending operators (to be implemented using CGContextSetBlendMode, after its availability has been assessed). Workaround the different behaviour of quartz operators on alpha masks. Fixes text in clip-operator and clip-text, blend modes in extended-blend, extended-blend-alpha, saturate in operator, operator-alpha and surface-pattern-operator. Changes the output of operator-alpha-alpha, but to really fix it pure-alpha surfaces needs to be treated as alpha masks and not as greyscale images. src/cairo-quartz-surface.c | 182 ++++++++++++++++++++++++++++++++++---------- 1 files changed, 140 insertions(+), 42 deletions(-) commit d44414191a685a23fd48bb32826366dfd113e1e5 Author: Andrea Canciani <ranma42@gmail.com> Date: Mon Nov 9 14:21:40 2009 +0100 [quartz] Fix source-unbounded compositing of surface sources Surface sources were not respecting EXTEND_NONE when composited because the part outside of the surface rectangle was not changed. To correctly extend the source, it's sufficient to composite a transparent rectangle with a hole in the region covered by the surface. Fixes clip-unbounded and operator-source. Changes the output of surface-pattern-operator. src/cairo-quartz-surface.c | 62 ++++++++++++++++++++------------------------ 1 files changed, 28 insertions(+), 34 deletions(-) commit 7ef611a67a2a68d0a50e2191804a8ef137c78b33 Author: Andrea Canciani <ranma42@gmail.com> Date: Mon Nov 9 20:17:35 2009 +0100 [quartz] Fix stroking with unbounded operator Stroking was not fixed up correctly when the stroke trasform was not the identity and when the stroked path was dashed. Instead of building a mask image and clearing through it (forgetting to use the CTM and the dash setting), the code now simply fills the outside of the stroke with tranparent black. Additionally this commit moves the CTM composition so that the invocation of _cairo_quartz_setup_source is always done with the base CTM. This commit changes the result of clip-stroke-unbounded (the clip mask is now correctly aligned to the stroked path). src/cairo-quartz-surface.c | 36 +++++++++++++----------------------- 1 files changed, 13 insertions(+), 23 deletions(-) commit 577ac4fc6d810cae7ff6d460fdea1886cd97258c Author: Andrea Canciani <ranma42@gmail.com> Date: Mon Nov 9 14:24:13 2009 +0100 [quartz] Fix implied colour of alpha-only surface sources If a fill colour was set, an alpha-only surface source would have used that colour instead of black. src/cairo-quartz-surface.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 8b25e4a7fd839ac399d14460d2596037134c9801 Author: Andrea Canciani <ranma42@gmail.com> Date: Mon Oct 19 18:38:57 2009 +0200 [quartz] Improve unbounded operators fixup Don't allocate a colorspace and use a 16-bytes aligned stride and an alpha-only image for the rendering of the fixup mask. src/cairo-quartz-surface.c | 16 +++++++--------- 1 files changed, 7 insertions(+), 9 deletions(-) commit ed8bdcd59863964a3eb9c49ca1a9bfd5f544350c Author: Andrea Canciani <ranma42@gmail.com> Date: Mon Oct 19 17:33:10 2009 +0200 [quartz] Improve A8 image handling A8 images were cosidered grayscale, whereas they should behave like transparency mask. They are now alpha-only images and the stride is 16-bytes aligned, as suggested. Fixes alpha-similar and mask-transformed-similar. Makes the patterns behave (as expected) as masks in surface-pattern-operator. Affects the output of operator-alpha-alpha, but the result is not correct because of wrong compositing. src/cairo-quartz-surface.c | 21 +++++++++------------ 1 files changed, 9 insertions(+), 12 deletions(-) commit b32695c248b08289ce431d5f2fdab5205219c203 Author: Robert O'Callahan <robert at ocallahan.org> Date: Tue Oct 20 16:07:52 2009 +0200 [quartz] Fix gradient pattern painting CTM was changed and not restored when painting gradients. Fixes the alignment of surface patterns in surface-pattern-operator. Patch by Robert O'Callahan, see Mozilla bug #507939. src/cairo-quartz-surface.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 1ce096657b2d38956e3229042f87aea42b0d0d8c Author: Andrea Canciani <ranma42@gmail.com> Date: Tue Nov 3 22:51:29 2009 +0100 Fix compilation on MacOS X Enable "ld_preload" (DYLD_INSERT_LIBRARIES + DYLD_FORCE_FLAT_NAMESPACE) and build cairo-trace as a library instead of a module to make it work also on MacOS X. configure.ac | 17 ++++++++++++++++- util/cairo-trace/Makefile.am | 22 +++++++++++----------- util/cairo-trace/cairo-trace.in | 6 +++++- util/cairo-trace/trace.c | 2 +- 4 files changed, 33 insertions(+), 14 deletions(-) commit c181f9e9aeac375eed07aaab58d177e3476d5117 Author: Andrea Canciani <ranma42@gmail.com> Date: Sat Nov 7 19:29:30 2009 +0100 Add new operator-alpha-alpha test Compositing of alpha-only sources is not throughly tested and as a consequence the misbehaviour of some backends is not shown by the test suite. [ickle: Added XFAILs for pdf, ps, svg.] src/cairo-xcb-surface.c | 4 - test/Makefile.am | 4 + test/Makefile.sources | 1 + test/operator-alpha-alpha.c | 166 +++++++++++++++++++++++++++++++ test/operator-alpha-alpha.pdf.xfail.png | Bin 0 -> 3749 bytes test/operator-alpha-alpha.ps.xfail.png | Bin 0 -> 1338 bytes test/operator-alpha-alpha.ref.png | Bin 0 -> 3441 bytes test/operator-alpha-alpha.svg.xfail.png | Bin 0 -> 838 bytes 8 files changed, 171 insertions(+), 4 deletions(-) commit cee3a6169bdf7f64c126c487b443dcb7a9f0586a Author: Adrian Johnson <ajohnson@redneon.com> Date: Sun Nov 8 21:52:06 2009 +1030 Type1-subset: Append "cleartomark" operator for binary fonts that don't include it Type 1 fonts embedded in PDF may omit the fixed-content portion of the font that contains the "cleartomark" operator. src/cairo-type1-subset.c | 22 +++++++++++++++------- 1 files changed, 15 insertions(+), 7 deletions(-) commit d962d6bae2681ea1f3c9533a83c8902d76e81c6a Author: Adrian Johnson <ajohnson@redneon.com> Date: Sun Nov 8 21:46:16 2009 +1030 PDF: Include Type 1 fixed-content portion in the embedded font Some fonts may contain additional PostScript code after the cleartomark. src/cairo-pdf-surface.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit ac59c7580894fc5fd424f7f6f8c1532d15048566 Author: Adrian Johnson <ajohnson@redneon.com> Date: Sun Nov 8 21:38:58 2009 +1030 Type1-subset: Check for binary eexec data Type 1 fonts embedded in PDF have the the encrypted portion in binary but the existing check for binary only works for Type 1 fonts in PFB format. Add an additional check based on the first 4 characters of eexec data. The Type 1 specification gurantees that at least one of the first 4 bytes of ciphertext is not an ASCII Hex character. src/cairo-type1-subset.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-) commit a4a59be600cbe17f43afa20422f9d05f3a5d5b52 Author: Adrian Johnson <ajohnson@redneon.com> Date: Sat Nov 7 14:36:49 2009 +1030 Type 1 subset: Don't add a new line when in binary mode At the end of the private dictionary a new line is appended so that the trailing zeros will not exceed 80 columns. In hex mode (used for PS embedding) extra white space is harmless as it is ignored when parsing the ascii hex encoded data. But in binary mode (used for PDF embedding) the new line must not be added as it corrupts the binary data. https://bugs.launchpad.net/ubuntu/+source/cups/+bug/419143 src/cairo-type1-subset.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 9775f44436ffaf54931614d1867bcb7d147acd06 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Nov 5 10:13:34 2009 +0000 AUTHORS: Add Andrea Canciani AUTHORS | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit d51915f873da8d40740a908c86f02e972e358be9 Author: Andrea Canciani <ranma42@gmail.com> Date: Wed Nov 4 16:15:48 2009 +0100 xlib: Fix double free Both _cairo_xlib_call_close_display_hooks and _cairo_xlib_screen_destroy invoke _cairo_xlib_screen_close_display, which frees all the cached GCs, but (if HAS_ATOMIC_OPS is undefined) doesn't mark them as freed, thus freeing them agin upon the second invocation. src/cairo-xlib-screen.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 7c1424a315b677ca119d11b7ced1d4c969dde568 Author: Andrea Canciani <ranma42@gmail.com> Date: Sun Oct 18 08:59:33 2009 +0200 quartz: Fix compilation The function _cairo_image_surface_create_for_content does not exist. The correct name of the function is instead _cairo_image_surface_create_with_content. src/cairo-quartz-image-surface.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 8a10c25c3f4036d17e24852e7dc970fa06fcb4af Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Nov 5 10:02:54 2009 +0000 test: Tweak Benjamin's xcomposite-projection Include Benjamin's advice on how to make the bug more visible inline with the code. test/xcomposite-projection.c | 69 +++++++++++++++++++++++++++++------------- 1 files changed, 48 insertions(+), 21 deletions(-) commit a9f37953c71e16f65122097462e51b035783a965 Author: Benjamin Otte <otte@gnome.org> Date: Wed Nov 4 13:59:58 2009 +0100 [xlib] Use correct number when checking if points are out of range src/cairo-xlib-surface.c | 16 ++++++++-------- 1 files changed, 8 insertions(+), 8 deletions(-) commit aa1f245ea313a2f1f0dda3994f5b48073b0c385d Author: Benjamin Otte <otte@gnome.org> Date: Wed Nov 4 13:56:15 2009 +0100 [test] Add "target=raster" to test The test isn't useful on vector backends and fails there due to antialiasing issues. test/xcomposite-projection.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 52afe9c77f2f54372fefeca50321a27e8dda0f63 Author: Benjamin Otte <otte@gnome.org> Date: Wed Nov 4 11:15:57 2009 +0100 [xlib] Fix new Composite test When the reference point was tirggering _line_exceeds_16_16() and got adjusted, the code failed to compute the srcX and srcY arguments for the call to XRenderCompositeTrapezoids() correctly and caused the resulting source image to be misaligned. src/cairo-fixed-private.h | 9 +++++++++ src/cairo-xlib-surface.c | 22 +++++++++++----------- 2 files changed, 20 insertions(+), 11 deletions(-) commit 84bbf179c375622d2c7b4e21b1b8ce189b5a18f2 Author: Benjamin Otte <otte@gnome.org> Date: Wed Nov 4 11:06:57 2009 +0100 [test] Add a test exposing bugs in XRenderComposite This test fills a slightly rotated surface slightly above the 0 line. This hits some corner cases in the XRenderComposite path. I discovered these issues while playing with video rendering onto the canvas in HTML5 (both Webkit and Mozilla have this problem). I used CAIRO_ANTIALIAS_NONE and a single-color source in the test to get rid of aliasing issues in the output images. This makes some issues slightly less visible, but still fails for all of them. If you want to get a clearer view, disable it and use romedalen.png instead - it has the same size as the red surface. (At least) 3 bugs are at work here: - if _line_exceeds_16_16() triggers for the reference point, the source surface will be misaligned. - the intel driver seems to have an off-by-one bug on my i945 when positioning the source surface, causing black seams at the top (not visible in the test unless using romedalen.png) and on the left of the image. - My Xvfb fails completely in picture up/download in the xlib-fallback path. test/Makefile.sources | 1 + test/xcomposite-projection.c | 81 ++++++++++++++++++++++++++++++++++++ test/xcomposite-projection.ref.png | Bin 0 -> 1112 bytes 3 files changed, 82 insertions(+), 0 deletions(-) commit 9b42b6156d9916e64e19f2ccb0b43f4d1df72e79 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Nov 2 12:50:45 2009 +0000 build: Add -pthread to real_pthread_CFLAGS build/configure.ac.system | 12 ++++++++++ configure.ac | 51 +++++++++++++++++++------------------------- 2 files changed, 34 insertions(+), 29 deletions(-) commit 3eecf2f60c85e0195360ff3c3a54d58ceaa4a6f1 Author: Benjamin Otte <otte@gnome.org> Date: Mon Nov 2 13:20:25 2009 +0100 sphinx: Add required pthread libs Try again, this time for real hopefully. configure.ac | 2 +- util/cairo-sphinx/Makefile.am | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) commit 837eb577b4707e447fafb0dfca378ecf4ea3fda5 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Nov 2 11:56:29 2009 +0000 sphinx: Add required pthread libs Switching to pthread-stubs broke the build for sphinx on unbroken platforms [those that do not unnecessarily link against -lpthreads]. configure.ac | 7 +++++++ util/cairo-sphinx/Makefile.am | 5 +++-- 2 files changed, 10 insertions(+), 2 deletions(-) commit 942a15ba9e85fa3297ad6e65270928ad3c1c0a42 Author: Benjamin Otte <otte@gnome.org> Date: Mon Nov 2 12:51:14 2009 +0100 [test] Update upscale test to expose an Xlib failure By filling the background with grey, we can see that Xlib fills areas with black that it shouldn't. Xlib therefore now fails this test. test/surface-pattern-scale-up.c | 4 +++- test/surface-pattern-scale-up.pdf.ref.png | Bin 2793 -> 3482 bytes test/surface-pattern-scale-up.ps2.ref.png | Bin 943 -> 913 bytes test/surface-pattern-scale-up.ps3.ref.png | Bin 943 -> 913 bytes test/surface-pattern-scale-up.ref.png | Bin 4061 -> 4017 bytes 5 files changed, 3 insertions(+), 1 deletions(-) commit 19c411a5b8b84d31516d9c85642ad55ef5d29aba Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Oct 30 07:58:45 2009 +0000 path: Skip any secondary degenerate line-to segments. Only the very first line-to following a move-to can have any significance if degenerate whilst stroking, so skip all others. In other words, 0 0 m 0 0 l stroke produces a capped degenerate path (i.e a dot), 0 0 m 0 0 l 0 0 l stroke produces the same degenerate stroke, and 0 0 m 0 0 l 1 0 l stroke produce a horizontal line. src/cairo-path-fixed.c | 13 ++++++++++--- 1 files changed, 10 insertions(+), 3 deletions(-) commit 23bcf91748c4bb04c16e503b913da3bfc237463f Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Oct 30 07:49:56 2009 +0000 path: Misclassification of rectilinear after degenerate line-to Malte Nuhn reported hitting an assertion: cairo-path-stroke.c:1816: _cairo_rectilinear_stroker_line_to: Assertion `a->x == b->x || a->y == b->y' failed. http://bugs.freedesktop.org/show_bug.cgi?id=24797 when stroking an apparently simple path: 0 8.626485 m 0 8.626485 l 5.208333 2.5 l 10.416667 2.5 l 15.625 2.5 l 20.833333 2.5 l 26.041667 2.5 l 31.25 2.5 l 36.458333 2.5 l 41.666667 2.5 l 46.875 2.5 l 52.083333 2.5 l 57.291667 2.5 l 62.5 2.5 l 67.708333 2.5 l 72.916667 2.5 l 78.125 2.5 l 83.333333 2.5 l 88.541667 2.5 l 93.75 2.5 l 98.958333 2.5 l 104.166667 2.5 l 109.375 2.5 l 114.583333 2.5 l 119.791667 2.5 l 125 2.5 l stroke which upon reduction becomes: 0.000000 8.625000 m 5.207031 2.500000 l 125.000000 2.500000 l stroke The bug is that after spotting a repeated line-to we move the previous end-point without reclassifying the path, hence we miss the non-rectilinear step. src/cairo-path-fixed.c | 101 ++++++++++++++++++++++++----------------------- 1 files changed, 52 insertions(+), 49 deletions(-) commit 600dd833983bd85bf8aea487393ce156abb622bd Author: Adrian Johnson <ajohnson@redneon.com> Date: Mon Sep 28 19:14:46 2009 +0930 Provide a builtin implementation of isspace() and isdigit() The glibc versions are slow in utf8 locales. src/cairo-output-stream.c | 7 +++---- src/cairo-pdf-operators.c | 6 ++---- src/cairo-type1-subset.c | 16 +++++++--------- src/cairoint.h | 16 ++++++++++++++++ 4 files changed, 28 insertions(+), 17 deletions(-) commit f571356d346565cae34f08d12c584c4bd40921d6 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Oct 27 20:27:09 2009 +0000 xlib: Set has_component_alpha = FALSE for gradient Pictures Whilst creating the xlib surface wrapper for gradient Pictures, the corresponding attributes require ComponentAlpha disabled. src/cairo-xlib-surface.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 1a80cd2aa00b232a9a2192a85d6264e44ffcbd69 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Oct 26 11:05:38 2009 +0000 scaled-font: Fix documentation examples with incorrect derefs Bug 24730 -- New: misleading use cases in cairo_scaled_font_text_to_glyphs's docs http://bugs.freedesktop.org/show_bug.cgi?id=24730 An apparent copy'n'paste error from the code which has to deal with indirect pointers crept into the documentation for the same functions. src/cairo-scaled-font.c | 20 ++++++++++---------- 1 files changed, 10 insertions(+), 10 deletions(-) commit f648fcd2f91ea5c9ec318c2c0573ee82ac8c0ac9 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Oct 26 11:02:16 2009 +0000 gitignore: Add forgotten cairo-perf-print perf/.gitignore | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 6911ba2f76d4ccdf228c029e2719461a72848824 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Oct 26 11:01:01 2009 +0000 perf: Fix comparisons The sort order was unstable resulting in incorrect ordering dependent upon libc version. perf/cairo-perf-diff-files.c | 22 +++++++++++++++------- 1 files changed, 15 insertions(+), 7 deletions(-) commit f955a4cba7784f97ef1dd978158e98176e03baf0 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Oct 25 11:04:17 2009 +0000 wideint: Protect 64_32_div for non-HAVE_UINT16_T systems Peter Clifton spotted that we failed to properly wrap _cairo_int64_32_div() for systems without a native 64 bit type. src/cairo-wideint-private.h | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) commit c701d7813b6d116c9db53f63f791928a407499c7 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Oct 23 14:42:48 2009 +0100 [pattern] Compute zero extents for empty patterns If the pattern is for example a repeating 0x0 image, then treat it as having zero extents. This should workaround the bug presented here: https://bugs.freedesktop.org/show_bug.cgi?id=24693 Attached PDF crashes evince with a Floating point exception src/cairo-pattern.c | 27 ++++++++++++++++++++++++--- 1 files changed, 24 insertions(+), 3 deletions(-) commit 43a775f60da57206b194039cd5d8b6a735284c45 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Thu Oct 22 02:13:36 2009 +0300 [meta] Rename cairo_meta_surface_t to cairo_recording_surface_t. The new name is more descriptive than the rather opaque meta surface. Discussed with vigour on the mailing list and #cairo: http://lists.cairographics.org/archives/cairo/2009-July/017571.html NEWS | 7 + boilerplate/Makefile.win32.features | 14 +- boilerplate/cairo-boilerplate-pdf.c | 6 +- boilerplate/cairo-boilerplate-ps.c | 8 +- boilerplate/cairo-boilerplate-svg.c | 8 +- boilerplate/cairo-boilerplate-test-surfaces.c | 2 +- boilerplate/cairo-boilerplate-win32-printing.c | 2 +- boilerplate/cairo-boilerplate.c | 46 +- boilerplate/cairo-boilerplate.h | 2 +- build/Makefile.win32.features-h | 2 +- configure.ac | 2 +- doc/public/tmpl/cairo-surface.sgml | 2 +- perf/cairo-perf-micro.c | 4 +- perf/cairo-perf-trace.c | 4 +- src/Makefile.sources | 4 +- src/Makefile.win32.features | 14 +- src/cairo-analysis-surface.c | 48 +- src/cairo-meta-surface-private.h | 171 --- src/cairo-meta-surface.c | 1096 -------------------- src/cairo-paginated-private.h | 6 +- src/cairo-paginated-surface-private.h | 4 +- src/cairo-paginated-surface.c | 92 +- src/cairo-pattern.c | 2 +- src/cairo-pdf-surface.c | 56 +- src/cairo-ps-surface.c | 42 +- src/cairo-recording-surface-private.h | 171 +++ src/cairo-recording-surface.c | 1096 ++++++++++++++++++++ src/cairo-scaled-font.c | 28 +- src/cairo-script-surface.c | 42 +- src/cairo-script.h | 4 +- src/cairo-surface.c | 58 +- src/cairo-svg-surface.c | 46 +- src/cairo-tee-surface.c | 6 +- src/cairo-type3-glyph-surface.c | 14 +- src/cairo-types-private.h | 2 +- src/cairo-user-font.c | 42 +- src/cairo-vg-surface.c | 10 +- src/cairo-win32-printing-surface.c | 60 +- src/cairo-xml-surface.c | 32 +- src/cairo-xml.h | 4 +- src/cairo.c | 2 +- src/cairo.h | 20 +- src/cairoint.h | 12 +- test/Makefile.am | 32 +- test/Makefile.sources | 2 +- test/cairo-test-trace.c | 48 +- test/cairo-test.c | 6 +- test/meta-surface-pattern.c | 121 --- test/meta-surface-pattern.gl.argb32.ref.png | Bin 3130 -> 0 bytes test/meta-surface-pattern.pdf.argb32.ref.png | Bin 3908 -> 0 bytes test/meta-surface-pattern.pdf.rgb24.ref.png | Bin 3760 -> 0 bytes test/meta-surface-pattern.ps2.argb32.ref.png | Bin 3257 -> 0 bytes test/meta-surface-pattern.ps2.rgb24.ref.png | Bin 3873 -> 0 bytes test/meta-surface-pattern.ps3.argb32.ref.png | Bin 3257 -> 0 bytes test/meta-surface-pattern.ps3.rgb24.ref.png | Bin 3873 -> 0 bytes test/meta-surface-pattern.quartz.ref.png | Bin 4572 -> 0 bytes test/meta-surface-pattern.quartz.rgb24.ref.png | Bin 4063 -> 0 bytes test/meta-surface-pattern.ref.png | Bin 3072 -> 0 bytes test/meta-surface-pattern.rgb24.ref.png | Bin 3162 -> 0 bytes test/meta-surface-pattern.svg.argb32.ref.png | Bin 3778 -> 0 bytes test/meta-surface-pattern.svg.rgb24.ref.png | Bin 3760 -> 0 bytes test/recording-surface-pattern.c | 121 +++ test/recording-surface-pattern.gl.argb32.ref.png | Bin 0 -> 3130 bytes test/recording-surface-pattern.pdf.argb32.ref.png | Bin 0 -> 3908 bytes test/recording-surface-pattern.pdf.rgb24.ref.png | Bin 0 -> 3760 bytes test/recording-surface-pattern.ps2.argb32.ref.png | Bin 0 -> 3257 bytes test/recording-surface-pattern.ps2.rgb24.ref.png | Bin 0 -> 3873 bytes test/recording-surface-pattern.ps3.argb32.ref.png | Bin 0 -> 3257 bytes test/recording-surface-pattern.ps3.rgb24.ref.png | Bin 0 -> 3873 bytes test/recording-surface-pattern.quartz.ref.png | Bin 0 -> 4572 bytes .../recording-surface-pattern.quartz.rgb24.ref.png | Bin 0 -> 4063 bytes test/recording-surface-pattern.ref.png | Bin 0 -> 3072 bytes test/recording-surface-pattern.rgb24.ref.png | Bin 0 -> 3162 bytes test/recording-surface-pattern.svg.argb32.ref.png | Bin 0 -> 3778 bytes test/recording-surface-pattern.svg.rgb24.ref.png | Bin 0 -> 3760 bytes test/scale-offset-similar.meta.xfail.png | Bin 10752 -> 0 bytes test/scale-offset-similar.recording.xfail.png | Bin 0 -> 10752 bytes util/cairo-fdr/fdr.c | 8 +- util/cairo-sphinx/sphinx.c | 38 +- util/cairo-trace/trace.c | 10 +- util/trace-to-xml.c | 4 +- 81 files changed, 1845 insertions(+), 1838 deletions(-) commit df357f26ff72571acb840715efa4930054d4fdbe Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Oct 16 16:48:54 2009 +0100 Support component-alpha. Within our code base we carried a few hacks to utilize the component alpha capabilities of pixman, whilst not supporting the concept for our own masks. Thus we were setting it upon the pixman_image_t that we passed around through code that was blissfully unaware and indeed the component-alpha property was forgotten (e.g. upgrading glyph masks). The real issue is that without explicit support that a pattern carries subpixel masking information, that information is lost when using that pattern with composite. Again we can look at the example of compositing a sub-pixel glyph mask onto a remote xlib surface for further failure. src/cairo-ft-font.c | 5 --- src/cairo-gl-glyphs.c | 23 +++++++++--- src/cairo-gl-surface.c | 18 ++++++--- src/cairo-gstate.c | 17 ++++++--- src/cairo-image-surface.c | 55 ++++++++++++++++++++++------- src/cairo-pattern.c | 22 +++++++++-- src/cairo-pdf-surface.c | 10 ++++-- src/cairo-scaled-font.c | 14 ++++--- src/cairo-svg-surface.c | 10 ++++-- src/cairo-types-private.h | 71 ++++++++++++++++++++++++++++++++++++++ src/cairo-win32-font.c | 10 ++--- src/cairo-xlib-surface-private.h | 1 + src/cairo-xlib-surface.c | 43 ++++++++++++++++++---- src/cairoint.h | 69 +------------------------------------ 14 files changed, 234 insertions(+), 134 deletions(-) commit f0cd20e6cec445eb627c2708c2230c8bad1b64ce Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Oct 21 10:36:27 2009 +0100 [gl] Do not clear internal surfaces. Create a scratch surface that will be initialised as required for internal use. External surfaces, i.e. those returned to the user, are cleared as normal. src/cairo-gl-surface.c | 46 +++++++++++++++++++++++++++++++--------------- 1 files changed, 31 insertions(+), 15 deletions(-) commit 7c9ebd4a852ad709e57ed48b9610db00de79de7e Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Oct 21 09:04:30 2009 +0100 Make the surface->is_clear logic common A nasty surprise whilst profiling is that performing redundant clear operations is extremely painful. We can mitigate this somewhat by tracking the cleared state of surfaces and skipping repeated attempts to clear a surface. src/cairo-gl-surface.c | 2 + src/cairo-image-surface.c | 47 ++---------------------------- src/cairo-surface-private.h | 6 ++- src/cairo-surface.c | 66 ++++++++++++++++++++++++++++++++++++++---- src/cairoint.h | 1 - 5 files changed, 68 insertions(+), 54 deletions(-) commit 723055722f1d9a133fe9e78bb19165f2c7be720e Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Oct 21 10:40:51 2009 +0100 [doc] Add comments on when surfaces are cleared on construction. Or perhaps, more importantly, when the contents are left unmodified. src/cairo.h | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-) commit cef8194178b01eaa2d10c1ba8291a9a4c5a6d302 Author: Andrea Canciani <ranma42@gmail.com> Date: Tue Oct 20 14:37:28 2009 +0200 [test] Add surface-pattern-operator Test the results of compositing ALPHA and COLOR_ALPHA surfaces with different operators. test/Makefile.am | 4 + test/Makefile.sources | 1 + test/surface-pattern-operator.argb32.ref.png | Bin 0 -> 5217 bytes test/surface-pattern-operator.c | 117 +++++++++++++++++++++ test/surface-pattern-operator.rgb24.ref.png | Bin 0 -> 1942 bytes test/surface-pattern-operator.xlib.argb32.ref.png | Bin 0 -> 5171 bytes test/surface-pattern-operator.xlib.rgb24.ref.png | Bin 0 -> 1913 bytes 7 files changed, 122 insertions(+), 0 deletions(-) commit 710303ef15b9a1bf73b2b07b7aa51ec816d0aa07 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Oct 19 10:42:51 2009 +0100 [test] Update rotate-image-surface-paint Update this test case so the background is not the default border colour so that we spot when the backend pads out the transformed image surface. test/Makefile.am | 5 +- test/rotate-image-surface-paint.c | 78 ++++++++++++++----------- test/rotate-image-surface-paint.pdf.xfail.png | Bin 217 -> 358 bytes test/rotate-image-surface-paint.ps.ref.png | Bin 0 -> 236 bytes test/rotate-image-surface-paint.ps2.ref.png | Bin 212 -> 0 bytes test/rotate-image-surface-paint.ps3.ref.png | Bin 212 -> 0 bytes test/rotate-image-surface-paint.ref.png | Bin 191 -> 220 bytes test/rotate-image-surface-paint.svg.xfail.png | Bin 0 -> 387 bytes 8 files changed, 45 insertions(+), 38 deletions(-) commit ea39f0302a936711043aa6834ba0ab487736572b Author: Luo Jinghua <sunmoon1997@gmail.com> Date: Mon Oct 19 22:21:00 2009 +0800 atomic: correct libatomic_ops version of _cairo_atomic_int_cmpxchg AO_compare_and_swap_full() doesn't have the same semantic as _cairo_atomic_int_cmpxchg(). The former returns a TRUE on success FALSE otherwise while the later returns the atomic value. src/cairo-atomic-private.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit a2254e56474fcdf5f25232812cdbef30a2b5ea60 Author: Benjamin Otte <otte@gnome.org> Date: Sun Oct 18 22:12:13 2009 +0200 [gstate] Apply target device offsets to patterns immediately Previously target device offsets were applied in cairo-surface.c which could cause bugs when paths were taken as fallbacks, as for example pointed out by ade55037ffa596b690c6a1051394589f76eb1f48 and quick-fixed by 79190d89853958ee8252440d35a662fabf122afd. The quick-fix is now unnecessary and was removed. src/cairo-gstate.c | 4 +++ src/cairo-surface-fallback.c | 41 ++++------------------------- src/cairo-surface.c | 59 ------------------------------------------ 3 files changed, 10 insertions(+), 94 deletions(-) commit 4b720d56db72d314b3b7cedb05a53321b1d0adbe Author: Benjamin Otte <otte@gnome.org> Date: Sun Oct 18 21:32:10 2009 +0200 [clip] Remove non-existing functions from header src/cairo-clip-private.h | 9 --------- 1 files changed, 0 insertions(+), 9 deletions(-) commit cacf9ccedffa0c804a56c76c8ab17bf81831b621 Author: Benjamin Otte <otte@gnome.org> Date: Sun Oct 18 21:30:22 2009 +0200 [path] Fix compiler warnings src/cairo-path-fill.c | 7 +++---- 1 files changed, 3 insertions(+), 4 deletions(-) commit a70705b2ede8c0dc401f28405641e70f8a6d8d92 Author: Benjamin Otte <otte@gnome.org> Date: Sun Oct 18 21:30:06 2009 +0200 [xlib] Fix compiler warnings src/cairo-xlib-screen.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit 96117c1212be2bf39a300a212dec85466f49f31e Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Oct 17 10:36:10 2009 +0100 [test] Add radial-gradient-source ranma42 found a bug in compositing with a radial gradient using the SOURCE operator with EXTEND_NONE, as exercised here. test/Makefile.am | 2 + test/Makefile.sources | 1 + test/radial-gradient-source.argb32.ref.png | Bin 0 -> 272428 bytes test/radial-gradient-source.c | 115 ++++++++++++++++++++++++++++ test/radial-gradient-source.rgb24.ref.png | Bin 0 -> 193364 bytes 5 files changed, 118 insertions(+), 0 deletions(-) commit 54df07a3da2bfbbdbe2dde92ca298ac0d7b8d255 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Oct 16 10:11:41 2009 +0100 [surface] Don't AND in the desired content. Gah, that was a horrible mistake. It was a flawed hack to create Pixmaps of the correct depth when cloning patterns for blitting to the xlib backend. However, it had the nasty side-effect of discarding alpha when targeting Window surfaces. The correct solution is to simply correct the Pixmap of the desired depth and render a matching pattern onto the surface - i.e. a reversal the current acquire -> clone. See the forthcoming revised xcb backend on how I should have done it originally. src/cairo-directfb-surface.c | 2 -- src/cairo-gl-surface.c | 4 +--- src/cairo-glitz-surface.c | 3 --- src/cairo-image-surface.c | 4 ---- src/cairo-pattern.c | 15 +++------------ src/cairo-quartz-surface.c | 1 - src/cairo-surface-fallback-private.h | 1 - src/cairo-surface-fallback.c | 3 +-- src/cairo-surface.c | 14 ++++---------- src/cairo-xlib-surface.c | 18 +----------------- src/cairoint.h | 4 ---- src/test-fallback-surface.c | 1 - src/test-fallback16-surface.c | 2 -- 13 files changed, 10 insertions(+), 62 deletions(-) commit 6a19a82efd3afe8fb8bd30e5362b247de8efe159 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Oct 16 08:43:21 2009 +0100 [image] Clone the format for a similar surface with identical content Honour the incoming surface format when we are asked to create a similar surface with identical content. The goal of cairo_surface_create_similar() is to create an intermediate with similar characteristics to the original that can be used in place of the original and be quick to copy to the original. Matching the format for the same content, ensures that the blits between the two need only be a memcpy. src/cairo-image-surface.c | 11 +++++++++-- 1 files changed, 9 insertions(+), 2 deletions(-) commit ed94d7caad6b851f6f80fa4d67441ad0387a8cd4 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Oct 16 08:38:24 2009 +0100 [fallback] Create intermediate surface with same content. The goal is to create a similar surface with an identical format to maximise performance in the subsequent blit, e.g. the xlib backend could make the similar surface with an identical depth and so use the core protocol, or the image surface could indeed make an identical copy so that pixman only has to do a fast memcpy. As there is no direct method to specify such a clone, we ask the backend for a similar surface of identical content, and trust that the semantics are clear enough for the intent to obvious. src/cairo-surface-fallback.c | 12 +++++++----- 1 files changed, 7 insertions(+), 5 deletions(-) commit c739940137c4ffc6cc727ea30afc0e92f7ab1e80 Author: Carl Worth <cworth@cworth.org> Date: Thu Oct 15 16:24:44 2009 -0700 Increment version to 1.9.5 Just after the 1.9.4 snapshot. cairo-version.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit ad6334b9870c63e641b531d6e910c084b587d0f9 Author: Carl Worth <cworth@cworth.org> Date: Thu Oct 15 15:33:20 2009 -0700 Add mising images to REFERENCE_IMAGES list. Again, the kind of thing that only gets fixed at release time. But at least we have a nice test for this. test/Makefile.am | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-) commit cdad5e10768978b11088f82858a1e6e0037dc0a7 Author: Carl Worth <cworth@cworth.org> Date: Thu Oct 15 14:58:39 2009 -0700 Mark in-fill-empty-trapezoid as an XFAIL test. Otherwise, it was disrupting my attempts to release a snapshot, (since it doesn't respect CAIRO_TEST_TARGET=" " and not run like most of the tests do). test/Makefile.am | 5 +++++ test/in-fill-empty-trapezoid.c | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) commit b0f309abb33fb7e068199c941835af0217d8d1fc Author: Carl Worth <cworth@cworth.org> Date: Thu Oct 15 14:40:22 2009 -0700 Update version to 1.9.4 In preparation for the 1.9.4 snapshot. cairo-version.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 3b113275f8b081685227fc073c03f64bb1a229d3 Author: Carl Worth <cworth@cworth.org> Date: Thu Oct 15 14:17:30 2009 -0700 Remove stale references to non-existant reference images. This is just one of those things that we don't get right until someone tries running "make distcheck". test/Makefile.am | 7 ------- 1 files changed, 0 insertions(+), 7 deletions(-) commit 37078b262a268179f8b7a3dfdc263e1a403daa7d Author: Carl Worth <cworth@cworth.org> Date: Thu Oct 15 14:11:04 2009 -0700 NEWS: Update with correct data for 1.9.4 snapshot NEWS | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) commit d5609ca04ecc5f5e3d5cef8ca0e67fa98cd653de Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Thu Oct 15 17:47:33 2009 +0300 [build] Check compiler flags using AC_TRY_LINK instead of AC_TRY_COMPILE. Turns out we were passing suncc warning suppression flags to gcc by mistake since -e<entry point> is actually a valid option for gcc. This caused the -erroff=E_ENUM_TYPE_MISMATCH_ARG and other -erroff options to be passed to the linker. In the normal case of a GNU ld linker this doesn't matter since it ignores bogus entry points, but the GNU gold linker replaces a bogus entry point with NULL. This patch makes the CAIRO_CC_TRY_FLAG() check stricter by testing that the flag doesn't interfere with linking executables. build/aclocal.cairo.m4 | 19 ++++++++----------- 1 files changed, 8 insertions(+), 11 deletions(-) commit 79190d89853958ee8252440d35a662fabf122afd Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Oct 15 14:05:37 2009 +0100 [surface] Avoid double application of device offset when calling fill() _cairo_surface_fallback_paint() attempts to avoid a clipped operation if we can convert the paint into a fill of the clipmask. However by calling _cairo_surface_fill() we incur a double application of device offset to the source, triggering various failures. Company spotted this and managed to extract an excellent minimal test case, test/clip-device-offset. This commit fixes that failure. src/cairo-surface-fallback.c | 41 +++++++++++++++++++++++++++++++++++------ 1 files changed, 35 insertions(+), 6 deletions(-) commit ade55037ffa596b690c6a1051394589f76eb1f48 Author: Benjamin Otte <otte@gnome.org> Date: Thu Oct 15 13:19:11 2009 +0100 [test] Add clip-device-offset Exercises a bug demonstrated by WebKit with clipping + device offsets. test/Makefile.am | 2 + test/Makefile.sources | 1 + test/clip-device-offset.argb32.ref.png | Bin 0 -> 175 bytes test/clip-device-offset.c | 79 ++++++++++++++++++++++++++++++++ test/clip-device-offset.rgb24.ref.png | Bin 0 -> 168 bytes 5 files changed, 82 insertions(+), 0 deletions(-) commit dac73d260a9b9a848bb97436ad84081c51629511 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Oct 15 12:18:47 2009 +0100 [build] Link against pthread-stubs Avoid pulling in the real pthread library if the application is single threaded and not using pthreads, by linking against pthread-stubs instead. build/configure.ac.features | 1 + configure.ac | 8 +++++++- src/cairo-mutex-impl-private.h | 2 +- test/Makefile.am | 4 ++++ test/cairo-test-trace.c | 10 +++++----- test/cairo-test.c | 6 +++--- util/cairo-trace/Makefile.am | 2 +- 7 files changed, 22 insertions(+), 11 deletions(-) commit ef9286751d8346ecb803bfb5916581ee4dfc84db Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Oct 13 16:10:39 2009 +0100 [atomic] Fallback to libatomic-ops-dev Use libatomic-ops-dev in preference to mutex-based atomics, if we do not have the builtin atomic intrinsics available. build/aclocal.cairo.m4 | 10 ++++++++++ src/cairo-atomic-private.h | 41 ++++++++++++++++++++++++++++++++++++----- src/cairo-surface.c | 4 ++-- src/cairo-xlib-private.h | 2 +- src/cairo-xlib-screen.c | 16 +++++++++------- src/cairo.c | 10 +++++----- 6 files changed, 63 insertions(+), 20 deletions(-) commit d85eda97dd9116f51e0255b29652f4b52ba4f8e9 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Oct 13 14:14:55 2009 +0100 [pattern] Compute extents for gradients As noted in the comments we could also compute the pattern extents for gradients with CAIRO_EXTEND_NONE under certain circumstances, i.e. radial gradients and device axis aligned linear gradients. src/cairo-pattern.c | 184 +++++++++++++++++++++++++++++++++++---------------- 1 files changed, 126 insertions(+), 58 deletions(-) commit 3a83bc8617dae3cc2bfea862f252338463871648 Author: Adrian Johnson <ajohnson@redneon.com> Date: Fri Oct 2 23:28:10 2009 +0930 PDF: Fix regression caused by 1ae5a419 Bug 24240 acroread prints error message when printing src/cairo-pdf-surface.c | 12 ++++++++---- 1 files changed, 8 insertions(+), 4 deletions(-) commit 91a4f59f135dd42a28e14be55d1f08712c0c3097 Author: Adrian Johnson <ajohnson@redneon.com> Date: Fri Oct 2 23:11:54 2009 +0930 PDF: Fix regression caused by 1ae5a419 Bug 24240 first char missing when printing a PDF. src/cairo-scaled-font-subsets.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 39284159234d5318c90fa3a72178cd3d14fe0fbb Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Sep 30 20:11:12 2009 +0100 [boilerplate/xcb] Fix pixmap depth All the error checking, finally pointed out that I was creating a pixmap with the wrong depth! Oops. boilerplate/cairo-boilerplate-xcb.c | 19 ++++++++++++++++--- 1 files changed, 16 insertions(+), 3 deletions(-) commit e9bc2180d73acc7133d715ed4380ed20fb4364c0 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Sep 30 19:50:44 2009 +0100 [xcb] Deferred error checking. XCB avoids the dreaded abort on XError mechanism by forcing the client to perform deferred error checking. So do so. This allows us to combine the fire-and-forget rendering model with accurate error checking, without killing the client or mixing our errors with theirs. XCB for the win! boilerplate/cairo-boilerplate-xcb.c | 17 + src/cairo-freelist-private.h | 5 + src/cairo-freelist.c | 33 ++ src/cairo-xcb-surface.c | 712 +++++++++++++++++++++++------------ 4 files changed, 521 insertions(+), 246 deletions(-) commit 8e4e0aa7ee5b4e0963409cda825705a09aae61e1 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Sep 30 17:50:09 2009 +0100 [boilerplate/xcb] Check for connection errors during test boilerplate/cairo-boilerplate-xcb.c | 51 ++++++++++++++++---- test/cairo-test.c | 88 +++++++++++++++++----------------- 2 files changed, 84 insertions(+), 55 deletions(-) commit 395555b116a497c99b9e8365a202377c344c0c45 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Sep 30 00:37:36 2009 +0100 [xlib] Suppress warning that should never have been. src/cairo-xlib-surface.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 42ea356c0393288eea16eb5c591fa51009f85cb9 Author: Adrian Johnson <ajohnson@redneon.com> Date: Wed Sep 30 21:21:42 2009 +0930 Fix truetype subset crash Bug 24213 src/cairo-truetype-subset.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 6809e1216119e16c5be236418dc560d2e9bf854d Author: Benjamin Otte <otte@gnome.org> Date: Wed Sep 30 08:54:19 2009 +0200 [API] Make _cairo_meta_surface_replay() private again Replaying a meta surface can be achieved by using it as a source for a cairo_paint() so exporting a separate API is unnecesary and confusing. So after consulting Chris and Carl, we decided to remove the function again. NEWS | 1 - src/cairo-meta-surface-private.h | 5 +++- src/cairo-meta-surface.c | 39 ++++++++++++++++--------------------- src/cairo-paginated-surface.c | 4 +- src/cairo-script-surface.c | 6 ++-- src/cairo-surface.c | 4 +- src/cairo-svg-surface.c | 2 +- src/cairo-type3-glyph-surface.c | 4 +- src/cairo-user-font.c | 2 +- src/cairo-vg-surface.c | 2 +- src/cairo-xml-surface.c | 2 +- src/cairo.h | 4 --- test/cairo-test-trace.c | 8 +++++- util/cairo-trace/trace.c | 22 --------------------- 14 files changed, 40 insertions(+), 65 deletions(-) commit f8c49b4187a32b60408b23b2c2abce1778a8dc95 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Sep 29 03:02:40 2009 +0100 [xlib] XRequest bread crumbing Add bread crumbs in the form of NoOperations that can be parsed by xtrace and very useful when debugging protocol/server errors. src/cairo-xlib-surface.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 57 insertions(+), 0 deletions(-) commit 1c4f61ec5068a5935eb6d5dd1d6f2c0275b70529 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Sep 29 03:01:37 2009 +0100 [tessellator] Invalid conversion of list head to edge. When scanning for collinear right edges, we need to check that we do not go beyond the end of the array. src/cairo-bentley-ottmann-rectangular.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit f23ae97e307f00a79cbf2e01f9ca20da29ea87c3 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Sep 24 16:30:57 2009 +0100 [perf] Support parsing reports from stdin perf/cairo-perf-compare-backends.c | 22 ++++++++++++---------- perf/cairo-perf-report.c | 29 +++++++++++++++++++---------- 2 files changed, 31 insertions(+), 20 deletions(-) commit 50163a9fafa77dd1135ca5b6b03c7ec5619687c1 Author: Benjamin Otte <otte@gnome.org> Date: Tue Sep 29 00:23:12 2009 +0200 [xlib] Set proper bpp when computing format from masks Fixing omission in caa9eed4646e78a62ffb49d9c4f48c0b351c7a7f src/cairo-xlib-surface.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit a160c8c4009e069db53bec79abd8926231de9a7f Author: Benjamin Otte <otte@gnome.org> Date: Mon Sep 28 23:52:14 2009 +0200 [xlib] Handle 24bpp formats during dithering src/cairo-xlib-surface.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-) commit 9e89de813516c48baed67a4d18325971cd42cd4a Author: Benjamin Otte <otte@gnome.org> Date: Mon Sep 28 23:51:14 2009 +0200 [image] Fix masks computation for BGRx format Patch originally by Mark Kettenis src/cairo-image-surface.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) commit 4b2c74e28531e403a9538f20a3ace7b114f9bbae Author: Adrian Johnson <ajohnson@redneon.com> Date: Mon Sep 28 22:57:10 2009 +0930 PS: Use standard page size names for some common sizes Some PS viewers like gv use the label in the %PageMedia DSC comment as the displayed page size. The page names and sizes were obtained from the list at: http://www.gnu.org/software/gv/manual/html_node/Paper-Keywords-and-paper-size-in-points.html src/cairo-ps-surface.c | 66 +++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 62 insertions(+), 4 deletions(-) commit db5e3db0a9b218bebad6921a95d5244047050348 Author: Adrian Johnson <ajohnson@redneon.com> Date: Fri Sep 25 23:07:56 2009 +0930 PS: Add DocumentMedia/PageMedia DSC comments Provide default DocumentMedia and PageMedia DSC comments if the user does not specify them using cairo_ps_surface_dsc_comment(). This is required so that PostScript viewers such as gv use the correct page size. src/cairo-ps-surface-private.h | 1 + src/cairo-ps-surface.c | 88 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 89 insertions(+), 0 deletions(-) commit caa9eed4646e78a62ffb49d9c4f48c0b351c7a7f Author: Benjamin Otte <otte@gnome.org> Date: Thu Sep 24 23:42:05 2009 +0200 [xlib] Handle case in draw_image() where pixman format is not RGB When an image cannot be expressed as masks, its data cannot be used in an XImage. In that case, we use pixman to copy the image to the desired format. src/cairo-xlib-surface.c | 50 ++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 44 insertions(+), 6 deletions(-) commit 9f5fe6711566ee34afe210f271f1c5a061efa745 Author: Benjamin Otte <otte@gnome.org> Date: Thu Sep 24 22:57:39 2009 +0200 [image] Return cairo_bool_t from _pixman_format_to_masks Return FALSE when the pixman format does not support ARGB masks. In particular, return FALSE for YUV formats. src/cairo-image-surface.c | 21 ++++++++++----------- src/cairoint.h | 2 +- 2 files changed, 11 insertions(+), 12 deletions(-) commit 120247ac55d92d9c9b24fad45c765d16e692f355 Author: Adrian Johnson <ajohnson@redneon.com> Date: Thu Sep 24 23:02:38 2009 +0930 Add EPS test This test demonstrates a regression in the EPS output since 1.8.8. The ps-eps.ref.eps was created with 1.8.8. test/Makefile.am | 2 + test/Makefile.sources | 1 + test/ps-eps.c | 85 +++++++++++++++++++++++++++++++++++++++++++++++++ test/ps-eps.ref.eps | 84 ++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 172 insertions(+), 0 deletions(-) commit c8a4f486712eba4ad0ccbf5ae3b18920137d5b1b Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Sep 23 18:08:34 2009 +0100 [image] Do not trust user supplied data to be clear Gah, more important than the whitespace was the reversal of is_clear... src/cairo-image-surface.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 03bce099eae68643979e5742b2703b2b2e835cca Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Sep 23 17:56:00 2009 +0100 [image] Tweak coding style Whitespace spam. src/cairo-image-surface.c | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-) commit ab558fa843accc440686f7b8eda197277a6a4eb2 Author: Benjamin Otte <otte@gnome.org> Date: Wed Sep 23 17:40:17 2009 +0200 [image] Move setting of is_clear to _create_with_pixman_format() Simplifies code and ensures other users of that function don't run into the same bug. src/cairo-image-surface.c | 18 ++++++------------ 1 files changed, 6 insertions(+), 12 deletions(-) commit 07ee9cfbf07deba228e73d26b419a4e130de24e3 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Sep 23 15:33:23 2009 +0100 [image] Do assumption initial user data is cleared. Benjamin Otte pointed out the error of my ways that a clear on a cairo_image_surface_create_for_data() was not working. This is because I modified the image surface to skip clears when it knows the target data has been cleared. This flag must be reset when the user interacts with the surface, such as providing the initial surface data. src/cairo-image-surface.c | 26 ++++++++++++++++++++++---- 1 files changed, 22 insertions(+), 4 deletions(-) commit 9948b5180aa4312b3184d9ba46e9ad6f0d8e700c Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Sep 22 18:20:03 2009 +0100 [test] Revamp surface-source Include a translucent region in the source that exercises the xlib bug that I'm trying to fix. Hmm. test/Makefile.am | 18 ++++++++---- test/glitz-surface-source.argb32.ref.png | Bin 0 -> 377 bytes test/glitz-surface-source.ref.png | Bin 268 -> 0 bytes test/glitz-surface-source.rgb24.ref.png | Bin 0 -> 301 bytes test/image-surface-source.argb32.ref.png | Bin 0 -> 377 bytes test/image-surface-source.ref.png | Bin 332 -> 0 bytes test/image-surface-source.rgb24.ref.png | Bin 0 -> 301 bytes test/pdf-surface-source.argb32.ref.png | Bin 0 -> 377 bytes test/pdf-surface-source.ref.png | Bin 268 -> 0 bytes test/pdf-surface-source.rgb24.ref.png | Bin 0 -> 301 bytes test/ps-surface-source.argb32.ref.png | Bin 0 -> 377 bytes test/ps-surface-source.ref.png | Bin 268 -> 0 bytes test/ps-surface-source.rgb24.ref.png | Bin 0 -> 301 bytes test/quartz-surface-source.argb32.ref.png | Bin 0 -> 377 bytes test/quartz-surface-source.ref.png | Bin 332 -> 0 bytes test/quartz-surface-source.rgb24.ref.png | Bin 0 -> 301 bytes test/surface-source.c | 37 +++++++++++++++++++++++++- test/svg-surface-source.argb32.ref.png | Bin 0 -> 377 bytes test/svg-surface-source.ref.png | Bin 268 -> 0 bytes test/svg-surface-source.rgb24.ref.png | Bin 0 -> 301 bytes test/test-fallback16-surface-source.ref.png | Bin 268 -> 0 bytes test/xlib-surface-source.argb32.ref.png | Bin 0 -> 377 bytes test/xlib-surface-source.ref.png | Bin 268 -> 0 bytes test/xlib-surface-source.rgb24.ref.png | Bin 0 -> 301 bytes 24 files changed, 47 insertions(+), 8 deletions(-) commit 941d3693fac831c4ce8c61cbac7c77b566b97611 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Sep 22 14:43:45 2009 +0100 [test] Exercise push-group-color. Hunting for a known bug in the xlib backend where it invalidly converts an argb32 source to rgb24. However, this does not appear to be that bug, but still a useful exercise nevertheless. test/Makefile.am | 2 + test/Makefile.sources | 1 + test/push-group-color.c | 141 ++++++++++++++++++++++++++++++++++++ test/push-group-color.ref.png | Bin 0 -> 2902 bytes test/push-group-color.xlib.ref.png | Bin 0 -> 2964 bytes 5 files changed, 144 insertions(+), 0 deletions(-) commit 30f45ce5f7d639dd5a0b60f544b3535e3bc2105d Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Sep 22 15:15:47 2009 +0100 [gl] Handle an absent visual. If we cannot find the correct visual for the fbconfig, return an error instead of crashing. The difference is subtle, granted. src/cairo-gl-surface.c | 8 ++++++++ src/cairo-glx-context.c | 7 ++++--- 2 files changed, 12 insertions(+), 3 deletions(-) commit e74cb7fa3eb9a9bcdeb298d969b70fd99ba50f3d Author: Adrian Johnson <ajohnson@redneon.com> Date: Tue Sep 22 22:44:34 2009 +0930 win32-printing: correct the use of the CAIRO_HAS_WIN32_FONT #ifdef it was wrapping code required for non windows fonts. src/cairo-win32-printing-surface.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 3dd2cc8f6d84253f93affecd3022c9fe4a25d60f Author: Adrian Johnson <ajohnson@redneon.com> Date: Tue Sep 22 22:40:53 2009 +0930 win32-printing: fix meta surface pattern regression caused by bed2701e src/cairo-win32-printing-surface.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 7658635c654b694b516e5dd44a43611d94e91abd Author: Adrian Johnson <ajohnson@redneon.com> Date: Tue Sep 22 22:36:20 2009 +0930 win32-printing: Allow GDI CTM with scale < 1 to be set To better support creating EMF files with the win32-printing surface, allow a GDI CTM with scale < 1 to be used. http://lists.cairographics.org/archives/cairo/2009-September/018110.html src/cairo-win32-printing-surface.c | 90 ++++++++++++++++++++++++++++-------- src/cairo-win32-private.h | 2 + 2 files changed, 73 insertions(+), 19 deletions(-) commit 19c091670302fd23a676e680308df49a4ba06687 Author: Adrian Johnson <ajohnson@redneon.com> Date: Tue Sep 22 22:35:33 2009 +0930 Make win32 fonts work in EMF files created by win32-printing src/cairo-win32-printing-surface.c | 37 ++++++++++++++++++++++++++++++++++++ 1 files changed, 37 insertions(+), 0 deletions(-) commit f01a54266d57763635f984982bec001a393d8aa2 Author: Adrian Johnson <ajohnson@redneon.com> Date: Tue Sep 22 22:34:56 2009 +0930 Fix compiler warnings in win32-surface src/cairo-win32-surface.c | 12 +++++++++--- 1 files changed, 9 insertions(+), 3 deletions(-) commit 23663e2078e34659af43bd0e62bb1fb7a94cc71e Author: Adrian Johnson <ajohnson@redneon.com> Date: Tue Sep 22 22:34:21 2009 +0930 Fix compiler error on cygwin src/cairo-win32-surface.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 7ecd413fab7c55918c6f3c4c272b5e8b5aa89aa7 Author: Adrian Johnson <ajohnson@redneon.com> Date: Tue Sep 22 22:33:14 2009 +0930 Add WINVER defines to cairo-mutex-impl-privaye.h The WINVER defines should always be defined before including windows.h src/cairo-mutex-impl-private.h | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-) commit 605ec22ab5103e16052591517f86fe558133fb8e Author: Adrian Johnson <ajohnson@redneon.com> Date: Tue Sep 22 22:17:27 2009 +0930 Use _WIN32 to check for win32 mutex Commit 535bcaa1 moved pthread after win32 to fix mingw build problems. However this breaks cygwin builds. On cygwin HAVE_WINDOWS_H is defined but _WIN32 is not. This was causing windows.h to be included which defines _WIN32. As a result the win32 code in cairo-misc.c was being compiled but the win32 declaration in cairint.h was not included. Fix this by using _WIN32 to enable the win32 mutex functions since _WIN32 is defined by mingw, visual C++, and winegcc, but not cygwin. On cygwin, posix functions are preferred as it is a unix emulation environment. src/cairo-mutex-impl-private.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit e00d0627494a4b15ed3b74a704695ca8b81a350e Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Sep 21 13:50:00 2009 +0100 [xlib] Fix recent bug in unbounded trapezoids Gah! I had believed that the dst extents and the clip were correct to enable unbounded fixup for the unbounded trapezoids. I was wrong, so I need to requery the trapezoid extents. As this information is already known, I should update the interface to pass along all relevant information. src/cairo-surface.c | 23 ++++++++++------------- src/cairo-xlib-surface.c | 32 +++++++++++++++++++------------- 2 files changed, 29 insertions(+), 26 deletions(-) commit 378b1e73d9f27e9b54ea01b10e588b361848d0cd Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Sep 21 03:10:53 2009 +0100 [fallback] Special case single composite rectangle Avoid the overhead of region-from-traps extraction for the very frequent case of using a single (possibly clipped) rectangle with a pattern source. src/cairo-surface-fallback.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 42 insertions(+), 0 deletions(-) commit 35daf95db8aa4f0c254891f180aa4996dd464a60 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Sep 21 03:31:22 2009 +0100 [xlib] Trim a few redundant steps when uploading glyphs Cleanup the glyph coercion routines to avoid the temporary cairo_t (as we can just cairo_surface_paint() directly). src/cairo-xlib-surface.c | 23 ++++++----------------- 1 files changed, 6 insertions(+), 17 deletions(-) commit 9b7c5d95055c4ea5da46c53263050d6ec1331c08 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Sep 20 18:46:19 2009 +0100 [xlib] Cleanse creation of similar surfaces. Reduce two nearly identical routines to one. src/cairo-xlib-surface.c | 197 +++++++++++++++++++++------------------------- 1 files changed, 91 insertions(+), 106 deletions(-) commit 878cef62b525e9f13ab2a8ab562ba8b6628aaa1f Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Sep 20 18:45:09 2009 +0100 [xlib] Interim CAIRO_DEBUG variable to specify xrender level Use CAIRO_DEBUG=xrender-version=x.y to override what the server reports. Useful to test cairo's behaviour against older servers. src/cairo-xlib-display.c | 23 +++++++++++++++++++---- 1 files changed, 19 insertions(+), 4 deletions(-) commit 531e8045980c966b8e51df933721f9b86c6b1539 Author: Jeff Muizelaar <jmuizelaar@mozilla.com> Date: Fri Sep 18 12:17:46 2009 -0400 Add a description of how we compute the spline_error_squared. src/cairo-spline.c | 17 +++++++++++------ 1 files changed, 11 insertions(+), 6 deletions(-) commit f4336352405ee7c184d45a73cdd6c1a0526843db Author: Behdad Esfahbod <behdad@behdad.org> Date: Wed Sep 16 15:46:14 2009 -0400 Set LC_ALL=C instead of LANG=C doc/public/check-doc-coverage.sh | 4 +++- doc/public/check-doc-syntax.sh | 3 ++- src/check-def.sh | 3 ++- src/check-doc-syntax.sh | 3 ++- src/check-headers.sh | 3 ++- src/check-plt.sh | 3 ++- src/check-preprocessor-syntax.sh | 3 ++- 7 files changed, 15 insertions(+), 7 deletions(-) commit 56c9b2de7a2b93b2e0c59cf98326d8c0d4d508ba Author: Sebastian Dröge <sebastian.droege@collabora.co.uk> Date: Tue Sep 15 17:26:59 2009 +0200 Use __uint128_t and __int128_t if available GCC uses a peculiar name for a real 128-bit integer on x86-64. Speedups, xlib on a gm45 ======================== poppler 41246.56 -> 35102.82: 1.18x speedup swfdec-youtube 12623.01 -> 11936.79: 1.06x speedup Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> build/configure.ac.system | 2 +- src/cairo-wideint-private.h | 1 + src/cairo-wideint-type-private.h | 6 +++ src/cairo-wideint.c | 91 +++++++++++++++++-------------------- 4 files changed, 50 insertions(+), 50 deletions(-) commit ccf84a8883ebb8d2ee8f55eb53da4dfc96887de0 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Sep 15 14:22:57 2009 +0100 [perf] Reorganise cairo-perf In preparation to creating a new hub to control performance measuring and reporting, move the current cairo-perf out of the way. perf/.gitignore | 3 + perf/Makefile.am | 84 +- perf/box-outline.c | 102 - perf/cairo-perf-cover.c | 339 --- perf/cairo-perf-diff | 2 +- perf/cairo-perf-micro.c | 596 +++++ perf/cairo-perf.c | 596 ----- perf/composite-checker.c | 114 - perf/dragon.c | 249 -- perf/fill.c | 119 - perf/glyphs.c | 99 - perf/intersections.c | 157 -- perf/long-dashed-lines.c | 71 - perf/long-lines.c | 145 -- perf/mask.c | 299 --- perf/micro/box-outline.c | 102 + perf/micro/cairo-perf-cover.c | 339 +++ perf/micro/composite-checker.c | 114 + perf/micro/dragon.c | 249 ++ perf/micro/fill.c | 119 + perf/micro/glyphs.c | 99 + perf/micro/intersections.c | 157 ++ perf/micro/long-dashed-lines.c | 71 + perf/micro/long-lines.c | 145 ++ perf/micro/mask.c | 299 +++ perf/micro/mosaic.c | 173 ++ perf/micro/mosaic.h | 4387 ++++++++++++++++++++++++++++++++++++ perf/micro/paint-with-alpha.c | 49 + perf/micro/paint.c | 48 + perf/micro/pattern_create_radial.c | 103 + perf/micro/pythagoras-tree.c | 91 + perf/micro/rectangles.c | 118 + perf/micro/rounded-rectangles.c | 141 ++ perf/micro/spiral.c | 349 +++ perf/micro/stroke.c | 97 + perf/micro/subimage_copy.c | 77 + perf/micro/tessellate.c | 178 ++ perf/micro/text.c | 66 + perf/micro/twin.c | 56 + perf/micro/unaligned-clip.c | 70 + perf/micro/world-map.c | 116 + perf/micro/world-map.h | 196 ++ perf/micro/zrusin-another.h | 668 ++++++ perf/micro/zrusin.c | 95 + perf/mosaic.c | 173 -- perf/mosaic.h | 4387 ------------------------------------ perf/paint-with-alpha.c | 49 - perf/paint.c | 48 - perf/pattern_create_radial.c | 103 - perf/pythagoras-tree.c | 91 - perf/rectangles.c | 118 - perf/rounded-rectangles.c | 141 -- perf/spiral.c | 349 --- perf/stroke.c | 97 - perf/subimage_copy.c | 77 - perf/tessellate.c | 178 -- perf/text.c | 66 - perf/twin.c | 56 - perf/unaligned-clip.c | 70 - perf/world-map.c | 116 - perf/world-map.h | 196 -- perf/zrusin-another.h | 668 ------ perf/zrusin.c | 95 - 63 files changed, 9414 insertions(+), 9411 deletions(-) commit 4152cd90e25ffa9d2a3683c790bd2891a58c52de Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Mon Sep 14 14:29:01 2009 +0300 [autoconf] Comment on the SIZEOF_VOID__ -> SIZEOF_VOID_P workaround. Explain where the weird SIZEOF_VOID__ comes from. src/cairo-atomic-private.h | 2 ++ util/cairo-trace/trace.c | 2 ++ 2 files changed, 4 insertions(+), 0 deletions(-) commit cd94bf8bf30de9aa8dfec1a06a7ef3386944c974 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Mon Sep 14 03:41:42 2009 -0600 [trace] Look harder for the cairo-trace.so library. On OpenBSD the convention is to not use symlinks from unversioned library names to versioned library names. This breaks cairo-trace because it looks for cairo-trace.so explicitly, but on OpenBSD only cairo-trace.so.0.0 is installed. The right thing to do is probably to source the cairo-trace.la file and look for a file name there somehow. Instead this commit just looks for a likely looking file or symlink in the install directory. util/cairo-trace/cairo-trace.in | 17 ++++++++++++++++- 1 files changed, 16 insertions(+), 1 deletions(-) commit a343c8c42d3adc8f52afd09bdfbbcfd5299df49e Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Mon Sep 14 02:33:26 2009 -0600 [trace] Don't use pthread_key_delete. On OpenBSD libc doesn't provide pthread stubs like glibc on Linux or newer libcs from FreeBSD. However libX11 does provide a stubs for a subset of the pthread functions (formerly in libXThrStub, now moved into libX11 proper), but pthread_key_delete() is not one of the stubbed ones. So, on OpenBSD cairo's non-linking of libpthread accidentally works as long as the xlib-surface is enabled, which is nearly always the case. This patch makes trace.c stand at the same precipice as cairo itself by reverting to only a subset of the pthreads functions stubbed by libX11. util/cairo-trace/trace.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) commit cf0fed2191c2b5ebce8855def1dd302ccf8e039a Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Sun Sep 13 17:35:29 2009 -0600 [build] Check for dlsym in both libdl and libc. The BSDs have dlsym() in libc rather than libdl. boilerplate/cairo-boilerplate.c | 4 ++-- configure.ac | 12 +++++++----- util/cairo-trace/Makefile.am | 6 +++++- 3 files changed, 14 insertions(+), 8 deletions(-) commit 1c7ac6c47addd6825c4f49f514fe3ffb708e3813 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Sun Sep 13 17:56:56 2009 -0600 [build] Work around autoconf void* -> VOID__ name conversion bug. The autoconf shipping with OpenBSD 4.5 converts sizeof(void*) to SIZEOF_VOID__ rather than SIZEOF_VOID_P. Work around that by defining SIZEOF_VOID_P if required. src/cairo-atomic-private.h | 4 ++++ util/cairo-trace/trace.c | 4 ++++ 2 files changed, 8 insertions(+), 0 deletions(-) commit 12470fd7010ea0748c8dcc9014d1cd0f52f51a3b Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Sep 14 10:36:08 2009 +0100 [configure] Setup GL CFLAGS before checking for GLX configure.ac | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit 9c2790ccc48392bfe039626ebb383070aa18fe56 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Sep 14 10:08:57 2009 +0100 [build] Add a default message for when GLEW isn't built And it appears I touched the build system again and autoregenerated the feature headers. boilerplate/Makefile.win32.features | 8 -------- build/Makefile.win32.features-h | 1 - configure.ac | 5 +++-- src/Makefile.win32.features | 8 -------- util/cairo.modules | 1 + 5 files changed, 4 insertions(+), 19 deletions(-) commit 6d4f3c40eff7d070b1c9759038444928c6754efe Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Sep 14 09:19:10 2009 +0100 Add a private copy of GLEW This appears to be the simplest mechanism to build libglew at the moment - should a system copy be unavailable. Fortunately libglew is now distributed under a permissive licence. If you want to pass 'make -C src check' you have to use the system copy, or spend quite a bit of time cairo-fying libglew. boilerplate/Makefile.win32.features | 8 + build/Makefile.win32.features-h | 1 + build/configure.ac.features | 1 + configure.ac | 19 +- src/Makefile.am | 2 + src/Makefile.sources | 3 + src/Makefile.win32.features | 8 + src/glew/GL/glew.h |12262 +++++++++++++++++++++++++++++++++++ src/glew/GL/glxew.h | 1397 ++++ src/glew/LICENSE.txt | 73 + src/glew/glew.c |12180 ++++++++++++++++++++++++++++++++++ util/cairo.modules | 10 +- 12 files changed, 25955 insertions(+), 9 deletions(-) commit 9ad26f74b0059645d865a20c387fa4bd460cabc8 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Sep 13 23:16:57 2009 +0100 [configure] Fallback to detect OpenGL headers When not using mesa, we can not rely on a pkgconfig file, so just rely on the presence of the OpenGL headers instead. configure.ac | 11 ++++++++--- 1 files changed, 8 insertions(+), 3 deletions(-) commit 71c3b2888cc81e6d55782388d14bb8d806e77d07 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Sun Sep 13 20:24:29 2009 +0300 [win32] Sync Makefile.win32.features. Ooops.. wasn't sure if I should commit this or not. build/Makefile.win32.features | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit ba21f213560fa239a02ae28af4eb1d3a6b7254e5 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Sun Sep 13 18:21:38 2009 +0100 [trace] Don't trace internal cairo calls on Solaris. On various configurations of Solaris cairo-trace likes to trace internal calls to the API from within cairo and cairo-trace itself. On Linux the slim_hidden_proto stuff avoids this by name mangling and symbol alias magic, but on Solaris that doesn't work so we're left with either no hidden symbols at all or using normal ELF hidden symbol attributes, but neither of those prevent internal calls to cairo from being traced of course. This commit provides a per-thread entry/exit trace counter for use when we can't use name mangling to hide internal API calls. As a side-effect it may hide actual client API calls from callback functions called by cairo, but such use cases ought to be rare. util/cairo-trace/trace.c | 465 ++++++++++++++++++++++++++++++++-------------- 1 files changed, 327 insertions(+), 138 deletions(-) commit f5bcb2f36e7dba9cfba5d697e1401dcd00603812 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Sun Sep 13 12:47:19 2009 +0100 [build] Enable building cairo-trace on Solaris. Solaris supports LD_PRELOAD too! configure.ac | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit ce8c842a70d3f23527dcbd889b022103483341f2 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Sun Sep 13 12:53:07 2009 +0100 [trace] Make cairo-trace and its symbol-lookup automatically configured. The build shouldn't fail if we can't make our optional performance tools. configure.ac | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 2fb59a69f4509c2116f16bd6d376f35e3e2eb709 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Sun Sep 13 14:27:03 2009 +0100 [trace] Don't rely on the constructor attribute to initialise the tracer. Use pthread_once() at cairo API entry points to initialise the library if required. This side steps the issues with the __constructor__ attribute vs _init()/_fini() on Solaris and different tracer/tracee runtimes which result in the constructors not being run in cairo-trace.so. util/cairo-trace/trace.c | 176 +++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 174 insertions(+), 2 deletions(-) commit 18a441984b649f558c6478f24a7987941acadbe1 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Sun Sep 13 13:53:27 2009 +0100 [trace] Don't try and propagate a void result. The pattern return <function returning void>( ... ); is a gccism not supported by Sun Studio. util/cairo-trace/trace.c | 136 ++++++++++++++++++++++++---------------------- 1 files changed, 70 insertions(+), 66 deletions(-) commit fee5c58c6caecdbdb387fe39bd6ed94faf7f6ae9 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Sun Sep 13 13:09:47 2009 +0100 [trace] Avoid warnings from assigning a void pointer to a function pointer. The Sun Studio compiler complains a *lot* when assigning the result of dlsym to a function pointer. Cast the result to the proper type first.:w util/cairo-trace/trace.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 19881012cb31ec2aebf556e2c25b53e8387dc689 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Sep 13 16:36:12 2009 +0100 [image] Add pixel masks for BGRA formats pixman introduced the BGRA pixel type not too long ago, and so we need to update our pixman_format_code_t to cairo_format_masks_t translator. src/cairo-image-surface.c | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletions(-) commit f8a8f297f298d81899803a1b2bbca007418408b5 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Sep 13 10:58:59 2009 +0100 [trace] Stray trailing ';' in bswap macros util/cairo-trace/trace.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit f851009ec76ee2290ffbc3f55edbf3cc16aff488 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Sep 13 10:57:42 2009 +0100 [trace] Compile without lookup-symbol And check compilation with --disable-symbol-lookup util/cairo-trace/trace.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) commit 6cb3ff9c1943c58f5b6892af3f18f6aaa24494b6 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Sep 13 10:52:14 2009 +0100 [configure] --enable-symbol-lookup There you go Joonas, I don't always ignore your suggestions! This is simple patch to allow the user to disable symbol loops in case the auto-detection fails on some obscure (perhaps OpenBSD) platform. Or in case the user really wants to trim a few bytes from a library only used during tracing! boilerplate/Makefile.win32.features | 7 +++++++ build/Makefile.win32.features | 1 + build/Makefile.win32.features-h | 3 +++ build/configure.ac.features | 1 + configure.ac | 6 ++++++ src/Makefile.win32.features | 7 +++++++ util/cairo-trace/Makefile.am | 14 +++++++++----- 7 files changed, 34 insertions(+), 5 deletions(-) commit 556d064f4eb3625022f0d99461929ff3fafc9c71 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Sep 11 15:35:27 2009 +0100 [test] Typos in README from previous commit test/README | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 43ecde2d22c5a8c591ac83f9a82c2bf83af484fd Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Sep 11 15:15:22 2009 +0100 [test] Add Debian packages for fonts Mention which .deb provides the required fonts. test/README | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) commit 33be73dfb76c26e3bb0ab59b2f570d00d9c7be62 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Sep 11 14:59:58 2009 +0100 [xlib] Fix big-line. Project lines that exceed the 16.16 limits onto the XFixedLine, as we know that top/bottom must fit within the confines of the surface and so will be less than 16 bits. Sadly this is a run-on patch that also does: 1. Make FillTiled the default for new GCs. 2. Stores extend mode as opposed to repeat, and thereby cleaning up some inconsistent code. 3. Remove the special casing for unbounded trapezoids, as it is redundant with the polygon clipping. 4. Tidy the logic for deciding when to use the core protocol (_categorize_composite_operation) src/cairo-xlib-screen.c | 6 +- src/cairo-xlib-surface-private.h | 2 +- src/cairo-xlib-surface.c | 402 +++++++++++++++----------------------- 3 files changed, 164 insertions(+), 246 deletions(-) commit 6960162c5eae30e2d48992023be35e3dbf502a03 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Sep 11 14:56:17 2009 +0100 [xlib] Discard clip if larger than glyph extents Implement cheap calculation of glyph extents to see whether we can discard the clip region. This is effective around 50% of the time for firefox (and makes the xtrace so much neater). src/cairo-scaled-font.c | 36 ++++++++++++++++++++++++++++++++++++ src/cairo-xlib-surface.c | 23 +++++++++++++++++++++++ src/cairoint.h | 6 ++++++ 3 files changed, 65 insertions(+), 0 deletions(-) commit 6e78409417117ad4de1aec65bb4753ff32e1e7a6 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Sep 11 14:19:38 2009 +0100 [test] Update big-line and remove XFAIL Now that we use polygon clipping, output geometry should no longer exceed the 2^16 limits imposed by pixman. For the image backend, we now use spans for stroking and for the xlib backend we have to double check the range on the output trapezoids. In short, cairo should pass this test. test/Makefile.am | 8 ++++---- test/big-line.c | 16 ++++++++-------- test/big-line.ps.argb32.ref.png | Bin 977 -> 0 bytes test/big-line.ps.rgb24.ref.png | Bin 709 -> 0 bytes test/big-line.quartz.ref.png | Bin 1075 -> 0 bytes test/big-line.quartz.rgb24.ref.png | Bin 941 -> 0 bytes test/big-line.ref.png | Bin 0 -> 977 bytes test/big-line.xlib-fallback.ref.png | Bin 0 -> 723 bytes test/big-line.xlib.ref.png | Bin 0 -> 933 bytes 9 files changed, 12 insertions(+), 12 deletions(-) commit b495e7eb2ee2521a400d4b42e04242023bdb1e44 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Sep 10 19:25:14 2009 +0100 [surface] Early return for (region IN white) Fill a region using IN and a white source is a frequent reduction of a complex clip (viz a path that covers the whole operation extents will be reduced to a single rectangle), and we can simply discard the fill (as it always has bounded semantics). src/cairo-surface.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) commit 94aeae9b2ec563201a0e65705504d1d70c33a619 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Sep 10 19:11:36 2009 +0100 [clip] Simplify applying a box clip If the clip path is a simple box, then for many operations it is entirely representation by the alteration of extents and so we can skip a few steps during reconstruction. src/cairo-clip-private.h | 3 +- src/cairo-clip.c | 84 +++++++++++++++++++++++++--------------------- 2 files changed, 48 insertions(+), 39 deletions(-) commit 496e79b63762c70fd022b2d9e2d6107bcce1807a Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Sep 10 17:36:46 2009 +0100 [xlib] Fix extraction of GC during XCloseDisplay() Jeff Muizelaar reported a bug from his firefox builds that was causing a double free during XCloseDisplay, and suggested it was related to c0e01d9cd. Reviewing the cleanup, suggested that the cause may just be a pair of missing parenthesis. src/cairo-xlib-screen.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit f34affaa1e0b52e255d882b84bf064f9a9d4a95d Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Sep 9 18:03:20 2009 +0100 [util] And reuse the same name repository name. Completely confused by local caching of a broken cairo.modules by the jhbuild client. ARGH! util/cairo.modules | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit e1774185d6bb824a53465a037539b53fdc7af5d8 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Sep 9 17:52:10 2009 +0100 [util] And back to a unique repo name for cairo.modules Gah, further experiments into the unknown and the unclear. util/cairo.modules | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 2905ebc99e4cf8b8e94e16fcd3bc1566f51f4b57 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Sep 9 17:24:43 2009 +0100 [util] And restore the repository tag. jbhuild requires a local definition. util/cairo.modules | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 4d7eb79d25bcfdc47abcae1fd51c7573043909fd Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Sep 9 17:12:14 2009 +0100 [util] Inherit the repository from xorg.modules Experiment with inheriting the repository from xorg.module, in order to avoid having two entries for the same server. util/cairo.modules | 4 +--- 1 files changed, 1 insertions(+), 3 deletions(-) commit f5ee785144a8ddb6056b21f6c28bc4a9f4870b32 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Sep 9 13:59:50 2009 +0100 [test] Disable the antialias testing for the vector surfaces. Only the raster bckends obey the font anti-alias options. test/large-twin-antialias-mixed.c | 2 +- test/twin-antialias-gray.c | 2 +- test/twin-antialias-mixed.c | 2 +- test/twin-antialias-none.c | 2 +- test/twin-antialias-subpixel.c | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) commit abaef9bfbe11302beb6481547632b44be9d5be8d Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Sep 9 13:57:06 2009 +0100 [test] Compare a failure against the image output If a backend fails in exactly the same way as the image, then we can safely assume that the failure is systematic and not an error in the backend, so change the result to XFAIL. test/cairo-test.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 46 insertions(+), 0 deletions(-) commit 41fbea053a8feb201a4f11aaf4dff86fea0bcb01 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Sep 9 12:19:51 2009 +0100 [test] Typo in ft-show-glyphs-positioning Note to self: remember to sleep more often. test/ft-show-glyphs-positioning.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit c61480a319bad55b0b4cf3f2be609bde9f2c5948 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Sep 9 11:08:17 2009 +0100 [test] An oversized twin test case. A larger variant of the twin mixed antialiasing test. test/Makefile.am | 2 + test/Makefile.sources | 1 + test/large-twin-antialias-mixed.c | 97 ++++++++++++++++++++++++++ test/large-twin-antialias-mixed.ref.png | Bin 0 -> 16668 bytes test/large-twin-antialias-mixed.xlib.ref.png | Bin 0 -> 14655 bytes 5 files changed, 100 insertions(+), 0 deletions(-) commit 610b311a970877f3954ba829cf43caecce0ab72c Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Sep 9 09:48:24 2009 +0100 [test] Variation of twin that intermixes antialiasing Check that we are substituting the right glyph depth and changing masks appropriately. test/Makefile.am | 2 + test/Makefile.sources | 1 + test/twin-antialias-mixed.c | 97 ++++++++++++++++++++++++++++++++ test/twin-antialias-mixed.ref.png | Bin 0 -> 2338 bytes test/twin-antialias-mixed.xlib.ref.png | Bin 0 -> 1760 bytes 5 files changed, 100 insertions(+), 0 deletions(-) commit c218ff8cbec2cc7aa3efc4c7f7d8690fbdec5e9a Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Sep 9 09:52:18 2009 +0100 [test] SUBPIXEL_ANTIALIAS varation of twin Force argb32 glyphs. test/Makefile.am | 2 + test/Makefile.sources | 1 + test/twin-antialias-subpixel.c | 71 +++++++++++++++++++++++++++++ test/twin-antialias-subpixel.ref.png | Bin 0 -> 3979 bytes test/twin-antialias-subpixel.xlib.ref.png | Bin 0 -> 3863 bytes 5 files changed, 74 insertions(+), 0 deletions(-) commit 456484514f4dacfe95952e8c0b73eb6a9a1a9d27 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Sep 9 09:38:18 2009 +0100 [test] Variation of twin with ANTIALIAS_GRAY Force generation of a8 glyphs. test/Makefile.am | 2 + test/Makefile.sources | 1 + test/twin-antialias-gray.c | 71 +++++++++++++++++++++++++++++++++ test/twin-antialias-gray.ref.png | Bin 0 -> 3979 bytes test/twin-antialias-gray.xlib.ref.png | Bin 0 -> 3863 bytes 5 files changed, 74 insertions(+), 0 deletions(-) commit 8555984b8e72ab5846783ed54afa1a857d70f241 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Sep 9 09:29:42 2009 +0100 [test] Add ANTIALIAS_NONE variation of twin I'm off hunting bugs. By using twin with ANTIALIAS_NONE we can construct a1 glyph images independently of the native font system. test/Makefile.am | 2 + test/Makefile.sources | 1 + test/twin-antialias-none.c | 71 +++++++++++++++++++++++++++++++++ test/twin-antialias-none.ref.png | Bin 0 -> 718 bytes test/twin-antialias-none.xlib.ref.png | Bin 0 -> 745 bytes 5 files changed, 74 insertions(+), 0 deletions(-) commit 1820cb7fd648283a5b477fbc6bd654200ed190e6 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Sep 9 09:12:54 2009 +0100 [test] Check for errors during ft-show-glyphs-positioning Do not blindly assume that we managed to construct a valid scaled-font before attempting to dereference the FT_Face. Consider a machine with no fonts which is substituting twin... test/ft-show-glyphs-positioning.c | 46 +++++++++++++++++++++++++++++++----- 1 files changed, 39 insertions(+), 7 deletions(-) commit 7fb0d5e2091a09ef7b01574f4ecf87236ef43fec Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Sep 9 01:45:16 2009 +0100 [twin] Initialise all properties Left a couple of uninitialised properties along the non-toy font construction path. src/cairo-font-face-twin.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 34778a883af806f77d0c89c85cebb315b43d7ef2 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Sep 9 01:16:08 2009 +0100 [configure] Typo in test The have_dl clause was meant to have been removed from the requirements test for cairo-script-interpreter. Instead we left the test broken. configure.ac | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 4b221bd49a0c2c980a63779d905e8eb9b9cfa690 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Sep 8 19:02:04 2009 +0100 [spans] Correct offsets for trapezoids Pass on the destination offset from composite_trapezoids() to composite_polygon(). src/cairo-spans.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 9389cb78a8ea5b6579d091ab1030ab9f1b13efc2 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Sep 8 17:51:33 2009 +0100 [build] Improve handling of missing test apparatus Improve detection, reporting and disabling of test backends when we lack the required libraries and utilities. boilerplate/Makefile.win32.features | 7 +++++++ boilerplate/cairo-boilerplate-pdf.c | 2 ++ boilerplate/cairo-boilerplate-ps.c | 2 ++ boilerplate/cairo-boilerplate-svg.c | 2 ++ build/Makefile.win32.features | 1 + build/Makefile.win32.features-h | 3 +++ build/configure.ac.features | 3 ++- configure.ac | 20 +++++++++++++------- perf/cairo-perf-compare-backends.c | 2 +- src/Makefile.win32.features | 7 +++++++ test/Makefile.am | 2 ++ test/any2ppm.c | 8 ++++++++ util/Makefile.am | 4 ++-- 13 files changed, 52 insertions(+), 11 deletions(-) commit 45759e5a0fb20a632f66a8dd206833b55a95f840 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Sep 8 09:19:53 2009 +0100 [gl] Supply extents for acquire source image I have no idea how we survived for so long without supplying the source extents... src/cairo-gl-surface.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) commit 67d40e5c7300c4082484dbda5c81808737bb2ac5 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Sep 6 10:17:40 2009 +0100 [xlib] Protect ourselves from liars that claim to have a 64k window Found using webkit, who attempt to paint an width X page height window. Please, please clip large windows to the visible area. Thanks. src/cairo-xlib-surface.c | 27 +++++++++++++++++++++++++-- 1 files changed, 25 insertions(+), 2 deletions(-) commit 310cebf194919cf3a7c37e724e64962ae47343cc Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Sep 5 15:21:50 2009 +0100 [configure] Add option to disable trace. Some environments may be broken beyond our capabilities to detect, or maybe the user is just insane and doesn't want to build my nice shiny cairo-trace. Whatever, give them the option to choose: $ ./configure --disable-trace boilerplate/Makefile.win32.features | 7 +++++++ build/Makefile.win32.features | 1 + build/Makefile.win32.features-h | 3 +++ build/configure.ac.features | 3 +++ configure.ac | 8 +++++--- src/Makefile.win32.features | 7 +++++++ util/Makefile.am | 2 +- 7 files changed, 27 insertions(+), 4 deletions(-) commit 9b932d7cd750b9bc61d108c80c4530352d952cfa Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Sep 5 08:46:39 2009 +0100 [perf] Move the calibration to its own function Improve code clarity and whatnot. perf/cairo-perf.c | 71 ++++++++++++++++++++++++++++++---------------------- 1 files changed, 41 insertions(+), 30 deletions(-) commit 270b2f1be0e600621647f2e2486618c134217941 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Sat Sep 5 05:39:35 2009 +0300 [perf] Add a fast-and-sloppy mode to cairo-perf. A new -f option to cairo-perf reverts to a fast run mode for quick performance overviews. The number of milliseconds each iteration of a test is run for can be overriden using the new CAIRO_PERF_ITERATION_MS environment variable. The default remains 2000 ms/iter. perf/cairo-perf.c | 59 +++++++++++++++++++++++++++++++++++------------------ perf/cairo-perf.h | 3 ++ 2 files changed, 42 insertions(+), 20 deletions(-) commit 7f91c4953ccfbb96d76ecd73715fa2e524be933e Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Sat Sep 5 05:07:25 2009 +0300 [boilerplate] Support wildcard ? in CAIRO_TEST_TARGET{,_EXCLUDE}. Useful for running tests only for a given content type. boilerplate/cairo-boilerplate.c | 10 ++++++---- 1 files changed, 6 insertions(+), 4 deletions(-) commit b3bafbc5f9201662702cc0c0d1c96411e31bb7d3 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Sat Sep 5 05:02:00 2009 +0300 [boilerplate] Support giving content in CAIRO_TEST_TARGET{,_EXCLUDE}. Sometimes it's convenient to run the regression or performance tests against a given target with a given content. Now we accept an optional content specifier as a suffix .<content> on a target name, where <content> is rgb or rgba. boilerplate/cairo-boilerplate.c | 61 ++++++++++++++++++++++++++++++++++++-- 1 files changed, 57 insertions(+), 4 deletions(-) commit 29432d3d32bc84ec4a2e1815a84e4ac2089138fe Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Sat Sep 5 02:25:01 2009 +0300 [test] Reorder dash-infinite-loop to not hit a runaway allocation. This test is annoying enough as it is what with it wedging the test suite and all. There's no reason why it should DOS the running box as well by sitting in a loop allocating like mad. test/dash-infinite-loop.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 20b0e7f95448e496b609212b9608f75e03f223f8 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Fri Sep 4 23:54:21 2009 +0300 [test] Add large-source-roi.ref.png to test/Makefile.am Oops.. forgot to add it to the build files too test/Makefile.am | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 402a0539489cc01094b464109ae28ae78b85a294 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Sep 4 09:47:10 2009 +0100 [gl] compile fix. Compiled fine during testing -- only I forgot I hadn't enable the gl surface. src/cairo-gl-surface.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit b065303740cc18fbcabfeef34d09c7d8b617647e Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Sep 4 09:35:22 2009 +0100 [xlib] Enable pad_reflect by default If the XServer claims to support the required Render extension then send it the operations. However for the cases where we know it does not work, i.e. the current and previous generations (<=1.6) of Xorg servers, enable the buggy_pad_reflect fallbacks. src/cairo-xlib-display.c | 19 ++++++++++++------- 1 files changed, 12 insertions(+), 7 deletions(-) commit 634fdb4afd15e2467979609b1af7c1c198fc83d4 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Sep 4 09:14:12 2009 +0100 [test] Add unbounded variants of clip-{fill,stroke} Add a couple of tests to exercise a bug that Joonas spotted that I had introduced with the clip-reduction scheme - namely that I had incorrectly removed the clip on unbounded operations. test/Makefile.am | 14 +++ test/Makefile.sources | 2 + test/clip-fill-unbounded.argb32.ref.png | Bin 0 -> 1615 bytes test/clip-fill-unbounded.c | 105 ++++++++++++++++++++ test/clip-fill-unbounded.rgb24.ref.png | Bin 0 -> 1312 bytes test/clip-fill-unbounded.svg12.argb32.xfail.png | Bin 0 -> 1601 bytes test/clip-fill-unbounded.svg12.rgb24.xfail.png | Bin 0 -> 1601 bytes ...clip-fill-unbounded.xlib-fallback.rgb24.ref.png | Bin 0 -> 1429 bytes test/clip-fill-unbounded.xlib.argb32.ref.png | Bin 0 -> 1758 bytes test/clip-fill-unbounded.xlib.rgb24.ref.png | Bin 0 -> 1426 bytes test/clip-stroke-unbounded.argb32.ref.png | Bin 0 -> 1703 bytes test/clip-stroke-unbounded.c | 102 +++++++++++++++++++ test/clip-stroke-unbounded.rgb24.ref.png | Bin 0 -> 1383 bytes test/clip-stroke-unbounded.svg12.argb32.xfail.png | Bin 0 -> 1697 bytes test/clip-stroke-unbounded.svg12.rgb24.xfail.png | Bin 0 -> 1697 bytes ...ip-stroke-unbounded.xlib-fallback.rgb24.ref.png | Bin 0 -> 1429 bytes test/clip-stroke-unbounded.xlib.argb32.ref.png | Bin 0 -> 1792 bytes test/clip-stroke-unbounded.xlib.rgb24.ref.png | Bin 0 -> 1426 bytes 18 files changed, 223 insertions(+), 0 deletions(-) commit de99f841886de5cc6e5bc91f9d3e82076d838dee Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Sep 4 08:55:19 2009 +0100 [fallback] Only eliminate the clip if the operation is bounded For unbounded operations we still need to pass along the clip in order to correctly limit the extents of the operation. src/cairo-surface-fallback.c | 57 +++++++++++++++++++++++++++++++----------- 1 files changed, 42 insertions(+), 15 deletions(-) commit 0ffca06d7feec6fdc56c47a378fcc37c1951a00a Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Sep 4 08:32:31 2009 +0100 [perf] Use milliseconds by default in cairo-perf-diff-files Necessary when comparing performance reports from different machines (or even at different CPU states). perf/cairo-perf-diff-files.c | 13 ++++++++----- 1 files changed, 8 insertions(+), 5 deletions(-) commit 00ca0780b8f06ec160d8f969e316c21fbbde04bc Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Sep 3 23:25:53 2009 +0100 [win32] Remove unused clone_similar() The win32 backend handles surface sources directly and never calls _cairo_pattern_acquire_surface() which is the only other possible user of clone_similar(). src/cairo-win32-printing-surface.c | 2 +- src/cairo-win32-surface.c | 57 +----------------------------------- 2 files changed, 2 insertions(+), 57 deletions(-) commit 535bcaa1a1dac28fbe3106c6605949171bc36cb2 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Sep 3 20:10:55 2009 +0100 [mutex] Hook into pthread last Check for native mutex types before hooking into pthread, as this workarounds broken builds on mingw that confuse us by including the pthread header file. src/cairo-mutex-impl-private.h | 47 ++++++++++++++++++++------------------- 1 files changed, 24 insertions(+), 23 deletions(-) commit 769f4a4f47ab4636ec5cca3e92ce2c0ff19d2f75 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Sep 3 17:47:34 2009 +0100 [gl] Allocate small number of rectangles on the stack FillRectangle is most frequently used to fill an entire imagee with the background colour, i.e. with just a single, or few, rectangle. Avoid heap allocation for this common case by allocating enough space for 4 rectangles (vertices+colors) on the stack. src/cairo-gl-surface.c | 43 +++++++++++++++++++++++++++++-------------- 1 files changed, 29 insertions(+), 14 deletions(-) commit 6ce200da9d01a85a1de576229e75732db65a8b70 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Sep 3 17:38:00 2009 +0100 [gl] Assert that the error is impossible. As we created the image, it should not need coercing into a suitable format and so we should be able to upload it without failure. src/cairo-gl-surface.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit d3aeafb406da7bf69e9bf24e18a5975780a7a987 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Sep 3 17:32:28 2009 +0100 [gl] Remove reference to depth_stencil_tex We no longer use a depth-stencil, so remove the vestigial reference. src/cairo-gl-private.h | 1 - src/cairo-gl-surface.c | 2 -- 2 files changed, 0 insertions(+), 3 deletions(-) commit 316c1683ceb39eb652608adc360cb4da9c22256a Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Thu Sep 3 21:38:31 2009 +0300 [test] Fix the order of random points random-intersections-curves*. The calls to uniform_random() to get the curve points were in the function arguments, but argument order evaluation is compiler implementation dependent. test/random-intersections-curves-eo.c | 17 ++++++++++------- test/random-intersections-curves-nz.c | 17 ++++++++++------- 2 files changed, 20 insertions(+), 14 deletions(-) commit 9e45673e197d0f43e296483cc6b5ca6df94e7f02 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Thu Sep 3 19:18:07 2009 +0300 [image] Check for out of bounds image surface sizes in constructors. The image surface code doesn't reliably work on images larger than 32767 in width or height. This patch makes the image surface constructors fail by returning a surface in the CAIRO_STATUS_INVALID_SIZE state when given negative or too large dimensions so that client code gets a prompt and correct error rather than flaky rendering on large images. src/cairo-image-surface.c | 27 +++++++++++++++++++++++++-- test/large-source-roi.c | 4 ++-- test/large-source-roi.ref.png | Bin 0 -> 112 bytes test/large-source.c | 4 ++-- 4 files changed, 29 insertions(+), 6 deletions(-) commit 12d0613210547b8a50dd7b21a12eb1485ee496b9 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Thu Sep 3 17:54:49 2009 +0300 [test] Allow tests to XFAIL by putting the cairo_t into an error state. The test runner was extra strict about never letting a test put the cairo_t into an error state, and never would it check for the expectedness status of the failure. This patch moves the check for a test being an XFAIL above the check on the cairo_t's final status. test/cairo-test.c | 14 +++++++------- 1 files changed, 7 insertions(+), 7 deletions(-) commit a76c36f2edd16d8e2b8f49e6409134aceab38a42 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Sep 3 14:29:20 2009 +0100 [xlib] solid pictures should only be 1x1 Creating an widthxheight solid picture for using with RenderCompositeTrapezoids defeats the optimization with the xserver that checks for a solid alpha pattern. The checks it performs are for CONTENT_ALPHA, Repeat, 1x1 and value == 0xff. src/cairo-xlib-surface.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit df067be863bf714f22db0392ab29926edfa8e917 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Sep 3 08:45:40 2009 +0100 [polygon] Compute the limit of the limits slightly more efficiently Initialize the bbox to the first limit, as frequently there will only be a single (or at least a small number) limit. src/cairo-polygon.c | 24 ++++++++++++------------ 1 files changed, 12 insertions(+), 12 deletions(-) commit a1bac73f24069990842fa8f31e776b4d2c72546e Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Sep 3 09:20:46 2009 +0100 [boilerplate] Handle errors whilst creating GL surface boilerplate/cairo-boilerplate-gl.c | 11 ++++++----- src/cairo-glx-context.c | 16 ++++++++-------- 2 files changed, 14 insertions(+), 13 deletions(-) commit f1d284f9976d38f636c6791f11479ae75d7bd199 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Sep 3 01:00:59 2009 +0100 [polygon] Fix discard with non-banded disjoint clip boxes The early discard checked if the line was below the last clip-box, or if above the first. However, the clip-boxes are only sorted on by the bottom (not the strict XY-banded sort of the regions) and so this was erroneously discarding lines. src/cairo-polygon.c | 29 ++++++++++++++++++++++++----- src/cairo-types-private.h | 1 + 2 files changed, 25 insertions(+), 5 deletions(-) commit a6dfdeec82ec34d88276fd0bb0ddcc94405d89f3 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Sep 3 00:59:21 2009 +0100 [test] Add clip-disjoint Soeren found another bug (thanks Soeren!) in the clipping code - as reproduced by this test case. test/Makefile.am | 2 + test/Makefile.sources | 1 + test/clip-disjoint.c | 90 +++++++++++++++++++++++++++++++++++++++ test/clip-disjoint.ref.png | Bin 0 -> 5520 bytes test/clip-disjoint.xlib.ref.png | Bin 0 -> 5395 bytes 5 files changed, 93 insertions(+), 0 deletions(-) commit ff6bc1e132836c68d4f538799c2cd26a2d9cace4 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Sep 2 21:22:33 2009 +0100 [script] Always create a fallback font In order to get a baseline for win32 performance testing, always create a font so that the trace can be replayed. Not ideal, but I feel this the pragmatic solution for judging the performance differentials before I can work out a better solution for loading typ42 fonts. util/cairo-script/cairo-script-operators.c | 46 ++++++++++++++++----------- 1 files changed, 27 insertions(+), 19 deletions(-) commit fcbb288e7cf2f5914c0d2b66ee6d81b694de6de6 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Sep 2 21:02:18 2009 +0100 [script] Attempt to select a font if ! CAIRO_HAS_FT_FONT In order to enable replay of traces on machines that do not use FreeType as the native font system, we need to convert a type42 font into something similar. Currently the fallback is just to select a font with the same name - this ignores weight and slant, and many other details. util/cairo-script/cairo-script-operators.c | 106 ++++++++++++++++++++++++++++ 1 files changed, 106 insertions(+), 0 deletions(-) commit 2c03dfa0b406565fca798214a842bac69b042017 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Sep 2 10:09:50 2009 +0100 [boilerplate/test] Use numerical equality not string equality test == != -eq boilerplate/make-cairo-boilerplate-constructors.sh | 2 +- test/make-cairo-test-constructors.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit f5df38ca5efcbc0cd3cc18d9fb67df49ec4859f8 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Wed Sep 2 04:38:52 2009 +0100 [build] Fix typos in prototype warnings. The -Wstrict-prototypes and -Wmissing-prototypes warnings weren't actually in use due to typos. build/configure.ac.warnings | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit c086b40a93057a6fd47d23c85c5026d6fe2f524a Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Wed Sep 2 04:29:18 2009 +0100 [build] Hush the Solaris compiler about enum abuse. Sun Studio 12 doesn't like it when we mix our enum values and types. We do that a lot on purpose so the warnings from compiles were very verbose. build/aclocal.cairo.m4 | 23 +++++++++++++++++++++-- build/configure.ac.warnings | 6 ++++++ 2 files changed, 27 insertions(+), 2 deletions(-) commit f081a5ff554267eebecea4652bb483eea11d1484 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Wed Sep 2 04:10:39 2009 +0100 [build] Refine the -Wno-attribute test to check our use cases. We don't actually check that -Wno-attribute does what we think it does. On clang it doesn't since it happily seems to recognize but ignore the attribute. This patch factors out a silent version of CAIRO_CC_TRY_FLAG which accepts an optional program argument and actually tests that the compiler doesn't produce any warning messages. It is then used to check that -Wno-attribute doesn't complain when the __warn_unused_result__ attribute is applied to void functions or variables. build/aclocal.cairo.m4 | 42 ++++++++++++++++++++++++++++++++++-------- build/configure.ac.analysis | 2 +- build/configure.ac.warnings | 10 ++++++---- 3 files changed, 41 insertions(+), 13 deletions(-) commit c87b366bfec4eeda2646b33cb8a33822a301456c Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Wed Sep 2 04:09:46 2009 +0100 [constructors] Guard against being called without any input files. The make-cairo-(test|boilerplate)-constructors scripts ought never to be called without arguments lest we are left constructorless. boilerplate/make-cairo-boilerplate-constructors.sh | 7 ++++++- test/make-cairo-test-constructors.sh | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) commit b509b548b1e3ac5a9e3de2f9652cd1973d295fa3 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Fri Jul 24 09:12:10 2009 +0300 [trace] Check for __builtin_return_address explicitly. Some other compilers such as clang and icc support the __builtin_return_address() intrinsic as well, so we don't need to check for __GNUC__ >= 3 only. build/configure.ac.system | 12 ++++++++++++ util/cairo-trace/trace.c | 2 +- 2 files changed, 13 insertions(+), 1 deletions(-) commit 2b0e070f6a6bee415b1036fd149f0c41bcf87abb Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Fri Jul 24 07:48:57 2009 +0300 [trace] Replace an open coded test for matrix identity. The code has a _matrix_is_identity() function we can use instead of open coding the same test. util/cairo-trace/trace.c | 5 +---- 1 files changed, 1 insertions(+), 4 deletions(-) commit 70ea9e3ce1b0037999340e484e62d3a1484da41a Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Fri Jul 24 07:46:20 2009 +0300 [trace] Don't crash on unknown enums values. If the tracer encounters an unknown enum value it ought not to crash. Theis patch replaces the idiom of looking up a name for an enumerated value directly from a table by a switch statement. As a bonus we get warnings from the compiler when the enums are updated in cairo. util/cairo-trace/trace.c | 313 +++++++++++++++++++++++++--------------------- 1 files changed, 172 insertions(+), 141 deletions(-) commit 174c2620c82a47d067ec7b5062a4f513155a0b1f Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Fri Jul 24 07:42:57 2009 +0300 [trace] Check for object stack underflow. If the tracer's object stack underflows we want to know about is as soon as possible. This patch adds checks against the stack overflowing and aborts the program with an object stack dump if it does. util/cairo-trace/trace.c | 26 ++++++++++++++++++++++++-- 1 files changed, 24 insertions(+), 2 deletions(-) commit bb480d235882d8e7d5748a3837f9b274a8b8ac86 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Tue Jul 21 21:18:36 2009 +0300 [NEWS] Thank the AuroraUX team for facilitating Solaris testing. NEWS | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) commit c64f6f8a15306cdcf5dd02480049b0f9112fd6ac Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Fri Jun 26 16:54:11 2009 +0300 [trace] Get the tracee program name from the environment. Support non-Linux systems which don't have a /proc/self/cmdline by transferring the application name given to cairo-trace via an environment variable CAIRO_TRACE_PROG_NAME. util/cairo-trace/cairo-trace.in | 3 ++- util/cairo-trace/trace.c | 31 +++++++++++++++++++------------ 2 files changed, 21 insertions(+), 13 deletions(-) commit 17cdffafda04514f08e0f0f11d0a85b938282c38 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Sep 2 00:41:18 2009 +0100 [xlib] Remove stray code Grr. Should have spotted this before pushing - remove the addition of the superfluous code. src/cairo-xlib-surface.c | 13 ++----------- 1 files changed, 2 insertions(+), 11 deletions(-) commit 59c4fe93ee30c8182ae1a29267b9c08602e2f6c5 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Sep 2 00:34:37 2009 +0100 [xlib] Eliminate GC clipping Eradicate the use of clipping with GC. By never using clipping, we never have to worry about retrieving a dirty clip from the GC cache. src/cairo-xlib-private.h | 12 +-- src/cairo-xlib-screen.c | 50 ++++------ src/cairo-xlib-surface-private.h | 2 - src/cairo-xlib-surface.c | 197 ++++++++++++++++++-------------------- 4 files changed, 116 insertions(+), 145 deletions(-) commit 075fc5666abe006c434bf7ec28d2d4f0226a1d3a Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Sep 2 00:33:22 2009 +0100 [test] Add clip-image Exercise the XCopyArea() paths under clipping - whilst modifying that code I noticed that it was not being exercised by the test suite. test/Makefile.am | 1 + test/Makefile.sources | 1 + test/clip-image.c | 94 +++++++++++++++++++++++++++++++++++++++++++++++ test/clip-image.ref.png | Bin 0 -> 2679 bytes 4 files changed, 96 insertions(+), 0 deletions(-) commit 7d1eb259f93d3f2f2e754b2b8b90cb88359b477d Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Sep 1 23:12:43 2009 +0100 [xlib] Make xlib_display_t private and rename xlib_screen_info_t The issue Joonas was trying to solve was the unwanted inclusion of the inlines via cairo-freelist-private.h. Unwittingly he included cairoint.h from cairo-xlib-private.h instead, a far more heinous crime as that causes the boilerplate to try to use the hidden, private symbols. Instead we resolve this issue by making the cairo_xlib_display_t structure private to cairo-xlib-display.c and provide functions to manipulate the abstract data type. Whilst in the vicinity, we rename cairo_xlib_screen_info_t to cairo_xlib_screen_t for consistency and cleanliness. src/cairo-xlib-display.c | 126 ++++++++++++++++++++++++++- src/cairo-xlib-private.h | 88 +++++++++++-------- src/cairo-xlib-screen.c | 155 +++++++++++++++------------------- src/cairo-xlib-surface-private.h | 3 +- src/cairo-xlib-surface.c | 173 +++++++++++++++++++++----------------- 5 files changed, 339 insertions(+), 206 deletions(-) commit b8ddd66cf6e0d16383580c3c3398343f577b89fd Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Sep 1 21:49:01 2009 +0100 Revert "[freelist] Make _cairo_freepool_alloc_from_new_pool static inline." This reverts commit 5a3fa29b370816acb3a08d60e4031ed82c1e4c73 as it breaks the boilerplate when linking with gcc. src/cairo-freelist-private.h | 29 ++--------------------------- src/cairo-freelist.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 27 deletions(-) commit 5a3fa29b370816acb3a08d60e4031ed82c1e4c73 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Tue Sep 1 20:57:01 2009 +0100 [freelist] Make _cairo_freepool_alloc_from_new_pool static inline. The xlib boilerplate includes a cairo private header to be able to disable usage of the render extension. This indirectly includes cairo-freelist-private.h which contains a bunch of static inline functions which use the private _cairo_freepool_alloc_from_new_pool function, but since that is not inline also, it causes an undefined extern which cannot be resolved. The binutils linker doesn't care since the freelist function aren't actually used in the boilerplate but the Solaris linker does. By making the .._alloc_from_new_pool function inline no dangling references are created and linking succeeds. src/cairo-freelist-private.h | 29 +++++++++++++++++++++++++++-- src/cairo-freelist.c | 29 ----------------------------- 2 files changed, 27 insertions(+), 31 deletions(-) commit 68c8eb955d6d16872c2fa488f0960b974611865d Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Mon Aug 31 23:57:20 2009 +0100 [wrapper] Avoid a void return gccism. Returning void using the pattern "return func_returning_void(...)" is a gccism not supported by Sun Studio 12. src/cairo-surface-wrapper.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 6ddab64025eacd5000fa295c86c0fddc469bdc5f Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Sep 1 20:25:53 2009 +0100 [ps] Clip meta-surface to desired extents. Ensure that the meta surface does not extend beyond the operation by forcing a clip to the extents of the operation. Fixes test/device-offset and test/device-offset-positive src/cairo-ps-surface.c | 46 +++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 43 insertions(+), 3 deletions(-) commit 665f5829541703b29e33f80bebf579a17f47a892 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Sep 1 18:24:42 2009 +0100 [ps/pdf] Trim patterns to operation extents If we have to rasterise a pattern for use by PS/PDF (for example, to satisfy CAIRO_EXTENT_PAD) then only generate an image large enough to cover the operation extents. We ensure tight coverage by computing the extents afresh - we could do this lazily in the future, but we can not rely on the bounds as computed by the analysis surface as for native operations they may not be tight. src/cairo-pdf-surface.c | 67 +++++++++++++++++--- src/cairo-ps-surface.c | 76 +++++++++++++++-------- src/cairo-surface.c | 162 +++++++++++++++++++++++++++++++++++++++++++++++ src/cairoint.h | 49 ++++++++++++++ 4 files changed, 319 insertions(+), 35 deletions(-) commit c4c7db96750337076b953a4938afc7b5f16815fc Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Sep 1 14:59:36 2009 +0100 [boilerplate] Use xlib as fallback reference for xcb And exercise RGB code-paths. boilerplate/cairo-boilerplate-xcb.c | 13 ++++++++++++- 1 files changed, 12 insertions(+), 1 deletions(-) commit e7a118d3f82f2cbefb4a1529cc90f76ed7371ecc Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Sep 1 14:31:38 2009 +0100 [path] Standalone header-compilation Hmm, TRUE/FALSE apparently weren't defined before use. Odd. src/cairo-path-fixed-private.h | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 4f880deeabc36842b3b4b0d7ad16383db708cd42 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Sep 1 14:24:59 2009 +0100 Compiler warnings Add an impossible default condition to avoid a compiler warning. And tweak the code to avoid mismatching signed/unsigned comparisons. src/cairo-pdf-surface.c | 1 + src/cairo-xml-surface.c | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) commit 1bcc3a3fa00445667adc47d4852237271c7eec0f Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Sep 1 14:24:06 2009 +0100 [tee] Rename 'append' to 'add' and add symmetric 'remove' src/cairo-tee-surface.c | 51 ++++++++++++++++++++++++++++++++++++++++++---- src/cairo.h | 8 +++++- util/cairo-fdr/fdr.c | 2 +- util/cairo-sphinx/fdr.c | 2 +- 4 files changed, 54 insertions(+), 9 deletions(-) commit af82670dd3bfdb661de5a01a6856ec01bdf80040 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Sep 1 13:31:52 2009 +0100 [pattern] Remove unused hidden symbol for cairo_pattern_status() src/cairo-pattern.c | 9 ++++----- src/cairoint.h | 1 - 2 files changed, 4 insertions(+), 6 deletions(-) commit aca1dff25967940c36caee26977512484f1720ac Author: Adrian Johnson <ajohnson@redneon.com> Date: Mon Aug 31 22:28:26 2009 +0930 PDF: Ensure operator is selected before painting surface src/cairo-pdf-surface.c | 16 ++++++++-------- 1 files changed, 8 insertions(+), 8 deletions(-) commit a402bdbd32d3ffe4b564318e6dd83831328257b1 Author: Adrian Johnson <ajohnson@redneon.com> Date: Mon Aug 31 22:15:57 2009 +0930 PDF: Flush operators before writing to the PDF stream src/cairo-pdf-surface.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit 119355b2a4d81c903720484adaeb7dea3929ca1f Author: Adrian Johnson <ajohnson@redneon.com> Date: Mon Aug 31 22:14:15 2009 +0930 PDF: Reset alpha to 1.0 before painting a surface Fixes a test suite regression. src/cairo-pdf-surface.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-) commit 20bd7d0edbb01a52bcc88bddcba4cc5237f3a673 Author: Adrian Johnson <ajohnson@redneon.com> Date: Mon Aug 31 22:03:34 2009 +0930 Update ref images test/meta-surface-pattern.pdf.argb32.ref.png | Bin 3835 -> 3908 bytes test/meta-surface-pattern.pdf.rgb24.ref.png | Bin 3682 -> 3760 bytes test/rotate-image-surface-paint.pdf.xfail.png | Bin 207 -> 217 bytes test/scale-offset-image.pdf.argb32.ref.png | Bin 0 -> 9981 bytes test/scale-offset-image.pdf.ref.png | Bin 10099 -> 0 bytes test/scale-offset-image.pdf.rgb24.ref.png | Bin 0 -> 9981 bytes test/scale-offset-similar.pdf.argb32.ref.png | Bin 0 -> 11027 bytes test/scale-offset-similar.pdf.ref.png | Bin 10890 -> 0 bytes test/scale-offset-similar.pdf.rgb24.ref.png | Bin 0 -> 11027 bytes test/surface-pattern-scale-down.pdf.ref.png | Bin 1589 -> 1603 bytes test/surface-pattern-scale-up.pdf.ref.png | Bin 2712 -> 2793 bytes 11 files changed, 0 insertions(+), 0 deletions(-) commit 135912721f5791ad8eac773fd042c751122c8760 Author: Adrian Johnson <ajohnson@redneon.com> Date: Sun Aug 30 23:58:53 2009 +0930 PDF: Avoid using patterns when filling a surface with EXTEND_NONE The fill equivilant of the previous optimization. src/cairo-pdf-surface.c | 19 +++++++++++++++++++ 1 files changed, 19 insertions(+), 0 deletions(-) commit 6512faeb9487dcc2d577b5fb3628cf7f13a25c0a Author: Adrian Johnson <ajohnson@redneon.com> Date: Sun Aug 30 23:38:17 2009 +0930 PDF: Avoid using patterns when painting surfaces with EXTEND_NONE This is an optimization the PS surface has been using to improve printing speed and prevent printers from choking on large images. Applying this optimzation to PDF prevents the same problem occuring when the PDF is converted to PS. src/cairo-pdf-surface.c | 58 +++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 58 insertions(+), 0 deletions(-) commit 26d568a9ada523793b2e5855678922894e438ef4 Author: Adrian Johnson <ajohnson@redneon.com> Date: Sun Aug 30 23:50:53 2009 +0930 PDF: Fix bug when when embedding surfaces src/cairo-pdf-surface.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit feaf38d0cdc5a79966d3a412b644705b0f38e75a Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Mon Aug 31 16:25:08 2009 +0300 [test] Use HAVE_FLOCKFILE instead of _POSIX_C_SOURCE. The _POSIX_C_SOURCE 2001.. #define requires C99 mode and clang on Solaris is strict about such things. Use configure tests for flockfile() instead. test/cairo-test.c | 5 ++--- 1 files changed, 2 insertions(+), 3 deletions(-) commit 9bb469c51cf580e3ae18b21b3847488e8c4be051 Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Fri Jul 24 06:15:46 2009 +0300 [trace] Use HAVE_FLOCKFILE/FUNLOCKFILE since configure test for them. The trace source was using the flockfile() and funlockfile() functions directly. util/cairo-trace/trace.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit b5cf24a4fb0e48a0067c4b5a706890d4c1f3f1ae Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> Date: Fri Jun 26 20:06:40 2009 +0300 [build] Remove duplicate invocation of AC_CHECK_HEADERS. The fenv.h stuff was checked twice. build/configure.ac.system | 3 --- 1 files changed, 0 insertions(+), 3 deletions(-) commit 3acccf0ea5ca1fde9cf6b91677588680a2644ee6 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Aug 30 12:33:40 2009 +0100 [perf] Trim outliers from chart Use "mild outliers" method to remove exceptional speed-ups and slow-downs from the graph, so that the majority of information is not lost by the scaling. Add the timing labels to the bars so that the true factor is always presented. perf/cairo-perf-chart.c | 211 ++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 172 insertions(+), 39 deletions(-) commit 687462be89fd0ddf6b5412f2cb7b4f7b1a80135c Author: Carlos Garcia Campos <carlosgc@gnome.org> Date: Sun Aug 30 12:07:28 2009 +0200 [build] Fix a typo in configure.ac configure.ac | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit a6bcb6260ec8982493ac3411436ec007b40e4501 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Aug 30 10:09:51 2009 +0100 [bo-rectangular] Fix assertion failure with insertion sort We remember the location of the last insert as the next edge is likely to be nearby. However, we need to be careful when the pointer rests upon the HEAD and ensure that we begin the search from the appropriate end. src/cairo-bentley-ottmann-rectangular.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit 19ebf83b6717e1f02e7be14218007858edf14ef0 Merge: 40aefac a77f193 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Aug 29 17:45:48 2009 +0100 Merge branch 'stroke-with-spans' This branch brings self-intersection removal with virtually no performance regression. (Compare with the initial implementation that incurred a 5-10x slowdown due to having to tessellate whole strokes at a time.) The importance of self-intersection removal is the improved visual quality it brings - gone are those annoying sparkles on the outside of rounded-rectangles for instance. Most of the performance overhead associated with the self-intersection removal is avoided by switching from trapezoids to spans for strokes. Obviously we are not able to do so for the xlib backend as we do not yet have a polygon image type, and so the tessellators are overhauled instead, along with more special casing for frequent operations to avoid the increased complexity along the general paths. Speedups ======== xlib-rgba swfdec-youtube-0 11371.13 (11406.01 0.28%) -> 10450.00 (10461.84 0.66%): 1.09x speedup ▏ image-rgba firefox-talos-svg-0 73696.53 (73828.28 3.42%) -> 68324.30 (70269.79 1.36%): 1.08x speedup ▏ image-rgba swfdec-youtube-0 7843.08 (7873.89 2.57%) -> 7393.96 (7399.68 0.18%): 1.06x speedup xvfb-rgba swfdec-youtube-0 9627.25 (9634.43 0.16%) -> 9020.55 (9040.97 0.27%): 1.07x speedup ▏ Slowdowns ========= xvfb-rgba gnome-terminal-vim-0 7695.12 (7697.87 0.44%) -> 8569.45 (8588.29 0.19%): 1.11x slowdown ▏ xvfb-rgba swfdec-giant-steps-0 3811.77 (3815.06 0.23%) -> 4246.67 (4569.17 3.52%): 1.11x slowdown ▏ image-rgba gvim-0 7150.90 (7181.96 29.36%) -> 14641.04 (14651.36 0.11%): 2.05x slowdown █ One method for overcoming these regressions is to reduce the complexity of the polygons being fed into the tessellator (both in the number of edges and intersections). This should be feasible by coupling into Jeff Muizelaar's stroke-to-path work, which early indications suggest will bring a significant performance improvement. On top of this, our span implementation for the image backend is not as efficient as we would hope for - and Joonas promises a much faster implementation soon. commit a77f1933afebe28e0651906c96fd098cd8267a9f Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Aug 29 14:23:41 2009 +0100 Use the more generic is_box when doing simple extent checks is_rectangle() is far stricter than is_box(), and is only required for a very limited set of operations (essentially were the rectangle must conform to the motion as described by cairo_rectangle). For the general case where we just want to know whether we have a single rectangular path that covers a certain area, is_box() is sufficient. src/cairo-pdf-surface.c | 2 +- src/cairo-ps-surface.c | 2 +- src/cairo-script-surface.c | 4 ++-- src/cairo-svg-surface.c | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) commit 0a548d08b5eae73a95fb41f41298c9c43379163e Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Aug 29 16:27:27 2009 +0100 [clip] Correctly compute a geometric mask for a rectilinear + arbitrary Fix up the geometric clipper to handle intersecting a rectilinear path with an arbitrary path and inspecting the result to see if it becomes a a region. src/cairo-clip.c | 47 ++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 38 insertions(+), 9 deletions(-) commit 8a323d7c8998f308fc222d65badb1289e3f7fb54 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Aug 29 14:15:07 2009 +0100 [clip] Apply surface offset when combining with clip mask In order to correctly combine the clip mask with the compositing mask the clip path must be offset so that it is relative to the destination surface. src/cairo-clip-private.h | 2 +- src/cairo-clip.c | 85 +++++++++++++++++++++-------------------- src/cairo-region.c | 8 +++- src/cairo-surface-fallback.c | 8 +--- src/cairo-traps.c | 8 +--- src/cairo.h | 2 +- test/clip-stroke.xlib.ref.png | Bin 1563 -> 1490 bytes 7 files changed, 56 insertions(+), 57 deletions(-) commit 21225a7163bc93d34d3e395c840faaba24046bb6 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Aug 29 12:08:12 2009 +0100 [clip] Pass in destination offset for combining with clip-mask When combining a clip-mask with a subsurface, as when used to combine with the composite mask, we need to pass the destination surface offset to the clip so that the paths can be corrected for the new surface. src/cairo-clip-private.h | 4 ++- src/cairo-clip.c | 45 ++++++++++++++++++++--------------------- src/cairo-surface-fallback.c | 14 ++++++++---- 3 files changed, 34 insertions(+), 29 deletions(-) commit ac6c6fe1d39effd5b6b382f0f1199af824868ef4 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Aug 29 12:07:20 2009 +0100 [test] Add rotated clip. Exercise a bug found in not offsetting the clip mask when combining with the composite mask. test/Makefile.am | 3 + test/Makefile.sources | 1 + test/rotated-clip.c | 110 ++++++++++++++++++++++++++++++++++++++++ test/rotated-clip.ps.ref.png | Bin 0 -> 3378 bytes test/rotated-clip.ref.png | Bin 0 -> 3761 bytes test/rotated-clip.xlib.ref.png | Bin 0 -> 3922 bytes 6 files changed, 114 insertions(+), 0 deletions(-) commit c60280782dfac7de1abe3230a500c7c98735dc02 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Aug 29 09:59:36 2009 +0100 [script] Implement invert Flesh out matrix inversion. util/cairo-script/cairo-script-operators.c | 26 +++++++++++++++++++++++++- 1 files changed, 25 insertions(+), 1 deletions(-) commit 06ca0b1475caf709fdf32b10a891dfb3b47cc6b1 Author: Damian Frank <damianf@ubuntu-vm.(none)> Date: Fri Aug 14 11:35:55 2009 -0500 Fix build on systems with older Xrender headers. This patch revises xlib so that it doesn't depend on having recent Xrender headers to build. In particular, some definitions were added to the private xrender header file, and an ifdef render version check CAIRO_SURFACE_RENDER_SUPPORTS_OPERATOR was changed to a run-time check using CAIRO_SURFACE_RENDER_HAS_PDF_OPERATORS. src/cairo-xlib-display.c | 7 +++ src/cairo-xlib-surface.c | 30 ++----------- src/cairo-xlib-xrender-private.h | 90 ++++++++++++++++++++++++++++++++++--- 3 files changed, 93 insertions(+), 34 deletions(-) commit 17ef949b6aaa812dd566f1db016055f8e1913320 Author: Damian Frank <damianf@ubuntu-vm.(none)> Date: Fri Aug 14 11:38:52 2009 -0500 Rename cairo-script static func to avoid MinGW conflict cairo-script-operators.c's _dup function was colliding with one defined in io.h by MinGW (gcc 4.3.0 package). I renamed it to _duplicate. util/cairo-script/cairo-script-operators.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 3e7e0eacef650f1035cfbe15e306116ff711f99c Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Aug 29 17:07:41 2009 +0100 Update reference images Refresh the test reference images to match the current output where acceptable. test/Makefile.am | 14 ++++++++++++-- test/clip-fill.xlib-fallback.ref.png | Bin 1039 -> 1063 bytes test/clip-operator.pdf.argb32.ref.png | Bin 9340 -> 9266 bytes test/clip-operator.pdf.rgb24.ref.png | Bin 5146 -> 5166 bytes test/clip-operator.ref.png | Bin 8191 -> 8126 bytes test/clip-operator.rgb24.ref.png | Bin 3279 -> 3244 bytes test/clip-operator.svg12.argb32.xfail.png | Bin 8404 -> 8378 bytes test/clip-operator.svg12.rgb24.xfail.png | Bin 4523 -> 4566 bytes test/clip-operator.xlib-fallback.ref.png | Bin 3226 -> 3228 bytes test/clip-push-group.svg.ref.png | Bin 0 -> 175 bytes test/clip-stroke.ref.png | Bin 1528 -> 1451 bytes test/clip-stroke.xlib-fallback.ref.png | Bin 1566 -> 1490 bytes test/clip-stroke.xlib.ref.png | Bin 1563 -> 1563 bytes test/clip-text.svg.ref.png | Bin 933 -> 946 bytes test/clipped-group.ref.png | Bin 316 -> 289 bytes test/clipped-group.svg.ref.png | Bin 0 -> 250 bytes test/device-offset-fractional.pdf.xfail.png | Bin 275 -> 270 bytes test/extended-blend-alpha.svg12.argb32.xfail.png | Bin 6857 -> 6658 bytes test/filter-nearest-offset.pdf.xfail.png | Bin 1926 -> 2152 bytes test/filter-nearest-transformed.pdf.xfail.png | Bin 488 -> 532 bytes test/ft-text-vertical-layout-type1.svg.ref.png | Bin 3609 -> 3607 bytes test/ft-text-vertical-layout-type1.xlib.ref.png | Bin 3640 -> 3639 bytes test/ft-text-vertical-layout-type3.svg.ref.png | Bin 3626 -> 3626 bytes test/ft-text-vertical-layout-type3.xlib.ref.png | Bin 3605 -> 3605 bytes test/group-unaligned.svg.argb32.xfail.png | Bin 522 -> 520 bytes test/leaky-dashed-rectangle.pdf.ref.png | Bin 347 -> 380 bytes test/mask-glyphs.svg.ref.png | Bin 1211158 -> 1211144 bytes test/mask.pdf.argb32.ref.png | Bin 7837 -> 7866 bytes test/mask.pdf.rgb24.ref.png | Bin 7301 -> 7336 bytes test/mask.svg.argb32.xfail.png | Bin 8613 -> 8641 bytes test/mask.svg.rgb24.xfail.png | Bin 7189 -> 7199 bytes test/operator-source.svg12.argb32.xfail.png | Bin 2951 -> 2967 bytes test/operator-source.svg12.rgb24.xfail.png | Bin 2963 -> 2976 bytes test/overlapping-glyphs.svg.argb32.ref.png | Bin 0 -> 2338 bytes test/overlapping-glyphs.svg.rgb24.ref.png | Bin 0 -> 2338 bytes test/radial-gradient.pdf.ref.png | Bin 277162 -> 280944 bytes test/radial-gradient.svg.xfail.png | Bin 0 -> 264425 bytes test/random-intersections-curves-eo.ref.png | Bin 246996 -> 245762 bytes ...m-intersections-curves-eo.xlib-fallback.ref.png | Bin 246243 -> 244255 bytes test/random-intersections-curves-eo.xlib.ref.png | Bin 246243 -> 244255 bytes test/random-intersections-curves-nz.ref.png | Bin 267589 -> 264545 bytes ...m-intersections-curves-nz.xlib-fallback.ref.png | Bin 266364 -> 264288 bytes test/random-intersections-curves-nz.xlib.ref.png | Bin 266360 -> 264288 bytes test/scale-offset-image.pdf.ref.png | Bin 0 -> 10099 bytes test/scale-offset-image.pdf.xfail.png | Bin 10099 -> 0 bytes test/scale-offset-image.script.xfail.png | Bin 0 -> 9963 bytes test/scale-offset-similar.pdf.ref.png | Bin 0 -> 10890 bytes test/scale-offset-similar.pdf.xfail.png | Bin 11024 -> 0 bytes test/scale-offset-similar.script.xfail.png | Bin 0 -> 9963 bytes test/self-intersecting.ref.png | Bin 301 -> 213 bytes test/smask-text.script.ref.png | Bin 0 -> 1663 bytes test/smask.pdf.xfail.png | Bin 4393 -> 2848 bytes test/smask.script.ref.png | Bin 0 -> 3396 bytes test/text-pattern.pdf.argb32.ref.png | Bin 1831 -> 1810 bytes test/text-pattern.pdf.rgb24.ref.png | Bin 1598 -> 1559 bytes test/unbounded-operator.svg12.rgb24.xfail.png | Bin 1719 -> 1731 bytes test/user-font-proxy.svg.ref.png | Bin 16817 -> 16814 bytes test/user-font.pdf.ref.png | Bin 0 -> 6241 bytes 58 files changed, 12 insertions(+), 2 deletions(-) commit 155e10e632cb647df5c3d54a75975bc16591287d Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Aug 29 08:04:33 2009 +0100 [script] Fix use of freed list A typo, I missed converting the user over to the freshly sorted list, leaving it iterating over original but checking the sorted for termination conditions. src/cairo-script-surface.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 5393aa6d6c4676f20d316f3cd0a18bb497574e50 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Aug 29 08:02:52 2009 +0100 [path] Return the canonical box. When returning the single box that represents a path, always return it consistently wound. src/cairo-path-fill.c | 32 -------------------------------- src/cairo-path-fixed.c | 28 ++++++++++++++++++++++++---- 2 files changed, 24 insertions(+), 36 deletions(-) commit afea5eb79d2159fe9a5dc1a1a7b9445e40fbb474 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Aug 28 17:10:35 2009 +0100 [scaled-font] Fix implementation-face refleak If we found the font via the holdover cache, or if we returned due to an error, we would leak a reference count on the implementaton face. src/cairo-scaled-font.c | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-) commit e5d44937f34d35606ad7f07415be7331cf146567 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Aug 28 17:09:54 2009 +0100 [ft] Improve error path handling. Specifically check for an error during resolving the font and do not cache the error object. src/cairo-ft-font.c | 12 ++++++------ 1 files changed, 6 insertions(+), 6 deletions(-) commit e76856e6ee563affc0a273ed6eef865866802dec Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Aug 28 15:51:33 2009 +0100 [scaled-font] Refleak on error path. Perform the destroy of the local font before returning along the error path. src/cairo-scaled-font.c | 9 ++++----- 1 files changed, 4 insertions(+), 5 deletions(-) commit d7d6f75ed26bc3ea040c618442ba71c89633ac7b Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Aug 28 15:50:13 2009 +0100 [clip] Fix refleak of previous clipping surfaces. When combining previous clip masks, we leaked a referenced due to not destroying the returned reference. src/cairo-clip.c | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-) commit 52e5ce3a36ab1cd7da25056df7f12ac0b23e410d Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Aug 27 17:25:08 2009 +0100 [test] Add clip-stroke Soeren was the first to report a clipping regression in the xlib backend with strokes, and provided a test case to exercise the bug. This is an extension of his test to provide coverage of different clipping and stroking methods. test/Makefile.am | 3 + test/Makefile.sources | 1 + test/clip-stroke.c | 121 ++++++++++++++++++++++++++++++++ test/clip-stroke.ref.png | Bin 0 -> 1528 bytes test/clip-stroke.xlib-fallback.ref.png | Bin 0 -> 1566 bytes test/clip-stroke.xlib.ref.png | Bin 0 -> 1563 bytes 6 files changed, 125 insertions(+), 0 deletions(-) commit 20cdb99ae8ae0cc02193468e811b1b74b3f6d3b7 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Aug 27 16:21:30 2009 +0100 [path-fixed] Distinguish cw and ccw boxes To correctly handle retessellating trapezods constructed from alternately wound boxes, then we need to pass that information from the path to the tessellator. We do this by switching the direction of the box if the first edge is horizontal as opposed to vertical. src/cairo-path-fixed.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 219d46a9ebc47f99fa8fe9c6e3f0aa440309f032 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Aug 27 14:45:24 2009 +0100 [scaled-font] Eliminate intermediate path when tracing glyphs Currently the tracing code for glyphs constructs an temporary path in order to replay and append to the output. This temporary allocation is extremely wasteful as we can just directly append the glyph path to the output path. src/cairo-scaled-font.c | 51 ++++++++++++++++++++-------------------------- 1 files changed, 22 insertions(+), 29 deletions(-) commit 2e05922737d63289a3f124699359b8d385315cbd Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Aug 27 13:58:43 2009 +0100 [stroke] Handle degenerate stroke extents If the stroke is degenerate, i.e. the path consists only of a single move-to and no edges, then the stroke may be visible due to end-capping (as opposed to fills which are empty). So we also need to pad out the extents around the current point for the degenerate case. src/cairo-path-bounds.c | 31 +++++++++++++------------------ 1 files changed, 13 insertions(+), 18 deletions(-) commit cfd78393f357bc69233d4d00d0fb3a2ff736f1a7 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Aug 26 23:32:34 2009 +0100 [path] Handle the implicit close for path_fixed_is_box() _cairo_path_fixed_is_box() is only called for filled paths and so must handle the implicit close (which was already being correctly handled by _cairo_path_fixed_iter_is_box). src/cairo-path-fixed.c | 33 ++++++++++++++++++--------------- 1 files changed, 18 insertions(+), 15 deletions(-) commit f22045bb4b9e700ce223c259ad41403dc7efe81f Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Aug 26 23:30:02 2009 +0100 [fallback] Include implicit closes in the check for rectilinear paths Fixes test/implicit-close By forgetting the implicit-close when checking for rectilinear paths, we tried to feed the triangle (and other diagclose) into the specialised rectilinear tesselators which completely mishandled that final edge. src/cairo-path-fixed-private.h | 14 ++++++++++++++ src/cairo-surface-fallback.c | 6 ++++-- 2 files changed, 18 insertions(+), 2 deletions(-) commit 92f6f275fcb5407baf908485ffd08b6787b2caf9 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Aug 26 23:27:46 2009 +0100 [test] Implicit close This is a simple test that broke with the determination of rectilinearity during path construction. I forgot the implicit close on fill and so the ignored the final diagonal edge and failed to draw the triangle. test/Makefile.am | 1 + test/Makefile.sources | 1 + test/implicit-close.c | 54 +++++++++++++++++++++++++++++++++++++++++++ test/implicit-close.ref.png | Bin 0 -> 251 bytes 4 files changed, 56 insertions(+), 0 deletions(-) commit 8078cd194e95a10cf653c970d1ddd39049a511f2 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Aug 23 15:25:42 2009 +0100 [boilerplate] Runtime library check For the purposes of benchmarking it is useful to run cairo-perf against a different library from the one it was compiled against. In order to do so, we need to check that the runtime library contains the required entry points for our targets - which we can check by using dlsym. boilerplate/Makefile.am | 3 ++ boilerplate/cairo-boilerplate-directfb.c | 2 + boilerplate/cairo-boilerplate-drm.c | 2 + boilerplate/cairo-boilerplate-gl.c | 2 + boilerplate/cairo-boilerplate-glitz-agl.c | 2 + boilerplate/cairo-boilerplate-glitz-glx.c | 2 + boilerplate/cairo-boilerplate-glitz-wgl.c | 2 + boilerplate/cairo-boilerplate-pdf.c | 2 + boilerplate/cairo-boilerplate-ps.c | 4 +++ boilerplate/cairo-boilerplate-quartz.c | 2 + boilerplate/cairo-boilerplate-script.c | 1 + boilerplate/cairo-boilerplate-skia.c | 2 + boilerplate/cairo-boilerplate-svg.c | 4 +++ boilerplate/cairo-boilerplate-test-surfaces.c | 8 ++++++ boilerplate/cairo-boilerplate-vg.c | 4 +++ boilerplate/cairo-boilerplate-win32-printing.c | 2 + boilerplate/cairo-boilerplate-win32.c | 2 + boilerplate/cairo-boilerplate-xcb.c | 1 + boilerplate/cairo-boilerplate-xlib.c | 4 +++ boilerplate/cairo-boilerplate.c | 29 +++++++++++++++++++++-- boilerplate/cairo-boilerplate.h | 1 + configure.ac | 7 +++++ 22 files changed, 85 insertions(+), 3 deletions(-) commit 7447915381fc64bd0c66f7110c1dd0b8a10d73f5 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Aug 22 22:20:35 2009 +0100 [script] Conditionalise the build Allow the interpreter to be disabled if we can not satisfy its dependencies. configure.ac | 2 ++ util/Makefile.am | 11 +++++++++-- util/cairo-script/Makefile.am | 2 +- 3 files changed, 12 insertions(+), 3 deletions(-) commit fcda9fc2f29c2ee7d0bb45c17a2261badfdf430c Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Aug 22 18:48:33 2009 +0100 [scaled-font] Remove assert from cairo_scled_font_create() The assert() is only correct for the normal paths, but failed on the error path. It has been run for long enough for me to be confident that the code is self-consistent, so I think I can now safely remove it. src/cairo-scaled-font.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) commit 93cfa7376fb505e676d113e8ef431bab9b497f56 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Aug 22 18:45:54 2009 +0100 [win32] Use the system scaled_font_done Pointless as both functions are empty, but lets be pedantically correct nevertheless. src/cairo-win32-font.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) commit 8654a4b35c060ab06860c124a643be912060c4a1 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Aug 22 18:16:20 2009 +0100 [win32] Initialize clip_region Eek, I attempted to destroy an uninitialised region on the first use of a clip. src/cairo-win32-surface.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit 9b33a2e1c794996cbe4cb0a5c773d50566d46bd4 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Aug 22 17:40:12 2009 +0100 [win32] Compiler warnings Innocuous warnings about the use of mismatching explicit casts (I'm really not convinced by the merits of this particular compiler warning, but it does cleanse the code slightly.) src/cairo-win32-printing-surface.c | 24 ++++++++++++------------ 1 files changed, 12 insertions(+), 12 deletions(-) commit d1740d8782d90edb5b5e20dc5bcadb7a9eeeb4cc Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Aug 20 21:11:11 2009 +0100 [pattern] Ensure that no repeated pattern is clipped Previously the pattern_acquire_surface routine only had to worry about handling extend modes NONE or REPEAT and so the test for ! REPEAT sufficed when what was actually intended was a test for NONE. src/cairo-pattern.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 958f7ab1238b8242975d3ea774c26d23e090e70c Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Aug 19 12:35:00 2009 +0100 [script] Support running on cairo-1.8 Pre 1.9 the application had to pass a resolved font to cairo -- so do so in the interpreter if the cairo version is less than 1.9 util/cairo-script/cairo-script-operators.c | 18 +++++++++++++++--- 1 files changed, 15 insertions(+), 3 deletions(-) commit 87175334a574fa0f69679b1a0baeeb881eaa439b Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Aug 21 15:51:12 2009 +0100 [gl] Use spans for trapezois. Always use spans, even for unaligned boxes. In the future (given a new interface) we may want to emit the common unaligned box code more efficient than a per-scanline computation -- but for now simply avoid the requirements to write a temporary CPU buffer. src/cairo-gl-surface.c | 22 ++++++++++++++++++---- src/cairo-image-surface.c | 4 +--- src/cairo-surface-fallback.c | 10 ++-------- src/cairo-surface.c | 27 ++++++++++----------------- src/cairo-win32-surface.c | 4 +--- src/cairoint.h | 18 ++++++++++++++---- 6 files changed, 46 insertions(+), 39 deletions(-) commit e65dfacab5d123913a4b2f59967f27c0b0af0692 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Aug 21 15:50:24 2009 +0100 [gl] Simplify acquire_dest_image() Remove redundant code: the intersection of surface extents and the copy to a temporary buffer. src/cairo-gl-surface.c | 53 ++++++++++------------------------------------- 1 files changed, 12 insertions(+), 41 deletions(-) commit 5a13396373180ceae31287441ef9c838c771849d Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Aug 21 15:48:38 2009 +0100 [gl] Use common ARRAY_LENGTH macro Forgo the local ARRAY_SIZE macro where the common one will suffice. src/cairo-gl-surface.c | 4 +--- 1 files changed, 1 insertions(+), 3 deletions(-) commit efdb53425ee71b3bce6c92ce212f5baf3e2a43d7 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Aug 21 11:58:31 2009 +0100 [qt] Discard impossible status return from path construction As we never return an error status during the path construction, we can use the return value for the QPainterPath instead, greatly simplifying the callers. src/cairo-qt-surface.cpp | 105 ++++++++++++++++++--------------------------- 1 files changed, 42 insertions(+), 63 deletions(-) commit f2cde41cabaa0c190ef965f634cf2c73b6ba2334 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Aug 21 10:29:39 2009 +0100 [cairoint.h] Add missing cairo_private to debug prototypes. src/cairoint.h | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit b6d96bba8a4e9efe1033dd7fc875aba9bd8d0dc8 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Aug 20 20:31:49 2009 +0100 [win32] Trust the clipping code to trim roi to our surface The higher level code ensures that the region of interest is trimmed to our declared surface extents, so performing the intersection again is redundant. Furthermore with the change in the clipping code, the fallback region is no longer clipped, especially as the clip that is currently set upon the DC is likely to be stale and incorrect for the fallback. Hopefully this resolves the assertion failure reported by Damian Frank, http://lists.cairographics.org/archives/cairo/2009-August/018015.html CC: Damian Frank <damian.frank@gmail.com> src/cairo-win32-surface.c | 53 +++++++------------------------------------- 1 files changed, 9 insertions(+), 44 deletions(-) commit d7faec024ac9f702c9bb305599ef8960a972491a Author: Vladimir Vukicevic <vladimir@pobox.com> Date: Mon Jun 15 11:15:22 2009 +0100 Add skia backend Originally written by Vladimir Vukicevic to investigate using Skia for Mozilla, it provides a nice integration with a rather interesting code base. By hooking Skia underneath Cairo it allows us to directly compare code paths... which is interesting. [updated by Chris Wilson] boilerplate/Makefile.sources | 1 + boilerplate/Makefile.win32.features | 10 + boilerplate/cairo-boilerplate-skia.c | 50 ++ build/Makefile.win32.features | 1 + build/Makefile.win32.features-h | 3 + build/configure.ac.features | 1 + configure.ac | 13 + perf/cairo-perf-trace.c | 3 + perf/cairo-perf.c | 3 + src/Makefile.sources | 3 + src/Makefile.win32.features | 14 + src/cairo-skia-surface.cpp | 1174 ++++++++++++++++++++++++++++++++++ src/cairo-skia.h | 84 +++ src/cairo.h | 4 +- 14 files changed, 1363 insertions(+), 1 deletions(-) commit af6df4af51ad75a956e3b73542647206ab534bd2 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Aug 20 12:54:12 2009 +0100 [configure] Choose a better name for the 'temporary' egl iterator The problem is that it remains referenced by egl_NONPKGCONFIG_LIBS and so must not be subsequently overwritten, so give it an egl_ prefix. configure.ac | 12 ++++++++++-- 1 files changed, 10 insertions(+), 2 deletions(-) commit 83c2f44dd954cb491d72834d0362d6d801ef7651 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Aug 20 12:16:55 2009 +0100 [test] Update REFERENCE_IMAGES test/Makefile.am | 5 ++--- 1 files changed, 2 insertions(+), 3 deletions(-) commit f99e1841448e98be6161be57551153a6d9e28a13 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Aug 20 12:11:51 2009 +0100 [build] Remove -Wcast-align Use -Wcast-align simply generates too much noise due to false-positive reports when casting pixels to uint32_t. build/configure.ac.warnings | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) commit 5fdf5b311e06e49843e924523e9bc91ba14da3bb Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Aug 19 08:35:01 2009 +0100 [fallback] Reduce paint + clipmask to fill Under simple, yet common, conditions using a bounded operator and painting with a single complex clip we can reduce the strength of that operation to a fill. In effect this removes the need for a temporary mask for some backends (GL, drm, xlib). src/cairo-surface-fallback.c | 26 +++++++++++++++++--------- 1 files changed, 17 insertions(+), 9 deletions(-) commit 425b0e35e2d7d44d99e22169b98fc3ca05763650 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Aug 18 14:25:25 2009 +0100 Add xml surface A very simple surface that produces a hierarchical DAG in a simple XML format. It is intended to be used whilst debugging, for example with the automatic regression finding tools of cairo-sphinx, and with test suites that just want to verify that their code made a particular Cairo call. boilerplate/Makefile.win32.features | 10 + build/Makefile.win32.features | 1 + build/Makefile.win32.features-h | 3 + build/configure.ac.features | 1 + configure.ac | 4 + src/Makefile.sources | 18 +- src/Makefile.win32.features | 14 + src/cairo-base64-stream.c | 143 ++++ src/cairo-base85-stream.c | 3 - src/cairo-output-stream-private.h | 4 + src/cairo-ps-surface.c | 4 + src/cairo-script-surface.c | 18 +- src/cairo-xml-surface.c | 1153 ++++++++++++++++++++++++++++++ src/cairo-xml.h | 72 ++ src/cairo.h | 4 +- util/Makefile.am | 11 +- util/cairo-script/cairo-script-scanner.c | 113 +++ util/trace-to-xml.c | 77 ++ util/xml-to-trace.c | 263 +++++++ 19 files changed, 1902 insertions(+), 14 deletions(-) commit 6e0b3be903a6c3ad948de95f490cff92430429a6 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Aug 18 10:55:54 2009 +0100 Add cairo-sphinx utility for regression analysis sphinx is an alternate version of the current cairo-test-trace. It's purpose is to replay a live application (which may just be a replay of a trace) against a backend and its reference. The improvement over the original cairo-test-trace is that the reference backend may be from an older version of cairo. configure.ac | 6 + util/Makefile.am | 6 + util/cairo-sphinx/.gitignore | 1 + util/cairo-sphinx/Makefile.am | 40 ++ util/cairo-sphinx/fdr.c | 260 +++++++ util/cairo-sphinx/sphinx.c | 1525 +++++++++++++++++++++++++++++++++++++++++ 6 files changed, 1838 insertions(+), 0 deletions(-) commit c980affce05590f5f52273ba340463f00773c776 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Aug 18 10:54:26 2009 +0100 [script] Apply device offset when replaying meta surface As we set the size of the surface to fit the ink extents of the meta surface, we also need to ensure that the origin of the script lies at the origin of the ink extents. src/cairo-script-surface.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit eb33f842dc9a2555ba8f7948f49a8335db951959 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Aug 17 11:38:52 2009 +0100 [meta] Missing status check We need to check the status on the created image before use. src/cairo-meta-surface.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit ce6a2cc5d2cb8a299759d764de2e7d2b6b655cb4 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Aug 17 10:31:47 2009 +0100 [wrapper] Always copy clip We always need to make a local copy of the clip as the backends are free to modify it as they process the operation. src/cairo-surface-wrapper.c | 60 +++++++++++++++++++++++++++++++----------- 1 files changed, 44 insertions(+), 16 deletions(-) commit 6ff711b6305a9cf65e584d92258a6fa4e78c31ef Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Aug 17 10:11:32 2009 +0100 [matrix] Improve bbox finding for translation matrix If the matrix is a pure translation matrix than we can skip determination of the extents and just translate the input bbox. src/cairo-matrix.c | 56 ++++++++++++++++++++++++++------------------------- 1 files changed, 29 insertions(+), 27 deletions(-) commit cd7b27ff5c01a533c2c065c4b455ad19df2be3bb Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Aug 16 21:08:22 2009 +0100 Add 'flight-data-recorder' utility. This is a simple variation on cairo-trace that wraps records the last 16 contexts by wrapping the target surface inside a tee surface, along with a meta/recording surface. Then on receipt of a SIGUSR1, those last 16 contexts are played via a script-surface into /tmp/fdr.trace. Mostly proof-of-concept, it seems to be causing a number of rendering glitches whilst testing with firefox -- otherwise, it seems to works. configure.ac | 1 + src/cairo-scaled-font-private.h | 3 + src/cairo-scaled-font.c | 16 ++ src/cairo-script-surface.c | 58 +++++++- src/cairo-script.h | 4 + src/cairo.h | 4 + util/Makefile.am | 3 + util/cairo-fdr/Makefile.am | 13 ++ util/cairo-fdr/fdr.c | 304 +++++++++++++++++++++++++++++++++++++++ 9 files changed, 400 insertions(+), 6 deletions(-) commit 658cdc7c9aac23f82f3ea5db8df10844aeb3ac75 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Aug 16 18:04:54 2009 +0100 Introduce cairo_tee_surface_t Add a new surface type that multiplies it input onto several output surfaces. The only limitation is that it requires a master surface that is used whenever we need to query surface options, such as font options and extents. boilerplate/Makefile.win32.features | 8 + build/Makefile.win32.features-h | 1 + build/configure.ac.features | 1 + configure.ac | 1 + src/Makefile.sources | 6 +- src/Makefile.win32.features | 8 + src/cairo-surface-wrapper-private.h | 4 + src/cairo-surface-wrapper.c | 7 + src/cairo-surface.c | 11 + src/cairo-tee-surface-private.h | 47 +++ src/cairo-tee-surface.c | 558 +++++++++++++++++++++++++++++++++++ src/cairo.h | 13 +- 12 files changed, 662 insertions(+), 3 deletions(-) commit 4ae7186719b25f052b875549cc5377e16a557512 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Aug 16 17:07:00 2009 +0100 [script] Correct emission of get_target() for a popped context If the context is no longer on the operand stack, then we need to recall the surface via a definition. src/cairo-script-surface.c | 53 ++++++++++++++++++++++++++----------------- 1 files changed, 32 insertions(+), 21 deletions(-) commit 8d1bf830c0137eac837091bda92a636c0fcb0456 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Aug 16 14:20:35 2009 +0100 Fix errors found by clang Shadowed variables, unused writes and some dead code. src/cairo-pdf-surface.c | 2 -- src/cairo-xlib-surface.c | 5 ++--- util/cairo-script/cairo-script-file.c | 10 +++------- util/cairo-script/cairo-script-operators.c | 23 ++++++++++++++++------- util/cairo-trace/trace.c | 14 ++++++++------ 5 files changed, 29 insertions(+), 25 deletions(-) commit d8dbce021a4493330864154e67ca6e4a1f2f50b2 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Aug 16 13:26:59 2009 +0100 [script] recursive active (type3 glyphs) The assumption that an active surface could not recurse into another operation was invalid - due to the complexity of handling type3 glyphs. src/cairo-script-surface.c | 11 +++++------ 1 files changed, 5 insertions(+), 6 deletions(-) commit eba6b5126a55c84706e677b3fc88743f64cc28d7 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Aug 16 12:47:14 2009 +0100 [build] Add options for warning about bad casts -Wbad-function-cast in particular. Triggers quite a few warnings where we have explicitly cast to an integer. build/configure.ac.warnings | 9 +- src/cairo-arc.c | 2 +- src/cairo-pdf-surface.c | 8 +- src/cairo-ps-surface.c | 20 ++-- src/cairo-svg-surface.c | 4 +- util/cairo-script/cairo-script-objects.c | 4 +- util/cairo-script/cairo-script-operators.c | 172 +++++++++++++++++++--------- util/cairo-script/cairo-script-private.h | 6 +- 8 files changed, 143 insertions(+), 82 deletions(-) commit 33ef32af4e7adce41f035ee378279c19577469b0 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sun Aug 16 12:46:20 2009 +0100 [clip] Use the rectangular tessellator to extract boxes src/cairo-clip.c | 17 ++++++++++------- src/cairo-path-fill.c | 29 ++++++++++++++++++++++------- src/cairo-surface-fallback.c | 8 ++++---- 3 files changed, 36 insertions(+), 18 deletions(-) commit ab035ab2c7bec254fc94d6391398905b5039e777 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Aug 28 10:06:04 2009 +0100 [tessellate] Rectangular special case Add an even simpler sweep-line tessellator for rectangular trapezoids (as produced by the rectilinear stoker and box filler). This is so simple it even outperforms pixman's region validation code for the purposes of path-to-region conversion. src/Makefile.sources | 1 + src/cairo-bentley-ottmann-rectangular.c | 733 +++++++++++++++++++++++++++++++ src/cairo-clip.c | 26 +- src/cairo-path-fill.c | 40 +-- src/cairo-path-stroke.c | 3 +- src/cairo-surface-fallback.c | 95 ++++- src/cairo-traps.c | 28 +- src/cairoint.h | 5 + 8 files changed, 883 insertions(+), 48 deletions(-) commit d7b0c3b784faba756b10b66b9757e6e4c3fce38c Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Aug 13 22:03:06 2009 +0100 [script] Track scaled-font Instead of emitting the (font-face, matrix and options) elements when setting up the desired font on the matrix, simply restore the scaled-font. src/cairo-script-surface.c | 39 ++++++++++++++++++++++----------------- 1 files changed, 22 insertions(+), 17 deletions(-) commit 7306305cc898c9f27957c6c6717028cbdcff6a5a Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Aug 13 21:59:12 2009 +0100 [script] Emit surface content Include the desired content with the creation info. boilerplate/cairo-boilerplate-script.c | 2 +- src/cairo-script-surface.c | 34 +++++++++++++++++++------------ src/cairo-script.h | 1 + util/cairo-trace/trace.c | 5 +++- 4 files changed, 27 insertions(+), 15 deletions(-) commit 052211b072788f0977dccebdcf681d4874f2487a Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Aug 13 20:16:51 2009 +0100 [script] Garbage collect contexts on context switch Previously the contexts were permanently associated with the surface and only destroyed along with the final reference to the surface. This meant that we kept a large number of unwanted c