Commit graph

5486 commits

Author SHA1 Message Date
Behdad Esfahbod
9076206080 Fix two more compile errors
When adding remaining_glyphs argument to show_glyphs(), I missed
a few places.
2008-05-28 16:08:37 -04:00
Behdad Esfahbod
295dee36e3 [cairo-xlib] Use newly-added COMPILE_TIME_ASSERT 2008-05-28 13:10:07 -04:00
Behdad Esfahbod
2e4d6acd09 [cairoint.h] Add COMPILE_TIME_ASSERT() 2008-05-28 13:09:52 -04:00
Behdad Esfahbod
043ed895ad [cairo-xlib] Fix compiler warning 2008-05-28 13:09:43 -04:00
Behdad Esfahbod
26aec31f24 [src/check-def.sh] Don't report anything if skipping test 2008-05-28 12:07:13 -04:00
Behdad Esfahbod
f074073355 [configure.in] Dont let a missing FcFini disable the freetype font backend! 2008-05-28 12:02:16 -04:00
Behdad Esfahbod
d7ddde8a32 [cairo-user-font] Make backend struct static 2008-05-28 12:02:16 -04:00
Behdad Esfahbod
3306aa5e8d [src/check-def.sh] Also check for public variables (#16129) 2008-05-28 12:02:16 -04:00
Behdad Esfahbod
f3a3a0594d [cairo-xlib] Add recently-added byteswap macros (#16128) 2008-05-28 12:02:16 -04:00
Behdad Esfahbod
0bf941c9b2 Add support for byteswap macros bswap_16 and bswap_32 2008-05-28 12:02:16 -04:00
Behdad Esfahbod
5c732badbc [src/check-def.sh] Improve test comment 2008-05-28 12:02:16 -04:00
Behdad Esfahbod
e8dd97fde8 [cairo-scaled-font] Fix assertion failure
Revert 127c4b8e64
We assume that all scaled fonts with ref count 0 are in holdover cache.
That commit was breaking this assumption.
2008-05-28 12:02:16 -04:00
Behdad Esfahbod
8c4f4a758b [cairo-gstate] Use clip, not surface, extents to drop invisible glyphs 2008-05-27 20:27:18 -04:00
Behdad Esfahbod
c752bd665a [cairo-gstate] Add _cairo_gstate_int_clip_extents() 2008-05-27 20:27:07 -04:00
Behdad Esfahbod
0f07c45fa3 [test/user-font] Use user_data to access glyphs array
This way the same callback code can be used to render multiple different
glyph arrays.  Change done for education purposes, otherwise doesn't
make any difference in the test.
2008-05-27 17:53:35 -04:00
Behdad Esfahbod
626edfc333 [cairo-mutex] Prepare mutex infrastructure for adding mutex debugging facilities
Essentially renaming cairo-mutex-type-private.h to cairo-mutex-impl-private.h
and changing all its namespace from cairo_mutex to cairo_mutex_impl.
cairo-mutex-type-private.h then does all the sanity checks on the
implementation that used to be in cairo-mutex-private.h.  Plus, defines macros
for the cairo-mutex namespace to map to the cairo-mutex-impl namespace.  This
extra mapping layer allows for add debugging facilities.
2008-05-27 05:11:00 -04:00
Ginn Chen
07fef4f480 [cairo-xlib] Implement _cairo_xlib_surface_solid_fill_rectangles() (#11529) 2008-05-27 05:07:44 -04:00
Behdad Esfahbod
f90b155b5a [cairo-xlib] Delay using fallback if xrender is not available
So we can use XCopyArea when Render is not available.  Based on patch by
Ginn Chen.
2008-05-27 05:07:44 -04:00
Behdad Esfahbod
30a16df29b [util/backtrace-symbols] Implement backtrace_symbols_fd() 2008-05-27 04:45:37 -04:00
Adrian Johnson
ce56e0cd0c Add missing argument to _cairo_pdf_surface_show_glyphs()
cf473f4a75 missed the PDF surface when
it added an argument to the show_glyphs() surface backend function.
2008-05-27 12:44:50 +09:30
Behdad Esfahbod
8d86e725ce [cairo-gstate] Add code for switching to path;fill for huge show_glyph()s
For really huge font sizes, we can just do path;fill instead of
show_glyphs, as show_glyphs would put excess pressure on the cache,
and moreover, not all components below us correctly handle huge font
sizes.  I wanted to set the limit at 256.  But alas, seems like cairo's
rasterizer is something like ten times slower than freetype's for huge
sizes.  So, no win just yet.  For now, do it for insanely-huge sizes,
just to make sure we don't make anyone unhappy.  When we get a really
fast rasterizer in cairo, we may want to readjust this.
2008-05-25 02:30:14 -04:00
Behdad Esfahbod
f5fbb8b24e Fix typo. 2008-05-25 01:53:44 -04:00
Behdad Esfahbod
238a3117f1 [cairo-scaled-font] Clean up recent locking changes
Based on feedback from Keith.
2008-05-25 01:51:05 -04:00
Behdad Esfahbod
0621f412ff [cairo-matrix] Move IS_FINITE(det) checks before det==0 checks
I'm still getting floating point exceptions in test suite in a
made-to-overflow test though.  Not sure why isfinite() doesn't work.
2008-05-25 00:55:36 -04:00
Behdad Esfahbod
9827dae570 [user-font] Fix fontmap locking
After consulting with Keith Packard we came up with a farily simple
solution.  Documented in the code.
2008-05-25 00:42:28 -04:00
Behdad Esfahbod
96f7178226 [user-font] Lock the font mutex such that user doesn't accidentally use it yet 2008-05-24 23:28:15 -04:00
Behdad Esfahbod
8dc1e6d945 One more typo fix 2008-05-24 22:13:01 -04:00
Behdad Esfahbod
8ff0fa112d Fix typos 2008-05-24 22:11:41 -04:00
Behdad Esfahbod
a3d9918428 [user-font] Note possible locking issue 2008-05-24 20:51:43 -04:00
Behdad Esfahbod
4c1c9d33b1 [user-font] Release fontmap lock around user callback
This makes the user-font-proxy to work now.
2008-05-24 20:48:38 -04:00
Behdad Esfahbod
127c4b8e64 [src/cairo-scaled-font] Only take fontmap mutex if touching it 2008-05-24 20:48:07 -04:00
Behdad Esfahbod
a715671c6f [test/user-font-proxy] New test using fonts inside a user-font
PDF fails and needs some fixes in the PDF surface instead of a new
ref image IMO.
2008-05-24 20:34:41 -04:00
Behdad Esfahbod
c914377f35 Add public API cairo_scaled_font_get_scale_matrix() 2008-05-24 20:33:15 -04:00
Behdad Esfahbod
90d62a0d33 [src] Make make check pass 2008-05-24 20:31:24 -04:00
Jeff Muizelaar
9cc147a142 Avoid deadlock when clearing caches
cairo_surface_destroy and _cairo_scaled_font_fini will call destroy closures
which may call functions that attempt to acquire the mutex resulting in a
deadlock. We fix this by releasing the lock for the call to
cairo_surface_destroy or _cairo_scaled_font_fini.
2008-05-24 20:18:43 -04:00
Behdad Esfahbod
4957a78947 [test/surface-finish-twice.c] Adapt to recent change that multiple finish is ok 2008-05-24 15:16:44 -04:00
Behdad Esfahbod
a30209402c [cairo-gstate] Drop glyphs out of surface boundaries in show_glyphs() 2008-05-24 14:57:56 -04:00
Behdad Esfahbod
1b5e2144fb [cairo-scaled-font] Implement _cairo_scaled_font_get_max_scale() 2008-05-24 14:57:31 -04:00
Behdad Esfahbod
479936ecea [cairoint] Sort prototypes 2008-05-24 14:57:06 -04:00
Behdad Esfahbod
e638e7652f [cairo-xlib] Fix bug introduced in yesterday's code shuffling. Oops. 2008-05-24 14:25:13 -04:00
Behdad Esfahbod
31c68e708f [cairo-surface] Minor code reshuffling 2008-05-24 13:17:31 -04:00
Behdad Esfahbod
c20072c881 [cairo-xlib] Upon seeing glyphs with large position, just let fallback handle
This now fixes the large-font test for xlib again.
2008-05-23 20:57:21 -04:00
Behdad Esfahbod
e55252bd3b [cairo-xlib] Shift range of allowed glyph positions
From -1024..15359, to -4096..122887.  This still does not fix the
large-font test as that uses a 10000 font.  Working on a proper fix
for glyph dropping now.
2008-05-23 20:46:36 -04:00
Behdad Esfahbod
74818d2b00 [cairo-xlib] Some code reshuffling, in preparation for a fix 2008-05-23 20:43:08 -04:00
Behdad Esfahbod
d947ee0ef6 [test/large-font] Make the font REALLY LARGE
10000 that is.  xlib fails now again.  Not because of glyph size issues.
Because we skip rendering any glyphs with positions not in range -1024..15359.
Working on a fix.
2008-05-23 20:41:26 -04:00
Behdad Esfahbod
db1b18232b [cairo-xlib] Fix max-request size calculations
First, XMaxRequestSize returns number of 4-byte words.  So multiply by 4 is
needed in all uses.  Next, XRenderAddGlyphs uses BIG-REQUEST extension if
available, so when checking for glyph size overflow, we should use
XExtendedMaxRequestSize() first.

Also use the right format when calculating glyph size.

These changes combined, push the biggest font size that can be uploaded to the
server from under 200 to about 5000.

See bug #4339 for history.
2008-05-23 20:03:49 -04:00
Behdad Esfahbod
cf473f4a75 [cairo-xlib] Fix show_glyphs when failing to upload a glyph
Originally reported here:
http://lists.cairographics.org/archives/cairo/2008-May/014032.html
and analyized later in the thread.

Change (font and surface) backend show_glyphs() API to take a
int *remaining_glyphs argument.  It's used to communicate to the caller,
by way of setting remaining_glyphs and returning INT_STATUS_UNSUPPORTED,
that some of the glyphs were shown but not the others.  The xlib backend
now correctly uses this to handle failure to upload a glyph to the server.
So the large-font test passes now.

An alternative approach could be to add some public value for glyphs
indices that are not shown.  -1 perhaps (the xlib backend already uses
that value internally).  Then instead of remaining_glyphs, a backend
could simply set glyph indices of glyphs shown to that -1 value.
2008-05-23 20:03:49 -04:00
Behdad Esfahbod
e66e198ab0 [cairo-xlib] Remove unused variable 2008-05-23 17:11:43 -04:00
Carl Worth
1ccfc4afd5 Revert "BUGGY: Add surface_backend->acquire_source_image_transformed"
This reverts commit ddcd6781a2.

This was an experimental commit that was intended to be on a side
branch but accidentally got committed and pushed to master. Sorry
for the noise.
2008-05-23 08:14:00 -07:00
Carl Worth
b957beb0df Add large-font test to exercise a cairo-xlib bug.
The original bug report is here:

	corrupt glyph positions with large font
	https://bugzilla.redhat.com/show_bug.cgi?id=448104
2008-05-23 08:05:18 -07:00