Commit graph

8225 commits

Author SHA1 Message Date
Chris Wilson
08b9984da9 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.
2010-05-04 13:28:36 +01:00
Chris Wilson
2c68fcace4 test: Embed the list pointer into cairo_test_t
Reduce the amount of output printed by leak-detectors when a test
crashes.
2010-05-04 13:28:36 +01:00
Chris Wilson
7002b82472 xlib: Don't delete gradients in unbounded fixup code
The fix is ugly, but for now it works.
2010-05-04 13:53:02 +02:00
Chris Wilson
af26560f25 test: Improve memfault behaviour.
Various minor tweaks to convert asserts into error returns and to
improve error checking on intermediate surfaces.
2010-05-03 19:21:59 +01:00
Chris Wilson
c549203c8d scaled-font: Check for an error return when retrieving the implementation 2010-05-03 19:21:18 +01:00
Chris Wilson
c93e6f014d paginated: propagate malloc failures more cleanly. 2010-05-03 19:20:42 +01:00
Chris Wilson
8e9fd9c017 image: A few missing tests for malloc failure 2010-05-03 19:20:07 +01:00
Chris Wilson
87781ffbd9 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.
2010-05-03 19:18:49 +01:00
Benjamin Otte
5672b7a18a fallback: get src_x/y variables right when compositing traps 2010-05-03 13:37:19 +02:00
Dave Yeo
c10a5a9fb0 os2: Fix get_extents() segfaulting.
bed2701e1c removed one line too much.
2010-05-03 10:20:51 +02:00
Benjamin Otte
9df81fe4d3 boilerplate: don't compile pdf test code when pdf is not tested
Avoids gcc warnings when libpoppler version isn't good enough.
2010-05-02 20:00:08 +02:00
Benjamin Otte
358f57c876 image: remove useless optimization
The optimization is done way smarter inside
_cairo_matrix_transform_bounding_box()
2010-04-30 23:35:48 +02:00
Benjamin Otte
94aa6d24b6 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.
2010-04-30 23:35:48 +02:00
Carlos Garcia Campos
41fecf8e66 [configure] Bump poppler dependency to 0.13.3 2010-04-30 21:20:11 +02:00
Benjamin Otte
3294daf423 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.
2010-04-30 20:19:08 +02:00
Carlos Garcia Campos
0aeb612d2f [test] Update pdf reference image for text-rotate 2010-04-30 20:00:52 +02:00
Carlos Garcia Campos
fe28444647 [test] Update pdf reference image for surface-pattern-scale-down 2010-04-30 20:00:52 +02:00
Carlos Garcia Campos
dba6f23318 [test] Update pdf reference image for leaky-dashed-rectangle 2010-04-30 20:00:52 +02:00
Carlos Garcia Campos
6b81187ac4 [test] Update pdf reference images for clip-operator 2010-04-30 20:00:52 +02:00
Chris Wilson
b485ae5b90 atomic: Add Andrea's copyright notice
Note Andrea's copyright for his contribution of platform agnostic
fallbacks and the implementation for MacOS/X.
2010-04-30 14:14:01 +01:00
Chris Wilson
4ee5119a34 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.
2010-04-30 13:00:05 +01:00
Chris Wilson
c6dc8ad7dc Revert "paginated: Call surface finish explicitly on recording surface"
This reverts commit 5fc04bba9f.

Whilst this fixes the self-referential reference leak, it however
introduces use-after-finish into normal behaviour. Close, but not quite.
2010-04-30 12:39:59 +01:00
Chris Wilson
b972669c9a 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.
2010-04-30 12:39:59 +01:00
Chris Wilson
905c345df1 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.
2010-04-30 10:31:50 +01:00
Chris Wilson
5fe7c5842f pdf; Emit subsurface patterns natively.
Encode subsurface patterns into the PDF stream natively (when possible),
similar to the cairo-ps backend.
2010-04-30 10:16:24 +01:00
Chris Wilson
8ded35fd69 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.
2010-04-30 10:16:24 +01:00
Chris Wilson
5fc04bba9f 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.
2010-04-30 10:16:23 +01:00
Chris Wilson
3ae5723464 boilerplate: Ensure that the recording surfaces are finished.
Be paranoid and explicitly call finish to cleanup self-referential leaks
when using paginated/recording surfaces.
2010-04-30 10:16:23 +01:00
Chris Wilson
f08cc311af 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.
2010-04-30 10:16:23 +01:00
Chris Wilson
ab2776c9a1 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.
2010-04-30 10:16:23 +01:00
Chris Wilson
07122f37d1 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.
2010-04-30 10:16:23 +01:00
Chris Wilson
4cb733c285 image: Simplify translation of pattern matrix for composite_trapezoids() 2010-04-30 10:16:23 +01:00
Chris Wilson
3940b0e91c 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.
2010-04-30 10:16:06 +01:00
Chris Wilson
4b6fa8d5a7 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.
2010-04-30 09:47:51 +01:00
Benjamin Otte
e3f990d841 test: Update reference images for last checkin
Both tests now pas on all backends I tested: test, image, xlib and
recording
2010-04-29 22:35:38 +02:00
Benjamin Otte
6d36f06751 image: Round down when rendering antialiased boxes
Matches Pixman's output when going via pixman_rasterize_trapezoid()
2010-04-29 22:34:28 +02:00
Benjamin Otte
95179a5de9 Remove excessive semicolons
s/;;/;/ basically
2010-04-29 20:45:23 +02:00
Benjamin Otte
5d07307b69 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.
2010-04-29 18:20:59 +02:00
Benjamin Otte
90160deb2a xlib: Constify some function arguments 2010-04-29 18:20:44 +02:00
Benjamin Otte
4da71d1a01 xlib: remove unused code 2010-04-29 18:11:54 +02:00
Benjamin Otte
758ffadcb1 fallback: Only do _fill/compsoite_rectangles on bounded source
For unbounded sources, these optimizations fail to take into account the
regions outside the source.
2010-04-29 16:54:09 +02:00
Benjamin Otte
6288ad719d 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 9ce8bef9d6.
2010-04-29 15:38:25 +02:00
Benjamin Otte
b0760826f3 test: Set have_result for image matches
Causes the log to contain information about the reference imagery used.
2010-04-29 12:12:51 +02:00
Benjamin Otte
8f85c2d77c image: translate source pattern in composite_trapezoids()
Fixes xlib fallback paths as exposed by the clip-push-group test.
2010-04-29 12:12:51 +02:00
Chris Wilson
aa495eac5a atomic: Tweak for compilation x86.
Missing definition of _cairo_atomic_ptr_get() used in the fallbacks.
2010-04-29 10:04:54 +01:00
Andrea Canciani
248af38b3e 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>
2010-04-29 10:52:48 +02:00
Andrea Canciani
56a367a162 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>
2010-04-29 10:52:48 +02:00
Andrea Canciani
d66b1ca1cf 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>
2010-04-29 10:52:47 +02:00
Andrea Canciani
a0bf424b82 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>
2010-04-29 10:52:47 +02:00
Benjamin Otte
9ce8bef9d6 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.
2010-04-28 20:25:56 +02:00