Commit graph

11223 commits

Author SHA1 Message Date
Massimo Valentini
63f59ea896 polygon-intersection: Try not to invoke undefined behaviour
Optimizing compilers aggressively remove code that is executed only
after an undefined behaviour occurred.

Also, the difference of two (non char) pointers hides an integer
division that, because the divisor is known at compile time, is
transformed into a multiplication by a pseudo-reciprocal, and in this
case the difference is not always a multiple of the divisor, resulting
in an invalid comparison predicate.

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=74779
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-06-04 15:01:57 -07:00
Massimo Valentini
a3c022bb98 polygon-intersection: Include approximation in intersection points
In Hobby's paper it is proved that INTERSECTION events can be
processed in any order by ignoring intersections between edges
non-adjacent in the active edges list.
But with respect to START/STOP events they must be processed in
order. Because START/STOP events have always exact y, it is
sufficient to know whether an integer y intersection is a
default/excess approximation of the exact to properly sort events.

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=74779
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-06-04 15:01:35 -07:00
Massimo Valentini
9f2bbfa41f polygon-intersection: Do not discard intersection exactly at top edge
Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=74779
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-06-04 15:00:58 -07:00
Bryce Harrington
b9ada81995 cairo-script: Improve buffer length check
Quells the following warning:

cairo-script-scanner.c: In function ‘_translate_string’:
cairo-script-scanner.c:1623:18: warning: comparison between signed and
unsigned integer expressions [-Wsign-compare]
      if (buf_len <= 8 + 2*string->len) {
                  ^
2015-06-04 14:24:31 -07:00
Julien Isorce
f032133e6d build: Show all disabled features in cairo-features.h
Even features which are disabled by default should appear in
cairo-features.h.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=83359
(Patch approved by Behdad Esfahbod in bug tracker.)

Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-06-04 14:12:12 -07:00
Nathan Froyd
5d150ee111 Support new-style __atomic_* primitives
Recent versions of GCC/clang feature a new set of compiler intrinsics
for performing atomic operations, motivated by the operations needed to
support the C++11 memory model.  These intrinsics are more flexible than
the old __sync_* intrinstics and offer efficient support for atomic load
and store operations.

Having the load appear atomic to the compiler is particular important
for tools like ThreadSanitizer so they don't report false positives on
memory operations that we intend to be atomic.

Patch from Nathan Froyd <froydnj@mozilla.com>
2015-06-04 13:25:23 -07:00
Adrian Johnson
d1dda5eeb2 cff: ensure glyph widths are positive when font matrix yy is negative
Bug 90538
2015-05-21 22:40:01 +09:30
Zan Dobersek
f52f0e2feb Manually transpose the matrix in _cairo_gl_shader_bind_matrix()
To maintain compatibility with OpenGL ES 2.0, the matrix in
_cairo_gl_shader_bind_matrix() should be manually transposed,
and GL_FALSE passed as the transpose argument to the
glUniformMatrix3fv() call as it is the only valid value for
that parameter in OpenGL ES 2.0.

Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Acked-by: "Henry (Yu) Song" <henry.song@samsung.com>
2015-05-18 15:03:29 -07:00
Bryce Harrington
8b798c320f Fix broken canvas text font size in Inkscape
An earlier fix to bug 84324 added a regression in the font size of
canvas text in Inkscape when compiled with the Quartz backend.

Patch from Andrea Canciani

Fixes:  https://bugs.freedesktop.org/show_bug.cgi?id=84324
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-04-24 18:23:46 -07:00
Behdad Esfahbod
d5ffe67008 Remove debug printf; ouch! 2015-04-23 14:26:14 -07:00
Behdad Esfahbod
853e822c9c Oops, fixup previous commit 2015-04-21 14:31:53 -07:00
Behdad Esfahbod
bb01fd8794 [ft] Return CAIRO_STATUS_FILE_NOT_FOUND if font file can't be opened
A common source of error when people are setting up pango on a new
device is when font files don't have the right permissions and cannot
be opened.  Cairo was returning out-of-memory before, making the
Pango error message useless.

With this change, cairo will return file-not-found, and pango prints
that out.  It's still not ideal; a ENOACCESS equivalent would have
been better.
2015-04-21 14:29:41 -07:00
江頭幸路
040ae0ce19 Avoid appending an empty slot to an user data array when user_data is NULL.
Otherwise, calling cairo_set_user_data(cr, key, 0, 0) many times
causes a long user data array, almost all of whose slots are empty.
It leads to unnecessarily much memory consumption and long execution time of
cairo_set_user_data(cr, key, 0, 0) and cairo_get_user_data(cr, key) after
it.

This issue probably happens since the commit
http://cgit.freedesktop.org/cairo/commit/?id=9341c254a

Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-04-20 17:16:18 -07:00
Andrea Canciani
89942c6af0 test: Correct bug number in clip-complex-bug61592
The filename of the C source file is correct, but the test name (both
as function name and as reference image name) has a typo in it.

Related to https://bugs.freedesktop.org/show_bug.cgi?id=61592
2015-04-16 11:28:50 +02:00
Руслан Ижбулатов
e38e942ac0 win32: Add a win32 boilerplate that uses a real window
This way it uses the codepath for cairo_win32_surface_create_with_format(),
instead of the cairo_win32_surface_create_with_dib().

Without the recording tests (which terminate the testsuite)
the testsuite results for win32 are:

284 Passed, 167 Failed [1 crashed, 9 expected], 23 Skipped
win32 (rgb24): 1 crashed!
win32 (rgb24): 17 error
win32 (rgb24): 155 failed
win32 (argb32): 1 crashed!
win32 (argb32): 17 error
win32 (argb32): 68 failed
win32-window-color (rgb24): 1 crashed!
win32-window-color (rgb24): 17 error
win32-window-color (rgb24): 148 failed
win32-window-coloralpha (argb32): 1 crashed!
win32-window-coloralpha (argb32): 17 error
win32-window-coloralpha (argb32): 66 failed

Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-04-13 17:43:35 -07:00
Руслан Ижбулатов
16898ba11b win32: Add cairo API to set up a Win32 surface for an HDC with an alpha channel.
Signed-off-by: Руслан Ижбулатов <lrn1986@gmail.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-04-13 17:43:28 -07:00
Andrea Canciani
654b4a8efe test: Fix coverage-intersecting-triangles reference
Commit 4e3ef57bc8 added
coverage-intersecting-triangles with an incorrect reference and
generator. The test checks the rasterization of two overlapping
triangles in the following position:

   .   .
   |\ /|
   | X |
   |/ \|
   .---.

Since the triangles have both vertical and horizontal sides of size
x/WIDTH, the expected coverage is 3/4 (75%) of (x/WIDTH)^2. The
original code, instead, was checking for a coverage of 0.75*x/WIDTH,
as if one of the sides was always 1 unit long.

The image and xlib backends still suffer from some jitter, caused by
the approximation of the actual coverage by means of sampling. For
this reason their references are still considered XFAIL, even though
their result now looks mostly consistent with the expected reference.
2015-04-08 14:32:17 +02:00
Bryce Harrington
2cf2d8e340 Fix spellings descibed, indicies, stange 2015-04-04 15:49:18 -07:00
Bryce Harrington
7139265380 NEWS: Sp. fix 2015-03-18 18:46:35 -07:00
Bryce Harrington
904f1fdc1d surface: Clarify flush documentation 2015-03-18 15:49:41 -07:00
Andrea Canciani
b19b06c463 Harden make-cairo-test-constructors.sh
The make-cairo-test-constructors.sh script executes several commands
without checking their success. This can lead to undetected errors,
like those fixed in 86fad78fcd.

The script now exits with an error status if no file is
input. Moreover, it sets the '-e' flag, so that if a command fails,
the whole script is immediately terminated with an error.

In the Makefile.am, the script result is now checked and the target
file is removed upon error. This ensures that the
'cairo-test-constructors.c' target completes succesfully only if no
error occurred.

Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-03-13 13:18:32 -07:00
Bryce Harrington
ec0153940d Start 1.14.3 development 2015-03-13 13:18:32 -07:00
Adrian Johnson
5182d9bc5e doc: add index of new symbols in 1.14 2015-03-11 19:16:38 +10:30
Bryce Harrington
db6668cd0a RELEASING: Update contacts
Add a CC to the cairo@ list itself.

Drop updating of the GNOME dependencies page; this appears to have not
been updated since 2008.
2015-03-10 19:57:19 -07:00
Bryce Harrington
93422b3cb5 version: bump for cairo-1.14.2 release 2015-03-10 18:42:50 -07:00
Bryce Harrington
061d54745a KNOWN_ISSUES: Restore known issues file as a stub
Apparently distcheck requires this file be present.
2015-03-10 16:24:37 -07:00
Bryce Harrington
fb41ed3441 NEWS: Note about the OS X support 2015-03-10 13:08:29 -07:00
Andrea Canciani
845d2420e0 Update README with new minimum MacOSX requirements
Since 70cc8f250b the quartz backend is
using some APIs that are not available on MacOSX 10.4 directly
(i.e. without detecting their availability through dynamic linking).
This means that the quartz backend does not work anymore on MacOSX
10.4 and that the 10.5 SDK (or newer) is needed to build.
2015-03-10 12:42:16 -07:00
Bryce Harrington
86fad78fcd On MacOSX, the sed utility errors out when parsing non-UTF8
files. Because of this, the generated cairo-test-constructor only
contained a few tests and the test suite was thus incomplete.

Original patch by Andrea Canciani <ranma42@gmail.com>
2015-03-10 12:15:40 -07:00
Andrea Canciani
f840733221 Update KNOWN_ISSUES documentation
The bug mentioned in KNOWN_ISSUES was fixed in
2b3d8de11a, but the documentation was
not updated. Moreover, the header of KNOWN_ISSUES was 1.10-specific.

Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-03-10 10:56:00 -07:00
Bryce Harrington
c45e323555 NEWS: Finish filling in changes 2015-03-10 10:55:55 -07:00
Bryce Harrington
79dbe1bad8 NEWS: Update for changes through Nov 2014 2015-03-07 00:30:40 -08:00
Bryce Harrington
581f813705 HACKING: Add link to git tutorial and wordsmith a bit 2015-03-06 23:54:49 -08:00
Bryce Harrington
c0458b4560 csi-trace: Add --version and --help args to utility 2015-03-06 23:35:34 -08:00
Bryce Harrington
3a7d411539 Revert "xlib: Remove queued event from _XReadEvents"
This reverts commit e7fc8f405b.
2015-03-06 23:35:34 -08:00
Bryce Harrington
c3605bd3ad git-ignore: Add build's test-driver 2015-03-06 23:29:53 -08:00
Bryce Harrington
246d5c1d47 doc: Drop extraneous para's
These may have been required in the past, but just trip up distcheck
today.  The generated docs still look fine.
2015-03-06 19:19:13 -08:00
Bryce Harrington
e4f6d07efb gitignore: logs, manuals 2015-03-06 18:34:07 -08:00
Henry (Yu) Song
e7fc8f405b xlib: Remove queued event from _XReadEvents
Following patch fixes a memory leak in xlib surface.

Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-03-05 17:27:14 -08:00
Michael Haubenwallner
4e680ff4bb headers: fix include order for AIX, bug#89354
also for cairo-xcb-private.h
2015-03-05 17:03:32 -08:00
Michael Haubenwallner
733de40e87 headers: fix include order for AIX, bug#89354 2015-03-05 17:03:28 -08:00
Michael Haubenwallner
94d30d7160 perf: fix include order for AIX, bug#89354 2015-03-05 17:03:18 -08:00
Michael Haubenwallner
15c427bc77 perf/micro: fix include order for AIX, bug#89354 2015-03-05 17:02:23 -08:00
Michael Haubenwallner
0916d580db test: fix include order for AIX, bug#89354 2015-03-05 17:02:14 -08:00
Michael Haubenwallner
e9a615a2f9 define _GETDELIM for getline() on AIX
On AIX 6.1, getdelim() and getline() are not provided by default,
causing a gcc compilation error.  With _GETDELIM defined, AIX's stdio.h
header provides definitions for these routines.

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=89356
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-03-05 16:57:09 -08:00
Michael Haubenwallner
f72bd7c757 skip MAP_NORESERVE when unsupported
Fixes a compilation on AIX ('MAP_NORESERVE' undeclared)

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=89340
Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
2015-03-05 14:48:28 -08:00
Michael Haubenwallner
ac75ab9f30 fix conflicting types for 'sync' on AIX, bug#89338 2015-03-05 12:00:48 -08:00
Andrea Canciani
70cc8f250b quartz: Remove call to obsolete CGFontGetGlyphPath
CGFontGetGlyphPath was not public and is not available anymore on
modern OSX/iOS systems. The same functionality is available through
the CoreText API since OSX 10.5.

Based on a patch by Simon Cozens.

Fixes https://bugs.freedesktop.org/show_bug.cgi?id=84324
2015-02-05 15:13:46 +01:00
Massimo Valentini
91f128bf7a win32: Fix crash from win32 surface's image size too small
Beginning in 1.12, a crash can occur when the win32 surface's image size
does not cover the entire surface (e.g. due to clipping regions).

This patch enlarges the fallback surface created of the amount
necessary not to write past the end of the DIB. It assumes that
Clip applied to an HDC are clamped to (0,0,width,height) of the HDC.

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=53121
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-02-02 16:33:06 -08:00
Emanuele Aina
cca8b1960b cairo-trace: Fix duplicated surface push on similar-image
The current code results in trace lines with the source surface being
pushed on the stack two times instead of one:

s1 s1 //ARGB32 48 48 similar-image % s2

Instead of:

s1 //ARGB32 48 48 similar-image % s2

This greatly confuses later commands when the script was replayed,
causing traces for trivial GTK3 programs to be unplayable, usually
yielding the following error:
"invalid value (typically too big) for the size of the input (surface, pattern, etc.)"

Drop the duplicated entry from the trace line printed by the
cairo_surface_create_similar_image() override.

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=73580
Signed-off-by: Emanuele Aina <emanuele.aina@collabora.com>
2015-01-20 18:14:52 +01:00