cairo/src
Uli Schlachter f1d313e042 xcb: Remove _cairo_xcb_picture_copy
All cairo_xcb_picture_t now get their own, private Picture instead of possibly
sharing it with a cairo_xcb_surface_t.

This solves a cyclic dependency which caused cairo_xcb_picture_t to be leaked
until their device was finished.

When an xcb surface was used as a source, a cairo_xcb_picture_t was created
which kept a reference to the surface. This picture was then added as a snapshot
to the surface which caused the surface to own a reference to the picture.

As a result, the Picture and possibly its associated Pixmap were not freed on
the X11 server which could thus run out of memory.

This change causes more Pictures to be created which could possibly slow down
cairo-xcb. There seems to be no measurable difference with cairo-perf-trace. For
the micro benchmarks, this has the most impact on paint_similar-rgba_source.512:

       min(ticks)  min(ms) median(ms) stddev. iterations overhead
before     158732    0.159    0.159  0.11%   4: 1651.49
after      162579    0.163    0.163  0.18%   4: 1612.41

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=34912

Signed-off-by: Uli Schlachter <psychon@znc.in>
2011-03-04 16:37:13 +01:00
..
drm pattern: Use double precision for gradient extreme objects 2011-01-02 18:33:14 +01:00
.gitignore [build] Include all generated win32 build files in the repo 2009-01-09 15:55:24 -05:00
cairo-analysis-surface-private.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-analysis-surface.c PS: Fix regression - incorrect EPS bounding box 2010-11-21 20:34:47 +10:30
cairo-arc-private.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-arc.c arc: Clamp to 65536 full circles 2010-12-09 17:33:12 +01:00
cairo-array.c array: Fix comment 2010-11-28 09:33:14 +01:00
cairo-atomic-private.h Declare variables first so gcc shuts up 2011-02-19 10:22:45 +01:00
cairo-atomic.c atomic: Tweak for compilation x86. 2010-04-29 10:04:54 +01:00
cairo-base64-stream.c Update FSF address 2010-04-27 11:13:38 +02:00
cairo-base85-stream.c Update FSF address 2010-04-27 11:13:38 +02:00
cairo-bentley-ottmann-rectangular.c Update FSF address 2010-04-27 11:13:38 +02:00
cairo-bentley-ottmann-rectilinear.c Update FSF address 2010-04-27 11:13:38 +02:00
cairo-bentley-ottmann.c polygon: Merge _cairo_polygon_init and _cairo_polygon_limit 2010-12-10 11:04:48 +01:00
cairo-beos-surface.cpp doc: Move tmpl/ docs to inline docs 2010-07-08 14:27:16 +02:00
cairo-beos.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-botor-scan-converter.c Update FSF address 2010-04-27 11:13:38 +02:00
cairo-box-private.h box: Add box header 2010-10-29 17:31:22 +02:00
cairo-boxes-private.h drm: code dump, sorry. 2010-05-12 20:54:49 +01:00
cairo-boxes.c drm: code dump, sorry. 2010-05-12 20:54:49 +01:00
cairo-cache-private.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-cache.c Update FSF address 2010-04-27 11:13:38 +02:00
cairo-cff-subset.c CFF Subsetting: Subset subroutines 2010-11-30 22:00:38 +10:30
cairo-clip-private.h Differentiate between reducing clip to composite extents and a rectangle 2010-07-12 16:33:38 +01:00
cairo-clip.c clip: Improve _cairo_clip_contains_* 2011-01-22 11:56:37 +01:00
cairo-color.c Correct color stops comparison function 2010-08-08 10:53:44 +02:00
cairo-combsort-private.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-compiler-private.h Add an implementation of fmax for use with MSVC 2011-03-03 16:34:43 -05:00
cairo-composite-rectangles-private.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-composite-rectangles.c Revert bd672d080c 2010-05-13 01:57:24 +02:00
cairo-debug.c path: Always interpret in forward direction 2010-12-10 10:58:51 +01:00
cairo-deflate-stream.c Update FSF address 2010-04-27 11:13:38 +02:00
cairo-deprecated.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-device-private.h device: Make flush vfunc return a cairo_status_t 2010-06-07 13:37:48 +02:00
cairo-device.c device: Don't be nice to people setting internal error codes 2011-02-18 18:28:54 +01:00
cairo-directfb-surface.c surface: remove content argument from is_similar 2010-06-10 16:07:41 +02:00
cairo-directfb.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-drm-xr.h drm: code dump, sorry. 2010-05-12 20:54:49 +01:00
cairo-drm.h drm: code dump, sorry. 2010-05-12 20:54:49 +01:00
cairo-egl-context.c egl: Ensure that the dummy pbuffer surface is compatible with the supplied context 2011-02-18 09:45:00 -05:00
cairo-error-private.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-features-uninstalled.pc.in build: Fudge the build system some more so it handles extra libs 2010-08-10 01:24:30 +02:00
cairo-features.pc.in build: Fudge the build system some more so it handles extra libs 2010-08-10 01:24:30 +02:00
cairo-fixed-private.h fixed: Refactor code to use more inlines and less duplication of logic. 2010-06-17 08:55:19 +01:00
cairo-fixed-type-private.h Update license blocks to use "Mozilla Foundation" instead of "Mozilla Corporation" 2010-05-06 16:07:43 -04:00
cairo-fixed.c Update FSF address 2010-04-27 11:13:38 +02:00
cairo-font-face-twin-data.c [twin] Improve glyph hints 2008-12-25 02:46:27 -05:00
cairo-font-face-twin.c Update FSF address 2010-04-27 11:13:38 +02:00
cairo-font-face.c doc: Fix some broken references and gtk-doc warnings 2011-01-16 18:40:49 +01:00
cairo-font-options.c doc: Fix some broken references and gtk-doc warnings 2011-01-16 18:40:49 +01:00
cairo-fontconfig-private.h Make distcheck happy. 2010-07-12 11:05:57 +01:00
cairo-freed-pool-private.h freed-pool: Don't access beyond the end of the array. 2010-05-20 21:57:58 +01:00
cairo-freed-pool.c freed-pool: Don't access beyond the end of the array. 2010-05-20 21:57:58 +01:00
cairo-freelist-private.h freelist: Separate freelist inlines from the datatype in headers. 2010-09-02 14:51:30 +01:00
cairo-freelist-type-private.h freelist: Separate freelist inlines from the datatype in headers. 2010-09-02 14:51:30 +01:00
cairo-freelist.c drm: code dump, sorry. 2010-05-12 20:54:49 +01:00
cairo-ft-font.c Document load_truetype_table function and ensure ft-font and Win32-font are compliant 2010-11-23 21:44:31 +10:30
cairo-ft-private.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-ft.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-gl-composite.c gl: Bind samplers just once at program compile time. 2011-02-26 14:09:54 -08:00
cairo-gl-device.c gl: Don't reset the FBO draw/readbuffers every time we bind the FBO. 2011-02-13 11:53:15 -08:00
cairo-gl-dispatch-private.h gl: Add gl dispatch entries for functions related to vertex attributes 2011-02-10 14:54:35 +00:00
cairo-gl-dispatch.c gl: Fix #include's to pass 'make check' 2010-12-17 19:41:57 +01:00
cairo-gl-ext-def-private.h gl: Add definitions for the core variant names of used GL constants 2010-12-15 15:32:20 +00:00
cairo-gl-glyphs.c gl: Propagate surface creation error instead of crashing 2010-06-22 22:01:25 +02:00
cairo-gl-gradient-private.h gl: Replace GLEW by using the facilities provided by cairo-gl-info 2010-12-15 15:32:20 +00:00
cairo-gl-gradient.c gl: Use the dispatch table for calling ARB/EXT functions 2010-12-15 15:32:20 +00:00
cairo-gl-info.c gl: Fix #include's to pass 'make check' 2010-12-17 19:41:57 +01:00
cairo-gl-private.h gl: Bind samplers just once at program compile time. 2011-02-26 14:09:54 -08:00
cairo-gl-shaders.c gl: Bind samplers just once at program compile time. 2011-02-26 14:09:54 -08:00
cairo-gl-surface.c gl: Ensure that gl surface resizes are properly applied 2011-01-18 06:36:06 +02:00
cairo-gl.h gl: Add a first bit of general documentation on cairo-gl usage. 2011-02-21 14:12:47 -08:00
cairo-glx-context.c gl: Take advantage of GLX_MESA_multithread_makecurrent to avoid unbinding. 2011-02-26 14:09:33 -08:00
cairo-gstate-private.h gstate: Remove unused code 2011-01-22 11:59:38 +01:00
cairo-gstate.c Don't err on non-invertible font matrix 2011-02-04 15:43:40 -05:00
cairo-hash-private.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-hash.c Update FSF address 2010-04-27 11:13:38 +02:00
cairo-hull.c Update FSF address 2010-04-27 11:13:38 +02:00
cairo-image-info-private.h Convert mime data length to use unsigned long 2010-07-10 11:16:19 +01:00
cairo-image-info.c Convert mime data length to use unsigned long 2010-07-10 11:16:19 +01:00
cairo-image-surface.c image: Fix surface acquisition if PIXMAN_HAS_ATOMIC_OPS 2011-02-19 19:26:20 +01:00
cairo-list-private.h drm: code dump, sorry. 2010-05-12 20:54:49 +01:00
cairo-lzw.c Update FSF address 2010-04-27 11:13:38 +02:00
cairo-malloc-private.h Update license blocks to use "Mozilla Foundation" instead of "Mozilla Corporation" 2010-05-06 16:07:43 -04:00
cairo-matrix.c matrix: Fix warnings about documentation by 'make check' 2011-01-02 19:32:26 +01:00
cairo-mesh-pattern-rasterizer.c mesh: Do not declare min and max functions 2011-01-17 23:15:00 +01:00
cairo-misc.c mesh: Add mesh pattern type and enum values 2011-01-01 13:05:12 +01:00
cairo-mutex-impl-private.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-mutex-list-private.h win32: Use a font_face hash table to provide unique font faces 2010-11-16 23:48:39 +10:30
cairo-mutex-private.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-mutex-type-private.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-mutex.c Update FSF address 2010-04-27 11:13:38 +02:00
cairo-observer.c gstate: Update cached matrix state after device transform changes on the target 2010-06-11 16:08:17 +01:00
cairo-os2-private.h os2: Fix blitting 24 bpp pixel data. 2010-08-08 22:29:39 +03:00
cairo-os2-surface.c os2: Restore surface type checking in the get_extents method. 2010-08-08 22:33:43 +03:00
cairo-os2.h os2: New API to create surfaces without a persistent HPS. 2010-08-08 22:29:39 +03:00
cairo-output-stream-private.h Convert mime data length to use unsigned long 2010-07-10 11:16:19 +01:00
cairo-output-stream.c Convert mime data length to use unsigned long 2010-07-10 11:16:19 +01:00
cairo-paginated-private.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-paginated-surface-private.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-paginated-surface.c PS/PDF: Fix regression when changing page size to a larger size 2010-11-21 20:34:18 +10:30
cairo-path-bounds.c path-bounder: Update current point after curve_to op 2010-12-14 21:03:31 +01:00
cairo-path-fill.c polygon: Merge _cairo_polygon_init and _cairo_polygon_limit 2010-12-10 11:04:48 +01:00
cairo-path-fixed-private.h path: Always interpret in forward direction 2010-12-10 10:58:51 +01:00
cairo-path-fixed.c path: Silence warnings 2010-12-13 11:09:20 +01:00
cairo-path-in-fill.c path: Always interpret in forward direction 2010-12-10 10:58:51 +01:00
cairo-path-private.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-path-stroke.c polygon: Merge _cairo_polygon_init and _cairo_polygon_limit 2010-12-10 11:04:48 +01:00
cairo-path.c Fix errors from src/check-plt.sh 2011-02-12 21:12:46 +01:00
cairo-pattern.c Fix errors from src/check-plt.sh 2011-02-12 21:12:46 +01:00
cairo-pdf-operators-private.h pdf-operators: fix bug that was causing unnecessary repositioning of text 2010-10-01 20:55:28 +09:30
cairo-pdf-operators.c path: Always interpret in forward direction 2010-12-10 10:58:51 +01:00
cairo-pdf-shading-private.h pdf,ps: Add native mesh pattern support 2011-01-01 13:05:13 +01:00
cairo-pdf-shading.c pdf,ps: Add native mesh pattern support 2011-01-01 13:05:13 +01:00
cairo-pdf-surface-private.h PDF: Output a stencil mask for cairo_mask() with solid source and A1 mask 2010-12-05 00:29:52 +10:30
cairo-pdf-surface.c Fix regressions from 1.10 merge 2011-01-24 10:35:23 +01:00
cairo-pdf.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-pen.c Update FSF address 2010-04-27 11:13:38 +02:00
cairo-png.c doc: Add a remark about toy status of the PNG API 2011-01-10 18:25:09 +01:00
cairo-polygon.c polygon: Merge _cairo_polygon_init and _cairo_polygon_limit 2010-12-10 11:04:48 +01:00
cairo-private.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-ps-surface-private.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-ps-surface.c pdf,ps,quartz: Use correct tolerance for gradient domain computation 2011-01-18 15:15:28 +01:00
cairo-ps.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-qt-surface.cpp pattern: Use double precision for gradient extreme objects 2011-01-02 18:33:14 +01:00
cairo-qt.h qt: Define cairo-qt's API as C symbols 2010-07-11 18:53:42 +02:00
cairo-quartz-font.c quartz-font: Implement new load_truetype_table semantics 2010-11-23 14:29:24 +01:00
cairo-quartz-image-surface.c Update license blocks to use "Mozilla Foundation" instead of "Mozilla Corporation" 2010-05-06 16:07:43 -04:00
cairo-quartz-image.h Update license blocks to use "Mozilla Foundation" instead of "Mozilla Corporation" 2010-05-06 16:07:43 -04:00
cairo-quartz-private.h quartz: Move drawing state out of surface 2010-10-13 00:27:01 +02:00
cairo-quartz-surface.c quartz: Respect pattern filter settings 2011-01-19 13:27:33 +01:00
cairo-quartz.h Update license blocks to use "Mozilla Foundation" instead of "Mozilla Corporation" 2010-05-06 16:07:43 -04:00
cairo-recording-surface-private.h recording: Avoid refcycles by always copying the command array. 2010-05-05 09:23:59 +01:00
cairo-recording-surface.c doc: Fix some broken references and gtk-doc warnings 2011-01-16 18:40:49 +01:00
cairo-rectangle.c box: Add _cairo_box_add_curve_to 2010-10-29 17:31:22 +02:00
cairo-rectangular-scan-converter.c Update FSF address 2010-04-27 11:13:38 +02:00
cairo-reference-count-private.h atomic: Remove unused function _cairo_atomic_int_set() 2010-04-29 10:52:47 +02:00
cairo-region-private.h region: _cairo_region_create_in_error() 2010-05-10 12:45:31 +01:00
cairo-region.c region: Don't be nice to people setting internal error code 2011-02-18 18:30:17 +01:00
cairo-rtree-private.h rtree: Actually pin the node when pinning. 2010-05-16 10:23:30 +01:00
cairo-rtree.c rtree: Remove the unused evict hook. 2010-05-12 20:54:49 +01:00
cairo-scaled-font-private.h scaled-font: Convert to cairo_list_t 2010-05-04 18:53:03 +01:00
cairo-scaled-font-subsets-private.h win32: add synthetic font subsetting support 2010-11-23 00:13:56 +10:30
cairo-scaled-font-subsets.c PDF: Fix toUnicode for CID fonts 2010-11-07 21:50:56 +10:30
cairo-scaled-font.c scaled font: Fix the docs for cairo_scaled_font_get_font_face 2011-01-27 17:44:59 +01:00
cairo-script-surface.c mesh: Rename cairo_pattern_mesh_* functions to cairo_mesh_pattern_* 2011-02-07 20:28:09 +01:00
cairo-script.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-skia-surface.cpp pattern: Use double precision for gradient extreme objects 2011-01-02 18:33:14 +01:00
cairo-skia.h Make distcheck happy. 2010-07-12 11:05:57 +01:00
cairo-slope-private.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-slope.c Update FSF address 2010-04-27 11:13:38 +02:00
cairo-spans-private.h Remove _cairo_surface_composite_trapezoids_as_polygon() 2010-06-07 13:37:49 +02:00
cairo-spans.c mesh: Add mesh pattern type and enum values 2011-01-01 13:05:12 +01:00
cairo-spline.c Update FSF address 2010-04-27 11:13:38 +02:00
cairo-stroke-style.c Update FSF address 2010-04-27 11:13:38 +02:00
cairo-surface-clipper-private.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-surface-clipper.c Update FSF address 2010-04-27 11:13:38 +02:00
cairo-surface-fallback-private.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-surface-fallback.c polygon: Merge _cairo_polygon_init and _cairo_polygon_limit 2010-12-10 11:04:48 +01:00
cairo-surface-offset-private.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-surface-offset.c surface-offset: Use right variable in mask 2010-08-28 17:13:46 +02:00
cairo-surface-private.h gstate: Update cached matrix state after device transform changes on the target 2010-06-11 16:08:17 +01:00
cairo-surface-snapshot-private.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-surface-snapshot.c snapshot: Attach the backend generated snapshot to the target 2010-04-30 10:16:23 +01:00
cairo-surface-subsurface-private.h subsurface: Don't assume we ever own the target. 2010-07-10 11:16:19 +01:00
cairo-surface-subsurface.c subsurface: Fix acquire_source_surface for out-of-bounds surfaces 2010-09-01 03:17:12 +02:00
cairo-surface-wrapper-private.h ps: Enable native encoding of subsurface patterns. 2010-04-30 10:16:24 +01:00
cairo-surface-wrapper.c Fix regression in fallback-resolution test 2010-11-21 20:09:13 +10:30
cairo-surface.c surface: Don't pass INT_UNSUPPORTED to _cairo_surface_set_error 2011-03-02 18:31:28 +00:00
cairo-svg-surface-private.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-svg-surface.c pattern: Use double precision for gradient extreme objects 2011-01-02 18:33:14 +01:00
cairo-svg.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-system.c Update FSF address 2010-04-27 11:13:38 +02:00
cairo-tee-surface-private.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-tee-surface.c tee: Do not apply two times the master device transform 2011-01-18 13:55:02 +01:00
cairo-tee.h tee: Move definitions into separate header 2010-07-30 22:27:08 +02:00
cairo-tor-scan-converter.c Replace insertion sort with mergesort in the scan converter 2010-08-10 14:39:54 +02:00
cairo-toy-font-face.c Update FSF address 2010-04-27 11:13:38 +02:00
cairo-traps.c Update FSF address 2010-04-27 11:13:38 +02:00
cairo-truetype-subset-private.h win32: add synthetic font subsetting support 2010-11-23 00:13:56 +10:30
cairo-truetype-subset.c Truetype subset: add missing unicode ranges to cmap 2010-11-26 21:54:39 +10:30
cairo-type1-fallback.c path: Always interpret in forward direction 2010-12-10 10:58:51 +01:00
cairo-type1-glyph-names.c Type 1 glyph names: Do not use an array of pointers for winansi glyph names 2010-11-06 22:45:11 +10:30
cairo-type1-private.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-type1-subset.c Type1-subset: Fallback if font contains more than one /Encoding 2011-02-08 21:40:08 +10:30
cairo-type3-glyph-surface-private.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-type3-glyph-surface.c type3: Minor tweaks to remove a redundant check. 2010-05-04 18:53:50 +01:00
cairo-types-private.h pattern: Use double precision for gradient extreme objects 2011-01-02 18:33:14 +01:00
cairo-unicode.c Update FSF address 2010-04-27 11:13:38 +02:00
cairo-uninstalled.pc.in Build -uninstalled.pc files 2008-09-11 00:38:30 -04:00
cairo-user-font-private.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-user-font.c doc: Move tmpl/ docs to inline docs 2010-07-08 14:27:16 +02:00
cairo-version.c doc: Move tmpl/ docs to inline docs 2010-07-08 14:27:16 +02:00
cairo-version.h Some nasty tracks to make changing version number not cause a total rebuild 2008-08-28 18:18:23 -04:00
cairo-vg-surface.c pattern: Use double precision for gradient extreme objects 2011-01-02 18:33:14 +01:00
cairo-vg.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-wgl-context.c gl: Embed the GL dispatch table in the cairo-gl context and initialize it. 2010-12-15 15:32:20 +00:00
cairo-wideint-private.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-wideint-type-private.h Add UINT32_MAX define. 2011-03-03 16:31:03 -05:00
cairo-wideint.c Remove excessive semicolons 2010-04-29 20:45:23 +02:00
cairo-win32-font.c Document load_truetype_table function and ensure ft-font and Win32-font are compliant 2010-11-23 21:44:31 +10:30
cairo-win32-printing-surface.c doc: Fix some broken references and gtk-doc warnings 2011-01-16 18:40:49 +01:00
cairo-win32-private.h win32-print: print as unicode where possible 2010-11-16 23:53:05 +10:30
cairo-win32-surface.c win32: Improve error logging 2011-01-21 09:56:46 +01:00
cairo-win32.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-xcb-connection-core.c XCB: Stop taking the xcb socket 2010-12-25 09:50:34 +00:00
cairo-xcb-connection-render.c xcb: Remove CAIRO_XCB_RENDER_HAS_COMPOSITE_SPANS 2011-02-28 15:54:02 +01:00
cairo-xcb-connection-shm.c Remove an unused field from cairo_xcb_shm_info_t 2011-01-02 23:50:47 +02:00
cairo-xcb-connection.c xcb: Remove some unused code 2011-02-28 15:42:57 +01:00
cairo-xcb-private.h xcb: Remove CAIRO_XCB_RENDER_HAS_COMPOSITE_SPANS 2011-02-28 15:54:02 +01:00
cairo-xcb-screen.c xcb: Remove the surface pattern cache 2011-02-12 10:34:02 +01:00
cairo-xcb-shm.c xcb: Limit the amount of SHM used 2011-01-31 18:18:02 +01:00
cairo-xcb-surface-cairo.c Update FSF address 2010-04-27 11:13:38 +02:00
cairo-xcb-surface-core.c xcb: Move the allocation of a shm surface into its own function 2011-01-31 18:20:23 +01:00
cairo-xcb-surface-private.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-xcb-surface-render.c xcb: Remove _cairo_xcb_picture_copy 2011-03-04 16:37:13 +01:00
cairo-xcb-surface.c xcb: Use a normal image surface if SHM fails 2011-01-31 18:22:06 +01:00
cairo-xcb.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-xlib-display.c freelist: Separate freelist inlines from the datatype in headers. 2010-09-02 14:51:30 +01:00
cairo-xlib-private.h freelist: Separate freelist inlines from the datatype in headers. 2010-09-02 14:51:30 +01:00
cairo-xlib-screen.c raster backends: Set round_glpyh_positions to ON 2010-10-21 22:20:31 +02:00
cairo-xlib-surface-private.h xlib: Adjust trapezoid precision based on antialias. 2010-06-11 11:16:42 +01:00
cairo-xlib-surface.c xlib: Handle a wider range of glyph positions 2011-01-07 00:19:55 +01:00
cairo-xlib-visual.c xlib: Remove reference counting for cairo_xlib_screen_t 2010-05-06 10:46:49 +01:00
cairo-xlib-xcb-surface.c xcb: trivial memfault fixes. 2010-05-10 13:36:53 +01:00
cairo-xlib-xrender-private.h xlib: Fix compilation when gradient functions are not available 2011-02-14 11:07:02 +01:00
cairo-xlib-xrender.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-xlib.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo-xml-surface.c pattern: Use double precision for gradient extreme objects 2011-01-02 18:33:14 +01:00
cairo-xml.h Update FSF address 2010-04-27 11:13:38 +02:00
cairo.c arc: Remove erroneous return statement 2011-02-19 10:40:01 +01:00
cairo.h mesh: Rename cairo_pattern_mesh_* functions to cairo_mesh_pattern_* 2011-02-07 20:28:09 +01:00
cairo.pc.in Improve backend .pc files generation: 2006-07-12 04:27:55 -04:00
cairoint.h Fix errors from src/check-plt.sh 2011-02-12 21:12:46 +01:00
check-def.sh check: Fix for link-time-optimisation 2010-09-06 13:11:21 +01:00
check-doc-syntax.sh check: Allow unprefix type names in the title 2010-07-11 23:32:12 +02: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 Set LC_ALL=C instead of LANG=C 2009-09-16 15:50:34 -04:00
check-link.c [src/check-link.c] Simple test to check we can link to the built cairo.so 2008-09-02 21:31:43 -04:00
check-plt.sh Set LC_ALL=C instead of LANG=C 2009-09-16 15:50:34 -04:00
check-preprocessor-syntax.sh Set LC_ALL=C instead of LANG=C 2009-09-16 15:50:34 -04:00
Makefile.am gl: Remove GLEW from the build system and the source tree 2010-12-15 15:32:20 +00:00
Makefile.am.analysis Bug 34011 - headers-standalone target is incorrect for some non-gcc compilers 2011-02-20 18:16:10 -05:00
Makefile.sources Makefile: add missing cairo-box-private.h 2011-01-23 15:46:32 +00:00
Makefile.win32 [win32] Include $(OPT) flags when linking cairo.dll 2009-02-26 16:04:49 -05:00
Makefile.win32.features xcb: Automatically enable the backend if the libs are available 2011-01-26 17:54:13 +01:00
README Fix various README typos 2009-01-02 02:56:38 -05:00
test-fallback-surface.c Update FSF address 2010-04-27 11:13:38 +02:00
test-fallback-surface.h Update FSF address 2010-04-27 11:13:38 +02:00
test-fallback16-surface.c Update FSF address 2010-04-27 11:13:38 +02:00
test-fallback16-surface.h Update FSF address 2010-04-27 11:13:38 +02:00
test-null-surface.c Update FSF address 2010-04-27 11:13:38 +02:00
test-null-surface.h Update FSF address 2010-04-27 11:13:38 +02:00
test-paginated-surface.c Update FSF address 2010-04-27 11:13:38 +02:00
test-paginated-surface.h Update FSF address 2010-04-27 11:13:38 +02:00
test-wrapping-surface.c Update FSF address 2010-04-27 11:13:38 +02:00
test-wrapping-surface.h Update FSF address 2010-04-27 11:13:38 +02:00

Cairo Library Source Code
=========================

This directory contains the source code of the cairo library.


Source Code Listing
-------------------

The canonical list of source files is the file Makefile.sources.  See that
file for how it works.


New Backends
------------

The rule of the thumb for adding new backends is to see how other
backends are integrated.  Pick one of the simpler, unsupported, backends
and search the entire tree for it, and go from there.

To add new backends you need to basically:

  * Modify $(top_srcdir)/configure.in to add checks for your backend.

  * Modify Makefile.sources to add source files for your backend,

  * Modify $(top_srcdir)/boilerplate/ to add boilerplate code for
    testing your new backend.


New API
-------

After adding new API, run "make check" in this directory and fix any
reported issues.  Also add new API to the right location in
$(top_srcdir)/doc/public/cairo-sections.txt and run "make check"
in $(top_builddir)/doc/public to make sure that any newly added
documentation is correctly hooked up.

Do not forget to add tests for the new API.  See next section.


Tests
-----

There are some tests in this directory that check the source code and
the build for various issues.  The tests are very quick to run, and
particularly should be run after any documentation or API changes.  It
does not hurt to run them after any source modification either.  Run
them simply by calling:

	make check

There are also extensive regression tests in $(top_srcdir)/test.  It is
a good idea to run that test suite for any changes made to the source
code.  Moreover, for any new feature, API, or bug fix, new tests should
be added to the regression test suite to test the new code.


Bibliography
------------

A detailed list of academic publications used in cairo code is available
in the file $(top_srcdir)/BIBLIOGRAPHY.  Feel free to update as you
implement more papers.

For more technical publications (eg. Adobe technical reports) just
point them out in a comment in the header of the file implementing them.