Commit graph

7159 commits

Author SHA1 Message Date
Carlos Garcia Campos
1e1f4fd092 [test] Use poppler_page_render with a transparent surface
Instead of using an opaque surface filled in white, use a transparent
surface and fill it in white by using CAIRO_OPERATOR_DEST_OVER after
rendering.
2009-07-02 14:50:15 +02:00
Chris Wilson
700a555d19 [surface] Expose a SURFACE_TYPE_MISMATCH nil object
Gah, yet more error object bloat. Must finish cairo-object.
2009-07-01 19:45:11 +01:00
Chris Wilson
8f4611a94b [perf] Fix use-after-free when retrieving error line number
We find out the status on destroying the script and then attempt to query
the defunct script for more info about the error. Wrong.
2009-07-01 19:45:06 +01:00
Chris Wilson
7c160dea54 [perf] Unbreak cairo-perf-diff builder 2009-07-01 10:12:50 +01:00
Chris Wilson
3d88f99668 [perf] Enable cairo-perf-trace in cairo-perf-diff
Only as a --trace option for now.
2009-07-01 09:57:56 +01:00
Chris Wilson
1564d67d63 [perf] Exclude the xlib-reference target from cairo-perf 2009-06-30 22:23:21 +01:00
Chris Wilson
e5b4f78bff [boilerplate] Only include null-test-surface >= cairo-1.9.3 2009-06-30 22:12:50 +01:00
Chris Wilson
e0bdbb437e [xlib] Remove redundant checks for src_picture==None
Before attempting to even set the attributes on the source Picture, we
ensure that it exists. So remove the redundant safe-guards to do nothing
if it doesn't exist.
2009-06-30 22:04:01 +01:00
Chris Wilson
b7f68d3518 [perf] Enable trace directory recursion.
I have an idea to categorise traces within their own subdirectories and so
for convenience added path walking to cairo-perf-trace. Principally this
should allow for forests of symlinks of all types.
2009-06-30 20:46:12 +01:00
Chris Wilson
6102dd0c1c [ft] Correct reference counting for implementation font face
We are expected to return a new reference from get_implementation(), and
failing to do so was causing use-after-frees (detected by the reference
counting checks).
2009-06-29 10:50:44 +01:00
Chris Wilson
4f745fbe33 [test] Only run fallback-resolution for enabled targets
A secondary check that both activates CAIRO_TEST_TARGET and prevents a
NULL-deref with the null test surface.
2009-06-29 10:49:51 +01:00
Chris Wilson
d80f5580ef [pattern] Mark _cairo_pattern_nil as static
Fixes check-def.sh failure.
2009-06-28 21:11:41 +01:00
Chris Wilson
758a18b354 [test] Timeout support for tests
Enforce that each test must render within 60 seconds or be considered to
have hit an infinite loop and be reported as a CRASH. The timeout value is
adjustable via CAIRO_TEST_TIMEOUT -- a value of 0 will disable.
2009-06-28 21:10:30 +01:00
Chris Wilson
f7021d8f3e [script] Enable error handling for recursive scanners
It's conceivable that a script could execute another file and so we should
only setjmp on the first invocation.
2009-06-28 20:44:30 +01:00
Chris Wilson
963664727b [trace] Compile fix for --enable-script
Silly typo as pointed out by Hans Breuer <hans@breuer.org>.
2009-06-28 10:49:37 +01:00
Chris Wilson
2ecafb025c [script] Reuse glyph advance cache over multiple invocations
Store the metric cache as user-data on the scaled-font so that we can
retrieve it on future calls to show-glyphs and friends.
2009-06-28 10:09:01 +01:00
Chris Wilson
663da31bbe [boilerplate] Propagate original error from create_from_png()
During cairo_boilerplate_get_image_surface_from_png() the original status
returned by cairo_image_surface_create_from_png() could have been masked
by inappropriate context construction when flattening or extracting.
Simply check after creating the surface from the png file, and return
immediately if in error.
2009-06-28 01:17:13 +01:00
Chris Wilson
2bbb694202 [test] Disable fallback16 testing
Only use the RGB16_565 surface as a source during testing. We presume that
pixman is itself rigorously tested and the output is equivalent to the
image surface. Enabling this test surface would require too large of a
burden to maintain the reference images for the 16-bit backend.
2009-06-28 01:00:53 +01:00
Chris Wilson
34ac8673b2 [script] Use setjmp exception handling during scanning
Save ~5% of overhead by using longjmp on error to terminate scanning
instead of propagating the error, incurring lots of redundant error
checks.
2009-06-28 00:48:05 +01:00
Chris Wilson
2b1ec7a4d8 [cairo] Report true error via pattern from cairo_pop_group()
Report the correct error via the returned pattern->status rather than
simply returning the NO_MEMORY nil object.
2009-06-27 22:48:19 +01:00
Chris Wilson
5c3be3ece2 [cairo] Mark cr->status guard as unlikely
For correct operation, the context should never be in error, so mark the
error context as being unlikely to optimize the common path.
2009-06-27 22:40:15 +01:00
Chris Wilson
f388028333 [gstate] Avoid temporary allocation for transformed patterns
Observe that patterns are not altered during an operation and so we are
safe to use the data from the original pattern without copying. (This is
enforced through the declaration that the backends operate on constant
patterns which are not allowed to be referenced or destroyed.)
2009-06-27 20:18:18 +01:00
Chris Wilson
3759c7b34b [perf] Enable the null-backend for trace replays. 2009-06-27 19:38:30 +01:00
Chris Wilson
8d4c704129 [ft] Cache the resolved font face
Keep the resolved font face alive whilst the default FcConfig remains
identical i.e. resolve the pattern again if the system configuration
changes (e.g. a new font is added or the rules are updated). This should
retain the benefits of lazily resolving font patterns whilst improving
performance by reducing the number of calls to FcFontMatch().
2009-06-27 19:34:20 +01:00
Chris Wilson
ddadd41a6c [test] Remove broken PDF reference images for push-group
More XFAIL reference images that are now invalidated by changes in
poppler.
2009-06-27 18:07:36 +01:00
Chris Wilson
4d233fa4a6 [test] Remove invalid smask PDF reference images
These need to be recorded using an XFAIL reference. In the meantime, as
the poppler output has changed, just remove all the invalid PDF reference
images.
2009-06-27 18:04:37 +01:00
Chris Wilson
86624627e4 [test] Add group-unaligned
Test case for:
   Bug 22441 -- Unexpected shift with push_group and pop_group
   https://bugs.freedesktop.org/show_bug.cgi?id=22441

This is a test that demonstrates the error in the pdf backend when using
groups on surfaces with non-integer sizes. In order to create such a
surface, we need to update the boilerplate to use doubles instead of
integers when specifying the surface size.
2009-06-27 17:53:18 +01:00
Chris Wilson
c506ddb586 [pdf] Restore original surface size after emitting group mask
A trivial fix to reset the original surface size after emitting the group.
The annoying aspect is that this should have been caught by the test suite.
Alas, no. A gentle reminder that simple line coverage is insufficient. :(
2009-06-27 16:57:35 +01:00
Chris Wilson
f8a2665840 [cairo] Trivial code tidy 2009-06-27 16:32:51 +01:00
M Joonas Pihlaja
c7cf5317f5 [test] Fix Makefile.am for Solaris make.
Sun's make doesn't like conditional assignments to variables
in dependencies in the form of "target: VAR+=VAL".  This
construct was used to force the test suite run in the foreground
in the check-valgrind target.  It is replaced by a more
explicit set of the CAIRO_TEST_MODE environment variable.
2009-06-24 23:33:44 +01:00
Chris Wilson
b82e7740c1 [atomic] Silence compiler warnings by defining an intptr_t
Evaulate the integer sizes during configure to find one of the exact same
size as a void* to use in the conversion of the atomic ptr cmpxchg to an
atomic int cmpxchg.
2009-06-21 22:25:08 +01:00
M Joonas Pihlaja
a2d4fb5009 [test] Fix a typo in the _POSIX_SOURCE version number.
I hope POSIX isn't around in 20000 AD!
2009-06-21 17:34:13 +03:00
M Joonas Pihlaja
80990c7f72 [atomic] Use an integer __sync_val_compare_and_swap() for pointer CAS.
Fix an implicit pointer/integer cast in _cairo_atomic_ptr_cmpxchg()
when building with LLVM/clang.

The Intel synchronization primitives __sync_val_compare_and_swap()
are only defined by Intel for types int, long, long long and their
unsigned variants.  This patch uses one of those for
_cairo_atomic_ptr_cmpxchg() instead of relying on a gcc extension of
__sync_val_compare_and_swap() to pointer types.
2009-06-21 17:34:12 +03:00
Chris Wilson
d0c1c92821 [boilerplate] Implement a reference xlib surface
Create an xlib target that uses a separate display, specified by
CAIRO_REFERENCE_DISPLAY, that can be used as a reference implementation
for the normal display. So this can be used by cairo-trace-test to create
a reference surface that mimics exactly the true surface, but if it
targets an Xvfb display will be entirely rendered in software. If
CAIRO_REFERENCE_DISPLAY is not set, the reference surface degrades into an
xlib-fallback surface which is a close approximation (but still has
behavioural differences).
2009-06-21 10:13:31 +01:00
Chris Wilson
d2244053dc [perf] Force rebuild if make fails
The build system has a singular failure whereby if a backend disappears
between on compile and the next, automake will fail to reconstruct the
Makefiles - resulting in a broken build. Attempt to fix this by removing
the build dir and recloning, which should work for any corrupt caches but
obviously will fail again at a true build failure.
2009-06-21 10:13:31 +01:00
Chris Wilson
ef0d307d54 [perf] Need to version surface types
As cairo-perf-diff will execute the current cairo-perf against historical
revisions, any introduced api must be protect in order to compile on old
versions.
2009-06-21 10:13:31 +01:00
Chris Wilson
44b72ba6d7 [perf] Add a non-build mode to graph
Add --show to cairo-perf-graph just to graph perf files that currently
exist and not build the missing cases.
2009-06-21 10:13:31 +01:00
Chris Wilson
d4dd6fcf3a [perf] Show speedup/slowdownn labels on graph
Add labels show that it is clear which direction is faster on the graph.
2009-06-21 10:13:30 +01:00
Chris Wilson
b71b6ecb59 [test] Fix the image compare
Oh, it's a bad sign when I can't even correctly compare a bunch of pixels.
2009-06-21 10:13:30 +01:00
M Joonas Pihlaja
d544828934 [build] Look for libpng.pc as well when configuring.
The OpenBSD png package installs only libpng.pc and not
any of libpng{13,12,10}.pc.
2009-06-20 06:16:51 -06:00
M Joonas Pihlaja
5733d8d6c3 [build] Remove a level of quoting from CAIRO_PARSE_VERSION.
The m4 that comes with OpenBSD gets confused by the extra quoting
applied to the version number argument when building the
bodies of the cairo_version_{major,minor,micro} macros using
m4_bpatsubst(). Since we're making sure that the argument is always
a number, we can safely use the unquoted \2 body rather than \[\2\].
2009-06-20 06:11:44 -06:00
Chris Wilson
3bad3efaa2 [test] Add cairo-test-trace to .gitignore 2009-06-19 19:09:03 +01:00
Chris Wilson
62dc0ae46c [cairo] Offset the current path when pushing/popping groups.
We need to translate the path in order to compensate for the device offset
applied to the group surface when pushing and popping. (The path is
transformed to device space on creation, and so needs recomputing for the
new device.)
2009-06-19 19:08:34 +01:00
Chris Wilson
851c883962 [test] Add group-clip
Larry Ewing found an ancient and nasty bug whereby a path was not
corrected whilst pushing and popping groups.
2009-06-19 19:08:29 +01:00
Chris Wilson
0a34abace7 [test] Experiment with reference targets
Specify another boilerplate target to use as the reference for this
target. We then use this in cairo-test-trace in preference to using the
image surface. Still not perfect, though the framework is improving.
2009-06-19 19:06:17 +01:00
Chris Wilson
cec8579348 [xlib] Remove redundant code to query a xrender_format from a visual
We always query an xrender_format for a Visual upon surface creation, so
checking again in create_similar() is redundant. (It also interferes with
disabling XRender...)
2009-06-19 19:06:17 +01:00
Chris Wilson
dd842a2bed [boilerplate] Missing static on pdf user data key. 2009-06-19 19:06:17 +01:00
M Joonas Pihlaja
2da906f476 [script] Include unistd.h if we're twiddling file descriptors.
Including sys/mman.h doesn't pull in unistd.h on Solaris 9 so
we have to include it explicitly.
2009-06-19 19:01:15 +03:00
M Joonas Pihlaja
1b6dbcbbeb [trace] Compile without fontconfig.
Use CAIRO_HAS_FC_FONT to decide whether to export
cairo_ft_font_face_create_for_pattern() or not.
2009-06-19 19:01:14 +03:00
M Joonas Pihlaja
d9b5a98a78 [build] Require fontconfig >= 2.2.95 if we're using it at all.
We require at least fontconfig 2.2.95 when we're using
fontconfig because we depend on the FcResultOutOfMemory
error code introduced in that version.
2009-06-19 19:01:14 +03:00