Commit graph

6401 commits

Author SHA1 Message Date
Chris Wilson
91c17d3332 [trace] Simple unbounded cache for symbol lookups.
Reparsing the dwarf info for every lookup is very slow, so cache the
symbol lookups. This initial implementation is unbounded in the simple
belief that the actual number of unique lookups during a program's
lifetime should be fairly small. (Extending to a bounded MRU list is left
as an exercise for the reader.)
2008-11-19 11:59:20 +00:00
Chris Wilson
2839a0e800 [script] Add a simple replay.
A very simple replay program for trace replay.
2008-11-19 11:59:20 +00:00
M Joonas Pihlaja
b091c5bfca BIBLIOGRAPHY: Cite Hars & Petruska's Pseudorandom Recursions paper. 2008-11-18 00:20:38 +02:00
Chris Wilson
3a82f94398 [test] Add util/cairo-script to include path.
any2ppm needs the include path for cairo-script-interpreter so that it can
be built without an existing install.
2008-11-16 18:21:52 +00:00
Chris Wilson
997fa6a772 [configure] Remove old line for CairoScript testing.
CairoScript testing should now be unconditional so remove the surplus
message.
2008-11-16 17:43:40 +00:00
Chris Wilson
a2eff7c7de [test] Add build rule for libcairo-script-interpreter.la
Add a rule to build the cairo-script-interpreter on behalf of any2ppm.
2008-11-16 16:21:37 +00:00
Chris Wilson
bf309aab60 [configure] Delete CAN_TEST_SCRIPT
A CairoScript interpreter is built under utils and so is always available.
2008-11-16 16:21:37 +00:00
Chris Wilson
d7873eecc5 [spline] Eliminate intermediate allocations during spline decomposition.
The spline decomposition code allocates and stores points in a temporary
buffer which is immediately consumed by the caller. If the caller supplies
a callback that handles each point computed along the spline, then we can
use the point immediately and avoid the allocation.
2008-11-16 16:21:25 +00:00
Chris Wilson
3bf8379408 [type1] Propagate fatal NO_MEMORY erro from FreeType.
If FreeType fails to load the glyph, check for a fatal error before
falling back (and effectively masking the fatal condition).
2008-11-16 16:21:24 +00:00
Chris Wilson
db9ed77d8a [cairo] FLush surface on cairo_destroy()
When discussing the implications of snapshot cow, one of the questions
that we raised was what happens on cairo_destroy()? The lifetime of the
context implicitly marks the extents of the drawing operations, typically
the expose event (or perhaps one phase of it). Therefore at the end of the
sequence we implicitly wish to flush the graphics events to the surface.
2008-11-16 16:21:24 +00:00
Chris Wilson
032be9849d [skiplist] Inline testing.
Add a loop to create a skip list to allow manual checking.
2008-11-16 16:21:23 +00:00
M Joonas Pihlaja
e44c1f26e4 Use a smaller and faster random number generator.
The previous LFSR generator used a large table to be speedy.  The
replacement generator is the single stage generator (1) from section
5.4 of [HP2007], requires no tables or extra state.  I've run the
generator through Rob Brown's extended Dieharder test suite and it
passes all but one self-proclaimed buggy test (-d2) and the 2D sphere
minimum distance test (-d12).

[HP2007] Hars L. and Petruska G., ``Pseudorandom Recursions: Small and Fast Pseurodandom Number Generators for Embedded Applications'',
Hindawi Publishing Corporation
EURASIP Journal on Embedded Systems
Volume 2007, Article ID 98417, 13 pages
doi:10.1155/2007/98417
http://www.hindawi.com/getarticle.aspx?doi=10.1155/2007/98417&e=cta
2008-11-16 16:21:23 +00:00
Chris Wilson
a4c5371b5e [os2] Move include cairo.h before os2.h
The defines need to come first, but we specify that cairo.h is the first
header file to be included by files.
2008-11-16 16:21:23 +00:00
Carl Worth
456252a1c2 Merge branch '1.8'
Conflicts:

	NEWS
	cairo-version.h
2008-11-14 15:27:34 +01:00
Carl Worth
ab61544b30 Increment version to 1.8.5 after the 1.8.4 release. 2008-11-14 13:17:01 +01:00
Carl Worth
66e8f142e3 Increment version to 1.8.4 2008-11-14 11:08:40 +01:00
Carl Worth
b9c1344ad8 NEWS: Add notes for cairo 1.8.4
Just a few bug fixes here.
2008-11-14 11:07:10 +01:00
M Joonas Pihlaja
3b11997a23 [cairo-script] Remove outdated #error to allow compilation to succeed.
The interpreter doesn't depend on the script surface anymore.
2008-11-13 18:06:40 +02:00
Carl Worth
d654d528de Blacklist "X.Org" < 7.0 with the buggy_repeat workaround.
This is in response to a report that a 6.9 server crashes with
cairo's extend-reflect test:

https://bugs.freedesktop.org/show_bug.cgi?id=15628#c2
2008-11-13 16:54:00 +01:00
Carl Worth
35a1ba0ddc Document the buggy_repeat workaround more carefully.
It's a confusing condition, so let's be explicit about where
the various numbers come from.
2008-11-13 16:54:00 +01:00
Chris Wilson
cdfffc7420 Add CairoScript interpreter
Add a CairoScript interpreter library and use it to replay the test output
for the CairoScript backend. The library is also used by the currently
standalone Sphinx debugger [git://anongit.freedesktop.org/~ickle/sphinx].
The syntax/operator semantics are not yet finalized, but are expected to
mature before the next stable release.
2008-11-13 11:36:55 +00:00
Chris Wilson
a856371bef Add CairoScript backend.
A new meta-surface backend for serialising drawing operations to a
CairoScript file. The principal use (as currently envisaged) is to provide
a round-trip testing mechanism for CairoScript - i.e. we can generate
script files for every test in the suite and check that we can replay them
with perfect fidelity. (Obviously this does not provide complete coverage
of CairoScript's syntax, but should give reasonable coverage over the
operators.)
2008-11-13 11:36:54 +00:00
Chris Wilson
47a56e0850 [type1] Bind the RD procedure
As the RD procedure may be called several hundred times for a full font,
it is worth binding.
2008-11-13 11:36:50 +00:00
Chris Wilson
0769d39d00 Add predicate likelihood macros.
Define the couple of standard macros that we can use to guide gcc
optimisations of which code path will be most likely taken.
2008-11-13 11:36:44 +00:00
Chris Wilson
b06c50cc54 [cairoint.h] Remove unused PLT entries.
Trim the slim_hidden_proto/def to match the currently used functions.
2008-11-13 11:36:43 +00:00
Chris Wilson
20fc2a2f92 [in-fill] Fixup boundary insideness testing
Benjamin Otte noticed that the top-left vertex was now included within the
fill extents. Having updated the test case to check the insideness
conditions as defined by flash, fix the edge handling to match.
2008-11-13 11:36:43 +00:00
Chris Wilson
9afad53730 [test] Expand in-fill-trapezoid
Test vertices and edges of a rectangle to probe 'corner-cases', using the
insideness conditions from flash.
2008-11-13 11:36:42 +00:00
Chris Wilson
cebc84f367 [hash] Separate out unique patterns of iterating over the table.
Avoid unnecessary conditionals for the hotpaths by separating out the
iteration over the elements into their distinct modes.
2008-11-13 11:36:42 +00:00
Chris Wilson
5f0aa27445 [trace] Add caller line info.
Use lookup_symbol() on the return address to identify the caller and emit
useful debug info to the trace.
2008-11-13 11:36:42 +00:00
Chris Wilson
4cd6b0c0b9 [trace] Check for an undefined pattern and use index instead. 2008-11-13 11:36:41 +00:00
Chris Wilson
76f249a493 [trace] Detect and report broken traces.
We cannot trace the cairo-script-interpreter as that uses Cairo's private
symbols.
2008-11-13 11:36:40 +00:00
Chris Wilson
01e2021b2b [trace] Trace mark-dirty
Capture the image data on mark dirty and record in the trace.
2008-11-13 11:36:39 +00:00
Chris Wilson
8f3d0b55f5 [trace] Add unstable warning.
Add warning that CairoScript is unfinished and I may radically alter the
format/syntax/language before release.
2008-11-13 11:36:32 +00:00
Chris Wilson
7ad2635ebe [trace] Disable stdout by default.
Don't hog the terminal when we save to a trace file anyway.
2008-11-13 11:36:32 +00:00
M Joonas Pihlaja
efa9e1088c [clip] Fix uninitialised status return in _cairo_clip_intersect_mask() for empty extents.
This fixes the clip-all test case crashing for me.
2008-11-13 13:10:18 +02:00
Behdad Esfahbod
279a7cef34 [os2] Fix includes
Patch from Dave Yeo to make cairo-os2.h include os2.h directly so the
header is standalone.
2008-11-13 10:50:41 +01:00
Jeff Muizelaar
0a682034a0 Make the clipping implementation comment clearer
When reviewing the spans changes, I reread this comment and it wasn't as clear
as it could be.
2008-11-11 13:26:09 -05:00
Peter Weilbacher
4fdd856569 README: adapt pixman version requirement to match configure.ac 2008-11-11 15:37:09 +01:00
Jeff Muizelaar
9c0042840c [quartz] Add the proper propagation of extents
This fixes the problems introduced by d682d275b9
2008-11-11 08:41:31 -05:00
Jeff Muizelaar
57551a9116 [quartz] Fix fallout caused by const cairo_pattern_t *
7944601864 broke the quartz backend.
Fix it by adding const to the appropriate parameters in the function
declarations and copying the pattern when needed.
2008-11-11 08:31:23 -05:00
Maarten Maathuis
164069b339 cairo-xcb: avoid leaking memory 2008-11-08 14:41:21 +00:00
Chris Wilson
5badcf6e37 [trace] Use a string literal for the type.
In order that the string is interned and so is only allocated the once.
2008-11-08 11:18:26 +00:00
Chris Wilson
1d0faefbc8 [trace] Record the XID as a number
Don't waste string constants (which get interned) for a simple number!
2008-11-08 11:18:26 +00:00
Chris Wilson
899a159b13 [trace] Remove stray /source
An accidental /source was pushing pushed onto the operand stack and never
used.
2008-11-08 11:18:25 +00:00
Chris Wilson
f1cae5c52a [ps] Trivial compile warning clenaup.
Add a missing const to silence the compiler.
2008-11-07 20:52:08 +00:00
Chris Wilson
2b32c8b9e5 [hash] Return lookup entry.
Use the return value to return the result from _cairo_hash_table_lookup()
(as opposed to filling an output parameter on the stack) as this (a)
results in cleaner code (no strict-alias breaking pointer casts), (b)
produces a smaller binary and (c) is measurably faster.
2008-11-07 20:50:34 +00:00
Karl Tomlinson
d15fb9344b [hash] Set is_unique when finding an available for inserts
As we obey the rule in Cairo that we only insert if we know that there is
no existing entry in the hash table, we can therefore perform a much quicker
search knowing that the key is unique.
2008-11-07 20:49:14 +00:00
Chris Wilson
cd2e18ddc6 [test] Fix-up rgb byte packing
Another embarrassing, but thankfully, trivial bug.
2008-11-07 19:35:26 +00:00
Chris Wilson
2554d17598 [surface] Pass a separate closure for the mime-type destroy notifier.
A limitation of the current API was that the destroy notifier was called
on the mime-data block. This prevents the user from passing in a pointer
to a managed block, for example a mime-data block belonging to a
ref-counted object. We can overcome this by allowing the user to specify
the closure to be used with the destroy notifier.
2008-11-07 19:30:33 +00:00
Chris Wilson
ff0bd64e94 [NEWS] Add a few notes.
Help Carl with a speedy snapshot by writing a few notes about what has been
added so far to 1.9.
2008-11-06 01:22:39 +00:00