cairo/src
Behdad Esfahbod 4c432b0955 [cairo-scaled-font] Fix bug in glyphs bounding box computation
In 02970ac8cf Vlad introduced the following
innocent-looking change:

-    short min_x = INT16_MAX, max_x = INT16_MIN;
-    short min_y = INT16_MAX, max_y = INT16_MIN;
+    cairo_point_int_t min = { CAIRO_RECT_INT_MIN, CAIRO_RECT_INT_MIN };
+    cairo_point_int_t max = { CAIRO_RECT_INT_MAX, CAIRO_RECT_INT_MAX };

Well, read it carefully... yeah.  That caused each show glyph operation
upload a mask the size of the surface.  With evince/poppler and certain
PDF files that each glyph is rendered in its own cairo_show_glyphs()
call, that meant a 20x slowdown in rendering a page of PDF.

If still wondering what's wrong with that change, here is the answer:

-    cairo_point_int_t min = { CAIRO_RECT_INT_MIN, CAIRO_RECT_INT_MIN };
-    cairo_point_int_t max = { CAIRO_RECT_INT_MAX, CAIRO_RECT_INT_MAX };
+    cairo_point_int_t min = { CAIRO_RECT_INT_MAX, CAIRO_RECT_INT_MAX };
+    cairo_point_int_t max = { CAIRO_RECT_INT_MIN, CAIRO_RECT_INT_MIN };

Yay for git-bisect.
2008-01-25 04:16:44 -05:00
..
.gitignore Update .gitignore 2007-04-16 15:08:54 +01:00
cairo-analysis-surface-private.h Add Encapsulated PostScript support 2007-09-23 17:43:44 +09:30
cairo-analysis-surface.c Fix usage of cairo_rectangle_int16_t leading to memory corruption 2008-01-22 15:32:11 -08:00
cairo-arc-private.h Add cairo_private to several function prototypes that were missing it. 2005-08-09 13:01:14 +00:00
cairo-arc.c Rename ARRAY_LEN to ARRAY_LENGTH 2007-04-10 10:14:49 -07:00
cairo-array.c [cairo-surface] Introduce _cairo_surface_create_in_error(). 2008-01-16 16:51:32 +00:00
cairo-atomic-private.h [cairo-atomic] Check whether we can access int/pointers atomically. 2007-11-05 08:51:06 +00:00
cairo-atomic.c [cairo-atomic] Rearrange code under the correct ifdefs. 2007-11-01 22:26:06 +00:00
cairo-atsui-font.c [quartz] Store the CGFontRef and reuse it for rendering 2008-01-15 14:27:14 -08:00
cairo-atsui.h Bring the ATSUI backend up to date wrt the new font backend changes. Also, add cairo_atsui_font_face_create_for_atsu_font_id which takes an ATSUFontID and returns a cairo_font_face_t. 2005-09-30 08:31:36 +00:00
cairo-backend.pc.in Fix Name tag in backend .pc files to include "cairo-". 2006-07-13 14:33:41 -04:00
cairo-base85-stream.c [cairo-output-stream] Introduce _cairo_output_stream_create_in_error() 2008-01-16 16:40:01 +00:00
cairo-bentley-ottmann.c Replace various uses of CAIRO_STACK_BUF_SIZE with a single macro. 2007-12-17 13:45:01 +00:00
cairo-beos-surface.cpp [fix] Avoid int overflow when allocating large buffers 2007-06-29 09:46:08 -07:00
cairo-beos.h Remove initial, final, and duplicate blank lines. 2006-06-06 15:50:33 -07:00
cairo-cache-private.h Move GCC attributes wrapping into a separate header. 2007-09-25 16:29:54 +01:00
cairo-cache.c [cairo-error] Clean up all the warnings and missing _cairo_error() calls. 2007-10-04 13:31:44 +01:00
cairo-cff-subset.c [cairo-cff-subset] Propagate error status from failed append_copy(). 2007-10-10 14:22:13 +01:00
cairo-clip-private.h [cairo-clip] Avoid work when all clipped out. 2007-10-19 23:33:04 +01:00
cairo-clip.c [cairo-region] Review status propagation. 2008-01-17 11:50:51 +00:00
cairo-color.c [cairo-color] Only compare the shorts for equality. 2007-05-05 12:33:29 +01:00
cairo-compiler-private.h [cairoint.h] Move MSC inline macros into cairo-compiler-private.h 2008-01-20 02:56:26 -05:00
cairo-debug.c [cairo-debug] Finalize mutexes along with other static data. 2007-10-04 17:00:26 +01:00
cairo-deflate-stream.c [cairo-output-stream] Introduce _cairo_output_stream_create_in_error() 2008-01-16 16:40:01 +00:00
cairo-deprecated.h Move the REPLACED/DEPRECATED_BY macros from cairo.h to cairo-deprecated.h 2006-09-11 11:12:47 -07:00
cairo-directfb-surface.c [cairo-directfb] Optimize blend functions in fill_rectangles(), too. 2008-01-02 15:09:58 +01:00
cairo-directfb.h [cairo-directfb] Support some environment variables 2007-12-11 15:50:05 +01:00
cairo-fixed-private.h [cairo-fixed/wideint-private.h] Split out typedefs from prototypes 2008-01-20 02:55:07 -05:00
cairo-fixed-type-private.h [cairo-fixed/wideint-private.h] Split out typedefs from prototypes 2008-01-20 02:55:07 -05:00
cairo-fixed.c [fixpt] Make fixed point methods static inline and generic 2007-07-18 22:45:21 +02:00
cairo-font-face.c [cairo-font-options] Treat NULL as a default cairo_font_options_t 2008-01-17 22:38:02 +00:00
cairo-font-options.c [cairo-font-options] Treat NULL as a default cairo_font_options_t 2008-01-17 22:38:02 +00:00
cairo-freelist-private.h [cairo-xlib] Fixup --disable-xlib-xrender 2008-01-15 13:08:53 +00:00
cairo-freelist.c [src] Make sure all source files #include "cairoint.h" as their first include 2007-04-03 20:28:11 -04:00
cairo-ft-font.c [cairo-ft] Fix typo in comment 2008-01-19 20:54:25 -05:00
cairo-ft-private.h [cairo-ft-font] Add paranoid error checking to Fc* operations. 2007-10-16 10:56:24 +01:00
cairo-ft.h Give cairo_public an empty definition by default. 2005-09-07 16:31:22 +00:00
cairo-glitz-private.h [slim] hide cairo_glitz_surface_create() (#8551) 2006-10-08 17:07:17 -04:00
cairo-glitz-surface.c [cairo-region] Review status propagation. 2008-01-17 11:50:51 +00:00
cairo-glitz.h Give cairo_public an empty definition by default. 2005-09-07 16:31:22 +00:00
cairo-gstate-private.h Remove include of cairoint.h from *-private.h header files. 2007-08-23 16:13:04 -07:00
cairo-gstate.c [cairo] Add cairo_path_extents() 2008-01-21 12:04:32 -08:00
cairo-hash-private.h Move GCC attributes wrapping into a separate header. 2007-09-25 16:29:54 +01:00
cairo-hash.c [cairo-error] Clean up all the warnings and missing _cairo_error() calls. 2007-10-04 13:31:44 +01:00
cairo-hull.c [cairo-hull] Remove a couple of redundant status returns. 2007-10-10 14:21:51 +01:00
cairo-image-surface.c Remove some gratuitous assert statements 2008-01-18 11:17:37 -08:00
cairo-lzw.c [cairo-error] Clean up all the warnings and missing _cairo_error() calls. 2007-10-04 13:31:44 +01:00
cairo-malloc-private.h [malloc] Check for integer overflow when realloc'ing. 2007-10-04 00:42:29 +01:00
cairo-matrix.c improve comments for the pixman transformation anchoring math. 2008-01-23 19:22:18 +01:00
cairo-meta-surface-private.h Fix some trivial syntax warnings for -ansi. 2007-10-10 14:56:52 +01:00
cairo-meta-surface.c [cairo-surface] Introduce _cairo_surface_create_in_error(). 2008-01-16 16:51:32 +00:00
cairo-mutex-list-private.h [cairo-atomic] Declare the mutex for NEEDS_MEMORY_BARRIER. 2007-11-05 09:05:25 +00:00
cairo-mutex-private.h Move GCC attributes wrapping into a separate header. 2007-09-25 16:29:54 +01:00
cairo-mutex-type-private.h Make NO_MUTEX really mean no mutexes 2007-09-18 09:28:30 -07:00
cairo-mutex.c [cairo-mutex] Fix typo. 2007-05-03 19:04:21 -04:00
cairo-os2-private.h Remove include of cairoint.h from *-private.h header files. 2007-08-23 16:13:04 -07:00
cairo-os2-surface.c [cairo-surface] Introduce _cairo_surface_create_in_error(). 2008-01-16 16:51:32 +00:00
cairo-os2.h [directfb,os2] #error if the backend is not compiled in, like others do 2007-03-13 05:14:18 -04:00
cairo-output-stream-private.h [cairo-output-stream] Introduce _cairo_output_stream_create_in_error() 2008-01-16 16:40:01 +00:00
cairo-output-stream.c [cairo-output-stream] Introduce _cairo_output_stream_create_in_error() 2008-01-16 16:40:01 +00:00
cairo-paginated-private.h Add FALLBACK mode to paginated surface 2008-01-07 21:05:36 +10:30
cairo-paginated-surface-private.h Remove include of cairoint.h from *-private.h header files. 2007-08-23 16:13:04 -07:00
cairo-paginated-surface.c Quiet a warning about switch without some cairo_surface_type_t enum values 2008-01-18 11:17:37 -08:00
cairo-path-bounds.c Rename trailing_move_to_point to move_to_point 2008-01-21 15:20:07 -08:00
cairo-path-fill.c [cairo-path-fixed] Exponentially enlarge cairo_path_buf_t. 2007-11-05 08:51:06 +00:00
cairo-path-fixed-private.h [cairo-path-fixed] Exponentially enlarge cairo_path_buf_t. 2007-11-05 08:51:06 +00:00
cairo-path-fixed.c [path-fixed] add _cairo_path_fixed_interpret_flat 2008-01-21 12:01:44 -08:00
cairo-path-private.h [cairo-path] Make _cairo_path_nil static. 2007-10-30 10:58:16 +00:00
cairo-path-stroke.c [cairo-path-stroke] Use M_SQRT2 for constant value 2008-01-22 01:03:02 -05:00
cairo-path.c [path] use new interpret_flat infrastructure for path_populate 2008-01-21 12:07:11 -08:00
cairo-pattern.c [cairo-pattern] Add an ASSERT_NOT_REACHED 2008-01-12 20:44:02 +00:00
cairo-pdf-operators-private.h [headers] Brute force fixup of including cairoint.h from boilerplate. 2008-01-10 12:57:36 +00:00
cairo-pdf-operators.c [cairo-pdf-operators] Be consistent in error checks. 2008-01-10 14:22:38 +00:00
cairo-pdf-surface-private.h PDF: Put each fallback image in a separate group 2008-01-07 21:15:18 +10:30
cairo-pdf-surface.c [cairo-scaled-font] Don't err on font size 0, really 2008-01-24 23:35:06 -05:00
cairo-pdf.h cairo-pdf.h: Add missing cairo_public decorators 2006-09-18 13:32:00 -04:00
cairo-pen.c Fix degenerate-pen test case by removing the triggering assertion 2007-10-30 17:17:38 -07:00
cairo-png.c [cairo-surface] Introduce _cairo_surface_create_in_error(). 2008-01-16 16:51:32 +00:00
cairo-polygon.c [cairo-error] Clean up all the warnings and missing _cairo_error() calls. 2007-10-04 13:31:44 +01:00
cairo-private.h [cairo-atomic] Rewrite reference counting using atomic ops. 2007-09-25 16:29:54 +01:00
cairo-ps-surface-private.h Set the PS level to to minimum required 2008-01-10 02:57:30 +10:30
cairo-ps-surface.c [cairo-scaled-font] Don't err on font size 0, really 2008-01-24 23:35:06 -05:00
cairo-ps.h Add cairo_ps_surface_restrict_to_level() API 2007-10-13 21:14:28 +09:30
cairo-quartz-private.h [quartz] Store the CGFontRef and reuse it for rendering 2008-01-15 14:27:14 -08:00
cairo-quartz-surface.c [quartz] Do dynamic symbol lookups for 10.4/10.5 optimization symbols 2008-01-24 11:48:02 -08:00
cairo-quartz.h [quartz] Remove (disabled) support for rendering via AGL/CGGL 2007-02-20 16:18:27 -08:00
cairo-rectangle.c [fixpt] Replace cairo_rectangle_int16_t with cairo_rectangle_int_t 2007-07-18 22:45:21 +02:00
cairo-reference-count-private.h Simplify CAIRO_REFERENCE_COUNT_INVALID macro 2007-10-09 14:27:53 -07:00
cairo-region-private.h Move GCC attributes wrapping into a separate header. 2007-09-25 16:29:54 +01:00
cairo-region.c Replace various uses of CAIRO_STACK_BUF_SIZE with a single macro. 2007-12-17 13:45:01 +00:00
cairo-scaled-font-private.h [cairo-scaled-font] Don't err on font size 0, really 2008-01-24 23:35:06 -05:00
cairo-scaled-font-subsets-private.h Make PostScript output text selectable 2007-10-14 00:11:57 +09:30
cairo-scaled-font-subsets.c Fix PS/PDF Type 1 font embedding when glyph 0 is used 2008-01-20 01:33:56 +10:30
cairo-scaled-font.c [cairo-scaled-font] Fix bug in glyphs bounding box computation 2008-01-25 04:16:44 -05:00
cairo-skiplist-private.h [cairo-skiplist] Use one random number per insertion, instead of two 2007-04-09 19:39:50 -04:00
cairo-skiplist.c [cairo-error] Clean up all the warnings and missing _cairo_error() calls. 2007-10-04 13:31:44 +01:00
cairo-slope.c [cairo-slope] Make comparison stable if both vectors are zero 2007-03-13 05:14:20 -04:00
cairo-spline.c [cairo-spline] Eliminate redundant _cairo_fixed_to_double(). 2007-11-01 22:42:34 +00:00
cairo-stroke-style.c [cairo-error] Clean up all the warnings and missing _cairo_error() calls. 2007-10-04 13:31:44 +01:00
cairo-surface-fallback-private.h Revert "[cairo-gstate] Avoid copying untransformed glyphs." 2007-08-31 16:53:21 +01:00
cairo-surface-fallback.c Fix usage of cairo_rectangle_int16_t leading to memory corruption 2008-01-22 15:32:11 -08:00
cairo-surface-private.h [cairo-atomic] Rewrite reference counting using atomic ops. 2007-09-25 16:29:54 +01:00
cairo-surface.c [cairo-region] Review status propagation. 2008-01-17 11:50:51 +00:00
cairo-svg-surface-private.h Remove include of cairoint.h from *-private.h header files. 2007-08-23 16:13:04 -07:00
cairo-svg-surface.c [cairo-svg-surface] Review error propagation during surface creation. 2008-01-16 16:52:51 +00:00
cairo-svg.h [SVG] Define enum _cairo_svg_version. 2006-11-21 00:22:19 -05:00
cairo-traps.c [cairo-traps] Typo caught by valgrind. 2008-01-10 21:32:47 +00:00
cairo-truetype-subset-private.h TrueType: fix bug #9998 - build error with gcc 2.95 2007-02-17 10:55:14 +10:30
cairo-truetype-subset.c [cairo-truetype-subset] Propagate error from failing to allocate padding. 2008-01-03 11:03:17 +00:00
cairo-type1-fallback.c [cairo-output-stream] Introduce _cairo_output_stream_create_in_error() 2008-01-16 16:40:01 +00:00
cairo-type1-private.h Remove include of cairoint.h from *-private.h header files. 2007-08-23 16:13:04 -07:00
cairo-type1-subset.c Type1-subset: Add newline to the end of the font 2008-01-20 00:26:09 +10:30
cairo-types-private.h cairo_point_int32_t is really int32_t, not int16_t 2008-01-22 16:30:37 -08:00
cairo-unicode.c [cairo-unicode] Don't compile _cairo_utf8_to_utf16 on Linux 2007-12-20 12:30:35 -05:00
cairo-wideint-private.h [cairo-fixed/wideint-private.h] Split out typedefs from prototypes 2008-01-20 02:55:07 -05:00
cairo-wideint-type-private.h [cairo-fixed/wideint-private.h] Split out typedefs from prototypes 2008-01-20 02:55:07 -05:00
cairo-wideint.c cairo-wideint: Fix to eliminate comparison of signed and unsigned values 2007-01-20 02:01:29 -08:00
cairo-win32-font.c [cairo-font-options] Treat NULL as a default cairo_font_options_t 2008-01-17 22:38:02 +00:00
cairo-win32-printing-surface.c [win32] Print non-black/white text correctly in show_glyphs 2008-01-24 11:24:02 -08:00
cairo-win32-private.h [win32] Better tracking of initial clip 2008-01-24 11:24:02 -08:00
cairo-win32-surface.c [win32] Better tracking of initial clip 2008-01-24 11:24:02 -08:00
cairo-win32.c Implement a win32 tmpfile() function 2007-12-29 00:25:34 +10:30
cairo-win32.h [win32] remove ignore_operators flag from win32 printing surface 2007-10-09 13:56:59 -07:00
cairo-xcb-surface.c Fix usage of cairo_rectangle_int16_t leading to memory corruption 2008-01-22 15:32:11 -08:00
cairo-xcb-xrender.h XCB: Move slim_hidden_def to cairo-xcb-surface.c, not cairo-xcb-xrender.h. 2006-10-16 11:44:08 -07:00
cairo-xcb.h Update XCB names for XCB 1.0 RC2 release. 2006-10-11 21:52:49 -07:00
cairo-xlib-display.c [cairo-xlib] Remove the NULL safeguards. 2008-01-17 14:51:22 +00:00
cairo-xlib-private.h [cairo-xlib] Fixup --disable-xlib-xrender 2008-01-15 13:08:53 +00:00
cairo-xlib-screen.c [cairo-xlib] Remove the NULL safeguards. 2008-01-17 14:51:22 +00:00
cairo-xlib-surface-private.h [cairo-xlib] Fixup --disable-xlib-xrender 2008-01-15 13:08:53 +00:00
cairo-xlib-surface.c Fix usage of cairo_rectangle_int16_t leading to memory corruption 2008-01-22 15:32:11 -08:00
cairo-xlib-xrender-private.h [cairo-xlib] Fixup --disable-xlib-xrender 2008-01-15 13:08:53 +00:00
cairo-xlib-xrender.h [cairo-xlib] Fixup --disable-xlib-xrender 2008-01-15 13:08:53 +00:00
cairo-xlib.h Surface size getters for xlib 2006-06-25 11:23:43 +02:00
cairo.c Test and document that fill rule has no effect on cairo_path_extents 2008-01-21 16:45:41 -08:00
cairo.h [cairo] Add cairo_path_extents() 2008-01-21 12:04:32 -08:00
cairo.pc.in Improve backend .pc files generation: 2006-07-12 04:27:55 -04:00
cairoint.h Fix usage of cairo_rectangle_int16_t leading to memory corruption 2008-01-22 15:32:11 -08:00
check-cairoint.sh [src/check-cairoint.sh] Fix typo in shell script 2007-12-18 15:59:19 -05:00
check-def.sh [check] Move the hidden symbol check into check-{def,plt}.sh 2008-01-11 21:21:34 +00:00
check-has-hidden-symbols.c [check] Move the hidden symbol check into check-{def,plt}.sh 2008-01-11 21:21:34 +00:00
check-headers.sh Add attribute(warn_unused_result) 2007-04-09 15:01:58 +01:00
check-plt.sh [check-plt.sh] Ensure that $MAKE is defined. 2008-01-11 21:58:09 +00:00
Makefile.am [cairo-operator] Remove unused cairo-operator.c 2008-01-22 00:36:48 -05:00
Makefile.win32 [win32] add new win32 printing surface 2007-09-18 09:28:30 -07:00
test-fallback-surface.c [cairo-surface] Introduce _cairo_surface_create_in_error(). 2008-01-16 16:51:32 +00:00
test-fallback-surface.h [test-surfaces] Prefix public symbols with _cairo 2007-03-13 05:14:19 -04:00
test-meta-surface.c [cairo-surface] Introduce _cairo_surface_create_in_error(). 2008-01-16 16:51:32 +00:00
test-meta-surface.h [test-surfaces] Prefix public symbols with _cairo 2007-03-13 05:14:19 -04:00
test-paginated-surface.c [cairo-surface] Introduce _cairo_surface_create_in_error(). 2008-01-16 16:51:32 +00:00
test-paginated-surface.h [test-surfaces] Prefix public symbols with _cairo 2007-03-13 05:14:19 -04:00