Commit graph

9265 commits

Author SHA1 Message Date
Andrea Canciani
0ce4face45 test: Use ARRAY_LENGTH() macro
Some tests hand-code ARRAY_LENGTH(). It is now provided by
cairo-test.h, so it can be reused.
2011-03-17 17:45:57 +01:00
Andrea Canciani
75fea162d9 test: Cleanup macros
The ARRAY_LENGTH macro is used by many tests, although sometimes it is
named ARRAY_SIZE. Define it just once in cairo-test.h and reuse it.

In a similar way, MAX() and MIN() are currently defined in some
specific tests, while they could be reused.
2011-03-17 17:45:57 +01:00
Andrea Canciani
4ef32a36ba test: Silence gcc warnings
warning: cannot optimize possibly infinite loops

gcc does not detect that the "infinite" loops are actually just one or
two iterations, depending on the has_similar value being FALSE or
TRUE. It realizes it if the iteration variable and the iteration stop
value are both enum values.
2011-03-17 17:35:28 +01:00
Andrea Canciani
d6efb2a0b7 test: Silence gcc warning
cairo-test-runner.c:180: warning: unused variable ‘buf’
2011-03-17 17:04:42 +01:00
Andrea Canciani
2b84d82bcf test: Silence gcc
api-special-cases.c:94:1: warning: "Cursor" redefined
api-special-cases.c:81:1: warning: this is the location of the previous definition
2011-03-17 16:47:44 +01:00
Andrea Canciani
e45077612d test: Fix missing REFERENCE_IMAGES 2011-03-17 16:47:33 +01:00
Uli Schlachter
ed78510154 xcb-drm: Fix undeclared variable error
Signed-off-by: Uli Schlachter <psychon@znc.in>
2011-03-16 16:01:35 +01:00
Chris Wilson
02b2e3c93f xcb: Compile fix when using xcb-drm
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=31368
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-03-16 15:56:10 +01:00
Uli Schlachter
f6e6891b59 xcb: Never return NULL from create_similar
Signed-off-by: Uli Schlachter <psychon@znc.in>
2011-03-15 19:41:41 +01:00
Chris Wilson
59fec48cd6 configure: Test for funlockfile
cairo-trace already depended upon HAVE_FUNLOCKFILE for its
thread-safety.

[This is a candidate for 1.10.]

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-03-15 13:22:52 +00:00
Adrian Johnson
f2f65684f0 cff: Fix heap corruption
caused by holding a pointer into a cairo_array after a realloc

https://bugs.freedesktop.org/show_bug.cgi?id=35161
2011-03-13 21:16:14 +10:30
Uli Schlachter
f1d313e042 xcb: Remove _cairo_xcb_picture_copy
All cairo_xcb_picture_t now get their own, private Picture instead of possibly
sharing it with a cairo_xcb_surface_t.

This solves a cyclic dependency which caused cairo_xcb_picture_t to be leaked
until their device was finished.

When an xcb surface was used as a source, a cairo_xcb_picture_t was created
which kept a reference to the surface. This picture was then added as a snapshot
to the surface which caused the surface to own a reference to the picture.

As a result, the Picture and possibly its associated Pixmap were not freed on
the X11 server which could thus run out of memory.

This change causes more Pictures to be created which could possibly slow down
cairo-xcb. There seems to be no measurable difference with cairo-perf-trace. For
the micro benchmarks, this has the most impact on paint_similar-rgba_source.512:

       min(ticks)  min(ms) median(ms) stddev. iterations overhead
before     158732    0.159    0.159  0.11%   4: 1651.49
after      162579    0.163    0.163  0.18%   4: 1612.41

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=34912

Signed-off-by: Uli Schlachter <psychon@znc.in>
2011-03-04 16:37:13 +01:00
Uli Schlachter
f934491125 xcb boilerplate: Handle device offsets correctly
When running cairo-test-suite with "-a", backends are also tested with a
non-zero device offset. However, for "xcb-window&" the boilerplate incorrectly
overwrote the device offset with a zero offset again.

This caused all test results to be offset by 25 pixels which obviously makes all
tests fail.

Just removing the call to cairo_surface_set_device_offset solves the problem.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2011-03-04 16:37:13 +01:00
Jeff Muizelaar
de2c5bfa19 Add an implementation of fmax for use with MSVC 2011-03-03 16:34:43 -05:00
Jeff Muizelaar
aca492eb3f Add UINT32_MAX define.
This is needed for building with MSCV
2011-03-03 16:31:03 -05:00
Chris Wilson
9669b300a0 surface: Don't pass INT_UNSUPPORTED to _cairo_surface_set_error
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-03-02 18:31:28 +00:00
Uli Schlachter
c0dc933efd xcb: Remove CAIRO_XCB_RENDER_HAS_COMPOSITE_SPANS
This flag was only ever tested, but never set. Also, there is no X11 server out
there which actually supports this.

AFAIK it was just an experiment which turned into dead code.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2011-02-28 15:54:02 +01:00
Uli Schlachter
6cd96f966f xcb: Fix for PDF operators with RENDER 0.11
RENDER 0.11 added PDF operators and the cairo-xcb backend is already prepared
for handling them. However, it doesn't actually handle them.

If you used such an operator with RENDER 0.11, _operator_is_supported() would
return TRUE, but later on an ASSERT_NOT_REACHED in _render_operator() is hit.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2011-02-28 15:45:14 +01:00
Uli Schlachter
da9d6db115 xcb: Remove some unused code
All of these defines where not used anymore and this '#if 0'd code was so for
ages and most likely would stay commented out for more ages, too.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2011-02-28 15:42:57 +01:00
Eric Anholt
17169a1e51 gl: Bind samplers just once at program compile time.
We never bound any other value to the sampler uniforms, so why bother
resetting them all the time?

[  0]   before      firefox-talos-gfx   29.972   30.493   0.89%    3/3
[  0]   after       firefox-talos-gfx   29.397   29.599   1.27%    3/3

Signed-off-by: Eric Anholt <eric@anholt.net>
2011-02-26 14:09:54 -08:00
Eric Anholt
2fae22a3f2 gl: Take advantage of GLX_MESA_multithread_makecurrent to avoid unbinding.
Because of GLX's unfortunate requirement that only one context have a
thread current at a time, we had to unbind the context, triggering a
flush, and eating of all the CPU.  With a small tweak to the GLX spec
by GLX_MESA_multithread_makecurrent, and a small tweak to Mesa that
consisted mostly of deleting the "is this thread already bound
elsewhere?" check, we can bind our context to any thread and use it
safely as long as our usage of it is mutexed, which cairo-gl should
already be doing.

[  0] before      firefox-talos-gfx   50.260   50.525   0.25%    3/3
[  0] after       firefox-talos-gfx   32.091   32.422   0.65%    3/3
2011-02-26 14:09:33 -08:00
Eric Anholt
2e67809be0 gl: Add a first bit of general documentation on cairo-gl usage.
Since its inception, cairo-gl has been plagued by the "how am I really
supposed to use it?" problem.  This lays down my expectations for how
cairo-gl will interact with other usage of the GL API.
2011-02-21 14:12:47 -08:00
Behdad Esfahbod
90e1ef2d80 Bug 34011 - headers-standalone target is incorrect for some non-gcc compilers 2011-02-20 18:16:10 -05:00
Andrea Canciani
47f70537b8 image: Fix surface acquisition if PIXMAN_HAS_ATOMIC_OPS
If PIXMAN_HAS_ATOMIC_OPS, ix and iy will be changed if the source
surface is of subsurface type. They need to be reset to 0 before being
passed to _cairo_matrix_to_pixman_matrix_offset() or the acquired
surface will have an incorrect offset .
2011-02-19 19:26:20 +01:00
M Joonas Pihlaja
71e8a4c230 image: Avoid reusing pixman images for threadsafety.
The pixman_image_ref() and pixman_image_unref() functions
aren't threadsafe in current pixman, so we can't share
pixman images across contexts where they may end up
moving between threads.  The main use of these functions
is in keeping a global cache of pixman_image_ts for
solid colours and reusing the same pixman_image_t for
patterns pointing to the same image data where possible.

This patch removes those uses from cairo by wrapping
them in a PIXMAN_HAS_ATOMIC_OPS conditional.  There is
no automatic test this, so we will have to manually
turn this code back on when pixman does gain atomic
ops.

The only two remaining calls to pixman_image_ref() are
done on locally created images so they are safe.

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=34177
2011-02-19 18:01:27 +02:00
Benjamin Otte
48774c09d0 test: Fix gcc signedness warning 2011-02-19 12:08:17 +01:00
Benjamin Otte
94612bc032 arc: Remove erroneous return statement
Introduced in e46dc9e17a.
2011-02-19 10:40:01 +01:00
Benjamin Otte
9fc5ff797a test: Fix copy/paste error 2011-02-19 10:32:19 +01:00
Benjamin Otte
f847b3c216 test: Fix gcc complaints about old style definitions 2011-02-19 10:25:22 +01:00
Benjamin Otte
7386960d06 test: Add a test for 0-radius negative arcs
This test checks the behavior of
e46dc9e17a
2011-02-19 10:23:46 +01:00
Benjamin Otte
b2bda24e42 Declare variables first so gcc shuts up 2011-02-19 10:22:45 +01:00
Benjamin Otte
0fc65a1008 Revert accidental checkin in last commit
Today is not my day...
2011-02-18 19:57:22 +01:00
Benjamin Otte
e46dc9e17a arc: Handle radius == 0 the same no matter the arc direction
Commit a0ea0b63fd fixed cairo_arc() but
did not apply the same patch to cairo_arc_negative(). This patch fixes
that oversight.
2011-02-18 19:51:44 +01:00
Benjamin Otte
ea0595c5ec surface: Actually return a value from _cairo_surface_set_error()
This is what happens when there's too many warnings on the screen: I
don't see the important ones. Oops.
2011-02-18 19:06:16 +01:00
Benjamin Otte
9dcd29bef4 test: Add missing format to any2ppm to silence gcc 2011-02-18 18:53:45 +01:00
Benjamin Otte
056250775f surface: Allow NOTHING_TO_DO as a valid error for now
Lots of code relies on it, so we'd better not break that immediately. ;)
2011-02-18 18:52:11 +01:00
Benjamin Otte
4a3ab4b60a region: Don't be nice to people setting internal error code
Just DIE DIE DIE in the _cairo_status_set_status() assertion.
2011-02-18 18:30:17 +01:00
Benjamin Otte
3823c486f7 device: Don't be nice to people setting internal error codes
Just DIE DIE DIE in the _cairo_status_set_status() assertion.
2011-02-18 18:28:54 +01:00
Benjamin Otte
badf32290f surface: Don't be nice to people setting internal error codes
Just DIE DIE DIE in the _cairo_status_set_status() assertion.
2011-02-18 18:23:35 +01:00
Benjamin Otte
3b3cfbfffe Assert that an error is valid when set 2011-02-18 18:21:54 +01:00
Benjamin Otte
9c58336384 xcb: Don't operate on a status variable that is never set 2011-02-18 17:56:46 +01:00
Alexandros Frantzis
00ffb09593 boilerplate/egl: Ensure that we are using an RGBA32 egl config 2011-02-18 09:45:00 -05:00
Alexandros Frantzis
2181a53f61 egl: Ensure that the dummy pbuffer surface is compatible with the supplied context
In order to be able to make an egl context current when using a
pbuffer surface, that surface must have been created with a config
that is compatible with the context config. For Mesa, this means that
the configs must be the same.
2011-02-18 09:45:00 -05:00
Benjamin Franzke
3245d6e120 egl: Fix eglMakeCurrent for egl surfaces 2011-02-18 09:45:00 -05:00
Benjamin Otte
303f56a2d3 test: Add line-width-overlap
Test case taken from the WebKit test suite, failure originally reported
by Zan Dobersek <zandobersek@gmail.com>. WebKit test is
LayoutTests/canvas/philip/tests/2d.path.rect.selfintersect.html
2011-02-17 18:17:08 +01:00
Benjamin Otte
937465b15e tests: Fix gcc complaint
warning: ‘static’ is not at beginning of declaration
2011-02-17 18:09:22 +01:00
Benjamin Otte
4d4056872d tests: Add line-width-tolerance
Test case taken from the WebKit test suite, failure originally reported
by Zan Dobersek <zandobersek@gmail.com> at
https://bugs.webkit.org/show_bug.cgi?id=54471
2011-02-15 20:41:04 +01:00
Benjamin Otte
07c0b7c284 AUTHORS: Use correct email for me 2011-02-15 20:41:04 +01:00
Andrea Canciani
d866bb0405 xlib: Fix compilation when gradient functions are not available
It is not correct to rely on the version defined in render.h. The
Xrender.h header is independent and might not define some functions
available in RENDER 0.10.

Their availability must be detected at configure time and the stubs
must be defined only if the functions are not available.

Fixes https://bugs.freedesktop.org/show_bug.cgi?id=31906
2011-02-14 11:07:02 +01:00
Andrea Canciani
219f0d49a3 test: Fix REFERENCE_IMAGES
Makefile.am not updated along with changing the reference images in
6825007ac6 and
070bc5dd89.
2011-02-14 10:00:25 +01:00