Commit graph

6685 commits

Author SHA1 Message Date
Chris Wilson
dd65be740c [test/pdf-mime-data] Free data on error paths.
Cleanup the allocated buffers on error.
2009-01-02 15:44:51 +00:00
Chris Wilson
65f9760d66 [toy-font-face] Return defaults for error objects.
Similar to the behaviour of the other objects, we return the default
conditions if the object is in any error (and not just a nil object).
2009-01-02 15:44:50 +00:00
Behdad Esfahbod
d478d5ed5c [doc] Give a small hint about Twin font
Though, the details are not documented yet.  I'm not sure how much of it
I do want to document.
2009-01-02 06:51:15 -05:00
Chris Wilson
a023104400 [trace] Adopt _cairo_dtostr
In order to have locale-independent output of decimal values, we need to
manually transform such numbers into strings. As this is a solved problem
for cairo, we adopt _cairo_output_stream_printf() and in particular the
_cairo_dtostr() routine for our own printf processing.
2009-01-02 10:36:52 +00:00
Chris Wilson
c601f30843 [cairo] Early return if we attempt to set the same colour.
Profiling a silly video renderer that called set-source; rectangle; fill;
for each pixel, we can shave 5% off the cairo overhead by introducing an
early return if we attempt to reset the current colour.
2009-01-02 09:53:27 +00:00
Chris Wilson
fb3522f33a [os2] Fix memory leak of surface on error path
Of we fail to create the mutex, free the surface before returning the
failure.

Reported: http://bugs.freedesktop.org/show_bug.cgi?id=19208.
2009-01-02 09:53:27 +00:00
Chris Wilson
8d23c3a6c2 [quartz] Delay allocation of string until after guard.
Fixes a memory leak should we bail due to the version of Quartz being
insufficient.

Reported: http://bugs.freedesktop.org/show_bug.cgi?id=19209.
2009-01-02 09:53:27 +00:00
Chris Wilson
9c9ed8f0b5 [scaled-font] Post-process hash value.
Mix the bits within the hash value to reduce clustering.
2009-01-02 09:53:26 +00:00
Chris Wilson
555dd6b97e [scaled-font] Switch to a constant loop for hashing.
As we only use the FNV hash for hashing matrices, expose the constant size
to the compiler so that it can perform its magic.
2009-01-02 09:53:26 +00:00
Chris Wilson
f5274f5847 Iterate over hash table using foreach() in destructors.
Don't use the remarkably inefficient _cairo_hash_table_random_entry() to
remove all entries from the hash table!
2009-01-02 09:53:26 +00:00
Chris Wilson
1c4ea84b24 [cairo] Early return if we attempt to set the same scaled_font
If the application calls cairo_set_scaled_font() with the current
scaled font, we can return early as it is a no-op.
2009-01-02 09:53:26 +00:00
Chris Wilson
b661f3d27b [cairo] Embed a second gstate.
Experiment with embedding a second gstate into the initial context to
reduce allocations.
2009-01-02 09:53:25 +00:00
Chris Wilson
8abd21bd3a [script] Call the context creation hook
Hook in the creation hook so applications can record or even modify the
contexts used in replay.
2009-01-02 09:53:25 +00:00
Chris Wilson
2c9323d394 [script] more targets 2009-01-02 09:53:25 +00:00
Chris Wilson
fd96cea4fe [script] Improve array construction.
Limit the memory allocation to the initial array size and perform a direct
copy from the operand stack to the array.
2009-01-02 09:53:24 +00:00
Chris Wilson
ecb8dce27c [script] Recreate surface content.
Use the content recorded in the trace, defaulting to COLOR_ALPHA, to
determine the replayed surface type.
2009-01-02 09:53:24 +00:00
Chris Wilson
d21529b9ef [trace] Correct escaped characters in string literal.
Laziness caused the control character to be used instead of its
replacement in the escaped string!
2009-01-02 09:53:24 +00:00
Chris Wilson
ca39c4bf7f [trace] Correct a couple of typos.
A couple of minor typos in the escaped characters strings.
2009-01-02 09:53:24 +00:00
Chris Wilson
1f2fec7388 [trace] Fix OBO in emit_glyphs()
The largest index that will fit within 8 bits is 255 not 256!
2009-01-02 09:53:23 +00:00
Chris Wilson
7ebe9e6837 [trace] Minor tidy.
Improve scoping of variables.
2009-01-02 09:53:22 +00:00
Chris Wilson
931556005a [trace] Remove the forced switching to C locale
This interferes with the application being traced. It is not clear from
printf(3) whether "%.f" is locale dependent or not - but until we have a
failure do not break applications unnecessarily!
2009-01-02 09:53:22 +00:00
Chris Wilson
d0f41b92bf [trace] Do not force the output filename.
Handle the case of tracing an application that spawns it own graphical
children but using the autonaming facility within cairo-trace. Currently
the traced process tree would all attempt to write to the same file,
creating a broken trace. This means sacrificing the display of the output
name, but allows use for a wider range of applications.
2009-01-02 09:53:21 +00:00
Chris Wilson
19e8c5c7f4 [test] Fix mismatched free.
A couple of strings allocated using glib functions but freed with system
malloc.

Reported: http://bugs.freedesktop.org/show_bug.cgi?id=19210.
2009-01-02 09:53:21 +00:00
Chris Wilson
6662eede2a [perf] Fix errors reported by cppcheck
Trivial mistakes, identified in bugs
http://bugs.freedesktop.org/show_bug.cgi?id=19206 and
http://bugs.freedesktop.org/show_bug.cgi?id=19207.
2009-01-02 09:53:20 +00:00
Chris Wilson
8419c4f124 [perf] Correct another reference to '<cairo>'
I think that's the last use of the old internal name for twin!
2009-01-02 09:53:20 +00:00
Behdad Esfahbod
14d94d9354 Fix various README typos 2009-01-02 02:56:38 -05:00
Behdad Esfahbod
28a72648ba [gstate] Change the glyph dropping safety margin from 2em to 10em
The small margin caused bugs with math fonts.  See:
https://bugzilla.mozilla.org/show_bug.cgi?id=460023
2008-12-30 13:48:47 -05:00
Chris Wilson
fa63c43532 [spline] Be pedantic and propagate errors.
We know that the current users will always return SUCCESS, but propagate
the status return for future users.
2008-12-29 16:11:29 +00:00
Chris Wilson
7df082dd8a [test] Update twin reference images
Subsequent to recent tweaks, update the reference images for twin.
2008-12-29 16:08:12 +00:00
Chris Wilson
e10af38799 make "make check" happy again
Add the missing scoping that caused check-plt to complain.
2008-12-29 12:55:10 +00:00
Chris Wilson
0100856226 [path] Remove tolerance from path bounders
With Behdad's analytical analysis of the spline bbox, tolerance is now
redundant for the path extents and the approximate bounds, so remove it
from the functions parameters.
2008-12-29 12:55:09 +00:00
Chris Wilson
84b81388be [test] Draw spline bbox
Add the stroked extents to the spline-decomposition test.
2008-12-29 12:55:05 +00:00
Behdad Esfahbod
efb1716090 [_cairo_spline_bound] Protect against b == 0 2008-12-28 16:06:27 -05:00
Behdad Esfahbod
0b59e29004 [_cairo_spline_bound] Simplify condition 2008-12-28 02:49:39 -05:00
Behdad Esfahbod
3bf1b7d574 [_cairo_spline_bound] Fix the check for feasible solutions
Also make it more strict.  The only times we call sqrt now is
when a solution in (0,1) exists.
2008-12-28 02:41:39 -05:00
Behdad Esfahbod
7f840d156c [spline] Save a couple more muls 2008-12-28 02:02:30 -05:00
Behdad Esfahbod
3292f9906b [spline] Do some checks to avoid calling sqrt() if no feasible solution exists 2008-12-28 01:59:12 -05:00
Behdad Esfahbod
efe4d2ce99 [spline] Simplify code 2008-12-28 01:22:40 -05:00
Behdad Esfahbod
8672178bf6 [spline] Remove duplicated code by using a macro 2008-12-28 01:20:37 -05:00
Behdad Esfahbod
ef0f6c3ca3 [spline] Add an analytical bounder for splines
The way this works is very simple:  Once for X, and once for Y, it
takes the derivative of the bezier equation, equals it to zero and
solves to find the extreme points, and if the extreme points are
interesting, adds them to the bounder.

Not the fastest algorithm out there, but my estimate is that if
_de_casteljau() ends up breaking a stroke in at least 10 pieces,
then the new bounder is faster.  Would be good to see some real
perf data.
2008-12-27 23:44:58 -05:00
Behdad Esfahbod
f2f62c7c44 [twin] Micro-optimize 2008-12-27 16:25:51 -05:00
Chris Wilson
50bc2bc017 [path] Simply track the current point for bounds.
The idea is to track always update the current point, but not add it
during a move-to.
2008-12-27 11:46:24 +00:00
Chris Wilson
078ebb01ba [path] Initialise spline from current point
Joonas spotted that the breakage with the curve bounds was the result of
initialising the spline using the original move to point and not the
current point.

Fixes: Bug 19256 Gnome Foot in gnome-games rendered incorrectly
(https://bugs.freedesktop.org/show_bug.cgi?id=19256)
2008-12-27 11:34:31 +00:00
Chris Wilson
4320ea6887 [trace] Fix up positional arguments
James Cloos pointed out that the correct form to use is "$@" when
executing the command line.
2008-12-27 11:34:31 +00:00
Chris Wilson
e76a676c8f [twin] Trivial spelling correction.
This ain't no decadent descendent of the Hershey font...
2008-12-27 11:34:31 +00:00
Behdad Esfahbod
9332c0a8ea [util] Add waterfall 2008-12-26 16:38:26 -05:00
Behdad Esfahbod
ab1febbf22 [twin] Resnap margin under monospace 2008-12-26 16:37:06 -05:00
Behdad Esfahbod
3c91d9f5a2 [twin] Adjust margins 2008-12-26 16:30:01 -05:00
Behdad Esfahbod
0b5c60bae1 [twin] Clean up hinting 2008-12-26 15:49:28 -05:00
Behdad Esfahbod
6e7a2c4ce3 [twin] Fix monospace for narrow glyphs 2008-12-26 15:41:13 -05:00