Commit graph

4601 commits

Author SHA1 Message Date
Chris Wilson
e9bc2180d7 [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!
2009-09-30 20:11:07 +01:00
Chris Wilson
395555b116 [xlib] Suppress warning that should never have been. 2009-09-30 17:50:35 +01:00
Adrian Johnson
42ea356c03 Fix truetype subset crash
Bug 24213
2009-09-30 21:24:41 +09:30
Benjamin Otte
6809e12161 [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.
2009-09-30 08:58:19 +02:00
Chris Wilson
f8c49b4187 [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.
2009-09-29 03:03:51 +01:00
Chris Wilson
1c4f61ec50 [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.
2009-09-29 03:03:51 +01:00
Benjamin Otte
50163a9faf [xlib] Set proper bpp when computing format from masks
Fixing omission in caa9eed464
2009-09-29 00:24:37 +02:00
Benjamin Otte
a160c8c400 [xlib] Handle 24bpp formats during dithering 2009-09-29 00:11:52 +02:00
Benjamin Otte
9e89de8135 [image] Fix masks computation for BGRx format
Patch originally by Mark Kettenis
2009-09-29 00:11:48 +02:00
Adrian Johnson
4b2c74e285 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
2009-09-28 22:57:10 +09:30
Adrian Johnson
db5e3db0a9 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.
2009-09-25 23:24:36 +09:30
Benjamin Otte
caa9eed464 [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.
2009-09-25 00:16:39 +02:00
Benjamin Otte
9f5fe67115 [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.
2009-09-25 00:14:15 +02:00
Chris Wilson
c8a4f48671 [image] Do not trust user supplied data to be clear
Gah, more important than the whitespace was the reversal of is_clear...
2009-09-23 18:08:34 +01:00
Chris Wilson
03bce099ea [image] Tweak coding style
Whitespace spam.
2009-09-23 17:56:00 +01:00
Benjamin Otte
ab558fa843 [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.
2009-09-23 17:40:45 +02:00
Chris Wilson
07ee9cfbf0 [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.
2009-09-23 15:37:35 +01:00
Chris Wilson
30f45ce5f7 [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.
2009-09-22 15:46:56 +01:00
Adrian Johnson
e74cb7fa3e win32-printing: correct the use of the CAIRO_HAS_WIN32_FONT #ifdef
it was wrapping code required for non windows fonts.
2009-09-22 22:44:34 +09:30
Adrian Johnson
3dd2cc8f6d win32-printing: fix meta surface pattern regression caused by bed2701e 2009-09-22 22:40:53 +09:30
Adrian Johnson
7658635c65 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
2009-09-22 22:36:20 +09:30
Adrian Johnson
19c0916703 Make win32 fonts work in EMF files created by win32-printing 2009-09-22 22:35:33 +09:30
Adrian Johnson
f01a54266d Fix compiler warnings in win32-surface 2009-09-22 22:34:56 +09:30
Adrian Johnson
23663e2078 Fix compiler error on cygwin 2009-09-22 22:34:21 +09:30
Adrian Johnson
7ecd413fab Add WINVER defines to cairo-mutex-impl-privaye.h
The WINVER defines should always be defined before including windows.h
2009-09-22 22:33:14 +09:30
Adrian Johnson
605ec22ab5 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.
2009-09-22 22:17:27 +09:30
Chris Wilson
e00d062749 [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.
2009-09-21 13:50:00 +01:00
Chris Wilson
378b1e73d9 [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.
2009-09-21 04:26:01 +01:00
Chris Wilson
35daf95db8 [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).
2009-09-21 04:26:01 +01:00
Chris Wilson
9b7c5d9505 [xlib] Cleanse creation of similar surfaces.
Reduce two nearly identical routines to one.
2009-09-20 20:10:34 +01:00
Chris Wilson
878cef62b5 [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.
2009-09-20 19:59:21 +01:00
Jeff Muizelaar
531e804598 Add a description of how we compute the spline_error_squared. 2009-09-18 12:17:46 -04:00
Behdad Esfahbod
f433635240 Set LC_ALL=C instead of LANG=C 2009-09-16 15:50:34 -04:00
Sebastian Dröge
56c9b2de7a 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>
2009-09-15 18:19:08 +01:00
M Joonas Pihlaja
4152cd90e2 [autoconf] Comment on the SIZEOF_VOID__ -> SIZEOF_VOID_P workaround.
Explain where the weird SIZEOF_VOID__ comes from.
2009-09-14 14:29:01 +03:00
M Joonas Pihlaja
1c7ac6c47a [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.
2009-09-14 13:32:18 +03:00
Chris Wilson
9c2790ccc4 [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.
2009-09-14 10:10:45 +01:00
Chris Wilson
6d4f3c40ef 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.
2009-09-14 09:26:02 +01:00
Chris Wilson
19881012cb [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.
2009-09-13 16:36:12 +01:00
Chris Wilson
6cb3ff9c19 [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!
2009-09-13 10:52:14 +01:00
Chris Wilson
33be73dfb7 [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)
2009-09-11 14:59:58 +01:00
Chris Wilson
6960162c5e [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).
2009-09-11 14:56:17 +01:00
Chris Wilson
b495e7eb2e [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).
2009-09-10 19:25:14 +01:00
Chris Wilson
94aeae9b2e [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.
2009-09-10 19:11:36 +01:00
Chris Wilson
496e79b637 [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.
2009-09-10 17:36:46 +01:00
Chris Wilson
7fb0d5e209 [twin] Initialise all properties
Left a couple of uninitialised properties along the non-toy font
construction path.
2009-09-09 01:45:16 +01:00
Chris Wilson
4b221bd49a [spans] Correct offsets for trapezoids
Pass on the destination offset from composite_trapezoids() to
composite_polygon().
2009-09-08 19:02:04 +01:00
Chris Wilson
9389cb78a8 [build] Improve handling of missing test apparatus
Improve detection, reporting and disabling of test backends when we lack
the required libraries and utilities.
2009-09-08 17:51:33 +01:00
Chris Wilson
45759e5a0f [gl] Supply extents for acquire source image
I have no idea how we survived for so long without supplying the source
extents...
2009-09-08 09:19:53 +01:00
Chris Wilson
67d40e5c73 [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.
2009-09-06 10:21:00 +01:00