1 /* Cairo - a vector graphics library with display and print output
3 * Copyright © 2005 Red Hat, Inc.
4 * Copyright © 2009 Intel Corporation
6 * This library is free software; you can redistribute it and/or
7 * modify it either under the terms of the GNU Lesser General Public
8 * License version 2.1 as published by the Free Software Foundation
9 * (the "LGPL") or, at your option, under the terms of the Mozilla
10 * Public License Version 1.1 (the "MPL"). If you do not alter this
11 * notice, a recipient may use your version of this file under either
12 * the MPL or the LGPL.
14 * You should have received a copy of the LGPL along with this library
15 * in the file COPYING-LGPL-2.1; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA
17 * You should have received a copy of the MPL along with this library
18 * in the file COPYING-MPL-1.1
20 * The contents of this file are subject to the Mozilla Public License
21 * Version 1.1 (the "License"); you may not use this file except in
22 * compliance with the License. You may obtain a copy of the License at
23 * http://www.mozilla.org/MPL/
25 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY
26 * OF ANY KIND, either express or implied. See the LGPL or the MPL for
27 * the specific language governing rights and limitations.
29 * The Original Code is the cairo graphics library.
31 * The Initial Developer of the Original Code is Red Hat, Inc.
34 * Chris Wilson <chris@chris-wilson.co.uk>
37 #ifndef CAIRO_XCB_PRIVATE_H
38 #define CAIRO_XCB_PRIVATE_H
42 #include "cairo-xcb.h"
44 #include "cairo-cache-private.h"
45 #include "cairo-compiler-private.h"
46 #include "cairo-device-private.h"
47 #include "cairo-error-private.h"
48 #include "cairo-freelist-private.h"
49 #include "cairo-list-private.h"
50 #include "cairo-mutex-private.h"
51 #include "cairo-pattern-private.h"
52 #include "cairo-reference-count-private.h"
53 #include "cairo-scaled-font-private.h"
54 #include "cairo-spans-private.h"
55 #include "cairo-surface-private.h"
58 #include <xcb/render.h>
59 #include <xcb/xcbext.h>
62 #define XLIB_COORD_MAX 32767
64 /* maximum number of cached GC's */
65 #define GC_CACHE_SIZE 4
67 #define CAIRO_XCB_RENDER_AT_LEAST(major, minor) \
68 ((XCB_RENDER_MAJOR_VERSION > major) || \
69 ((XCB_RENDER_MAJOR_VERSION == major) && (XCB_RENDER_MINOR_VERSION >= minor)))
71 typedef struct _cairo_xcb_connection cairo_xcb_connection_t;
72 typedef struct _cairo_xcb_font cairo_xcb_font_t;
73 typedef struct _cairo_xcb_screen cairo_xcb_screen_t;
74 typedef struct _cairo_xcb_surface cairo_xcb_surface_t;
75 typedef struct _cairo_xcb_picture cairo_xcb_picture_t;
76 typedef struct _cairo_xcb_shm_mem_pool cairo_xcb_shm_mem_pool_t;
77 typedef struct _cairo_xcb_shm_info cairo_xcb_shm_info_t;
78 typedef struct _cairo_xcb_resources cairo_xcb_resources_t;
80 struct _cairo_xcb_shm_info {
81 cairo_xcb_connection_t *connection;
86 cairo_xcb_shm_mem_pool_t *pool;
87 xcb_get_input_focus_cookie_t sync;
91 struct _cairo_xcb_surface {
93 cairo_image_surface_t *fallback;
94 cairo_boxes_t fallback_damage;
96 cairo_xcb_connection_t *connection;
97 cairo_xcb_screen_t *screen;
99 xcb_drawable_t drawable;
100 cairo_bool_t owns_pixmap;
102 cairo_bool_t deferred_clear;
103 cairo_color_t deferred_clear_color;
109 xcb_render_picture_t picture;
110 xcb_render_pictformat_t xrender_format;
111 pixman_format_code_t pixman_format;
117 struct _cairo_xcb_picture {
118 cairo_surface_t base;
120 cairo_xcb_screen_t *screen;
121 xcb_render_picture_t picture;
122 xcb_render_pictformat_t xrender_format;
123 pixman_format_code_t pixman_format;
127 cairo_extend_t extend;
128 cairo_filter_t filter;
129 cairo_bool_t has_component_alpha;
130 xcb_render_transform_t transform;
138 #if CAIRO_HAS_XLIB_XCB_FUNCTIONS
139 typedef struct _cairo_xlib_xcb_surface {
140 cairo_surface_t base;
142 cairo_xcb_surface_t *xcb;
144 /* original settings for query */
149 } cairo_xlib_xcb_surface_t;
154 GLYPHSET_INDEX_ARGB32,
160 typedef struct _cairo_xcb_font_glyphset_free_glyphs {
161 xcb_render_glyphset_t glyphset;
163 xcb_render_glyph_t glyph_indices[128];
164 } cairo_xcb_font_glyphset_free_glyphs_t;
166 typedef struct _cairo_xcb_font_glyphset_info {
167 xcb_render_glyphset_t glyphset;
168 cairo_format_t format;
169 xcb_render_pictformat_t xrender_format;
170 cairo_xcb_font_glyphset_free_glyphs_t *pending_free_glyphs;
171 } cairo_xcb_font_glyphset_info_t;
173 struct _cairo_xcb_font {
174 cairo_scaled_font_private_t base;
175 cairo_scaled_font_t *scaled_font;
176 cairo_xcb_connection_t *connection;
177 cairo_xcb_font_glyphset_info_t glyphset_info[NUM_GLYPHSETS];
181 struct _cairo_xcb_screen {
182 cairo_xcb_connection_t *connection;
184 xcb_screen_t *xcb_screen;
185 xcb_render_sub_pixel_t subpixel_order;
187 xcb_gcontext_t gc[GC_CACHE_SIZE];
188 uint8_t gc_depths[GC_CACHE_SIZE];
190 cairo_surface_t *stock_colors[CAIRO_STOCK_NUM_COLORS];
192 cairo_surface_t *picture;
195 int solid_cache_size;
197 cairo_cache_t linear_pattern_cache;
198 cairo_cache_t radial_pattern_cache;
199 cairo_freelist_t pattern_cache_entry_freelist;
202 cairo_list_t surfaces;
203 cairo_list_t pictures;
205 cairo_bool_t has_font_options;
206 cairo_font_options_t font_options;
209 struct _cairo_xcb_connection {
210 cairo_device_t device;
212 xcb_connection_t *xcb_connection;
214 xcb_render_pictformat_t standard_formats[5];
215 cairo_hash_table_t *xrender_formats;
216 cairo_hash_table_t *visual_to_xrender_format;
218 unsigned int maximum_request_length;
220 unsigned int original_flags;
224 const xcb_setup_t *root;
225 const xcb_query_extension_reply_t *render;
226 const xcb_query_extension_reply_t *shm;
227 xcb_render_sub_pixel_t *subpixel_orders;
229 cairo_list_t free_xids;
230 cairo_freepool_t xid_pool;
232 cairo_mutex_t shm_mutex;
233 cairo_list_t shm_pools;
234 cairo_list_t shm_pending;
235 cairo_freepool_t shm_info_freelist;
237 cairo_mutex_t screens_mutex;
238 cairo_list_t screens;
245 struct _cairo_xcb_resources {
246 cairo_bool_t xft_antialias;
248 cairo_bool_t xft_hinting;
254 CAIRO_XCB_HAS_RENDER = 0x0001,
255 CAIRO_XCB_RENDER_HAS_FILL_RECTANGLES = 0x0002,
256 CAIRO_XCB_RENDER_HAS_COMPOSITE = 0x0004,
257 CAIRO_XCB_RENDER_HAS_COMPOSITE_TRAPEZOIDS = 0x0008,
258 CAIRO_XCB_RENDER_HAS_COMPOSITE_GLYPHS = 0x0010,
259 CAIRO_XCB_RENDER_HAS_PICTURE_TRANSFORM = 0x0020,
260 CAIRO_XCB_RENDER_HAS_FILTERS = 0x0040,
261 CAIRO_XCB_RENDER_HAS_PDF_OPERATORS = 0x0080,
262 CAIRO_XCB_RENDER_HAS_EXTENDED_REPEAT = 0x0100,
263 CAIRO_XCB_RENDER_HAS_GRADIENTS = 0x0200,
264 CAIRO_XCB_RENDER_HAS_FILTER_GOOD = 0x0400,
265 CAIRO_XCB_RENDER_HAS_FILTER_BEST = 0x0800,
267 CAIRO_XCB_HAS_SHM = 0x80000000,
269 CAIRO_XCB_RENDER_MASK = CAIRO_XCB_HAS_RENDER |
270 CAIRO_XCB_RENDER_HAS_FILL_RECTANGLES |
271 CAIRO_XCB_RENDER_HAS_COMPOSITE |
272 CAIRO_XCB_RENDER_HAS_COMPOSITE_TRAPEZOIDS |
273 CAIRO_XCB_RENDER_HAS_COMPOSITE_GLYPHS |
274 CAIRO_XCB_RENDER_HAS_PICTURE_TRANSFORM |
275 CAIRO_XCB_RENDER_HAS_FILTERS |
276 CAIRO_XCB_RENDER_HAS_PDF_OPERATORS |
277 CAIRO_XCB_RENDER_HAS_EXTENDED_REPEAT |
278 CAIRO_XCB_RENDER_HAS_GRADIENTS |
279 CAIRO_XCB_RENDER_HAS_FILTER_GOOD |
280 CAIRO_XCB_RENDER_HAS_FILTER_BEST,
281 CAIRO_XCB_SHM_MASK = CAIRO_XCB_HAS_SHM
284 #define CAIRO_XCB_SHM_SMALL_IMAGE 8192
286 cairo_private extern const cairo_surface_backend_t _cairo_xcb_surface_backend;
289 * _cairo_surface_is_xcb:
290 * @surface: a #cairo_surface_t
292 * Checks if a surface is an #cairo_xcb_surface_t
294 * Return value: %TRUE if the surface is an xcb surface
296 static inline cairo_bool_t
297 _cairo_surface_is_xcb (const cairo_surface_t *surface)
299 /* _cairo_surface_nil sets a NULL backend so be safe */
300 return surface->backend && surface->backend->type == CAIRO_SURFACE_TYPE_XCB;
303 cairo_private cairo_xcb_connection_t *
304 _cairo_xcb_connection_get (xcb_connection_t *connection);
306 static inline cairo_xcb_connection_t *
307 _cairo_xcb_connection_reference (cairo_xcb_connection_t *connection)
309 return (cairo_xcb_connection_t *) cairo_device_reference (&connection->device);
312 cairo_private xcb_render_pictformat_t
313 _cairo_xcb_connection_get_xrender_format (cairo_xcb_connection_t *connection,
314 pixman_format_code_t pixman_format);
316 cairo_private xcb_render_pictformat_t
317 _cairo_xcb_connection_get_xrender_format_for_visual (cairo_xcb_connection_t *connection,
318 const xcb_visualid_t visual);
320 static inline cairo_status_t cairo_warn
321 _cairo_xcb_connection_acquire (cairo_xcb_connection_t *connection)
323 return cairo_device_acquire (&connection->device);
326 cairo_private uint32_t
327 _cairo_xcb_connection_get_xid (cairo_xcb_connection_t *connection);
330 _cairo_xcb_connection_put_xid (cairo_xcb_connection_t *connection,
334 _cairo_xcb_connection_release (cairo_xcb_connection_t *connection)
336 cairo_device_release (&connection->device);
340 _cairo_xcb_connection_destroy (cairo_xcb_connection_t *connection)
342 cairo_device_destroy (&connection->device);
345 cairo_private cairo_int_status_t
346 _cairo_xcb_connection_allocate_shm_info (cairo_xcb_connection_t *display,
348 cairo_bool_t might_reuse,
349 cairo_xcb_shm_info_t **shm_info_out);
352 _cairo_xcb_shm_info_destroy (cairo_xcb_shm_info_t *shm_info);
355 _cairo_xcb_connection_shm_mem_pools_flush (cairo_xcb_connection_t *connection);
358 _cairo_xcb_connection_shm_mem_pools_fini (cairo_xcb_connection_t *connection);
361 _cairo_xcb_font_close (cairo_xcb_font_t *font);
363 cairo_private cairo_xcb_screen_t *
364 _cairo_xcb_screen_get (xcb_connection_t *connection,
365 xcb_screen_t *screen);
368 _cairo_xcb_screen_finish (cairo_xcb_screen_t *screen);
370 cairo_private xcb_gcontext_t
371 _cairo_xcb_screen_get_gc (cairo_xcb_screen_t *screen,
372 xcb_drawable_t drawable,
376 _cairo_xcb_screen_put_gc (cairo_xcb_screen_t *screen, int depth, xcb_gcontext_t gc);
378 cairo_private cairo_font_options_t *
379 _cairo_xcb_screen_get_font_options (cairo_xcb_screen_t *screen);
381 cairo_private cairo_status_t
382 _cairo_xcb_screen_store_linear_picture (cairo_xcb_screen_t *screen,
383 const cairo_linear_pattern_t *linear,
384 cairo_surface_t *picture);
386 cairo_private cairo_surface_t *
387 _cairo_xcb_screen_lookup_linear_picture (cairo_xcb_screen_t *screen,
388 const cairo_linear_pattern_t *linear);
390 cairo_private cairo_status_t
391 _cairo_xcb_screen_store_radial_picture (cairo_xcb_screen_t *screen,
392 const cairo_radial_pattern_t *radial,
393 cairo_surface_t *picture);
395 cairo_private cairo_surface_t *
396 _cairo_xcb_screen_lookup_radial_picture (cairo_xcb_screen_t *screen,
397 const cairo_radial_pattern_t *radial);
399 cairo_private cairo_surface_t *
400 _cairo_xcb_surface_create_similar_image (void *abstrct_other,
401 cairo_format_t format,
405 cairo_private cairo_surface_t *
406 _cairo_xcb_surface_create_similar (void *abstract_other,
407 cairo_content_t content,
411 cairo_private cairo_surface_t *
412 _cairo_xcb_surface_create_internal (cairo_xcb_screen_t *screen,
413 xcb_drawable_t drawable,
414 cairo_bool_t owns_pixmap,
415 pixman_format_code_t pixman_format,
416 xcb_render_pictformat_t xrender_format,
420 cairo_private_no_warn cairo_bool_t
421 _cairo_xcb_surface_get_extents (void *abstract_surface,
422 cairo_rectangle_int_t *extents);
424 cairo_private cairo_int_status_t
425 _cairo_xcb_render_compositor_paint (const cairo_compositor_t *compositor,
426 cairo_composite_rectangles_t *extents);
428 cairo_private cairo_int_status_t
429 _cairo_xcb_render_compositor_mask (const cairo_compositor_t *compositor,
430 cairo_composite_rectangles_t *extents);
432 cairo_private cairo_int_status_t
433 _cairo_xcb_render_compositor_stroke (const cairo_compositor_t *compositor,
434 cairo_composite_rectangles_t *extents,
435 const cairo_path_fixed_t *path,
436 const cairo_stroke_style_t *style,
437 const cairo_matrix_t *ctm,
438 const cairo_matrix_t *ctm_inverse,
440 cairo_antialias_t antialias);
442 cairo_private cairo_int_status_t
443 _cairo_xcb_render_compositor_fill (const cairo_compositor_t *compositor,
444 cairo_composite_rectangles_t *extents,
445 const cairo_path_fixed_t *path,
446 cairo_fill_rule_t fill_rule,
448 cairo_antialias_t antialias);
450 cairo_private cairo_int_status_t
451 _cairo_xcb_render_compositor_glyphs (const cairo_compositor_t *compositor,
452 cairo_composite_rectangles_t *extents,
453 cairo_scaled_font_t *scaled_font,
454 cairo_glyph_t *glyphs,
456 cairo_bool_t overlap);
458 _cairo_xcb_surface_scaled_font_fini (cairo_scaled_font_t *scaled_font);
461 _cairo_xcb_surface_scaled_glyph_fini (cairo_scaled_glyph_t *scaled_glyph,
462 cairo_scaled_font_t *scaled_font);
464 cairo_private cairo_status_t
465 _cairo_xcb_surface_clear (cairo_xcb_surface_t *dst);
467 cairo_private cairo_status_t
468 _cairo_xcb_surface_core_copy_boxes (cairo_xcb_surface_t *dst,
469 const cairo_pattern_t *src_pattern,
470 const cairo_rectangle_int_t *extents,
471 const cairo_boxes_t *boxes);
473 cairo_private cairo_status_t
474 _cairo_xcb_surface_core_fill_boxes (cairo_xcb_surface_t *dst,
475 const cairo_color_t *color,
476 cairo_boxes_t *boxes);
478 cairo_private xcb_pixmap_t
479 _cairo_xcb_connection_create_pixmap (cairo_xcb_connection_t *connection,
481 xcb_drawable_t drawable,
486 _cairo_xcb_connection_free_pixmap (cairo_xcb_connection_t *connection,
487 xcb_pixmap_t pixmap);
489 cairo_private xcb_gcontext_t
490 _cairo_xcb_connection_create_gc (cairo_xcb_connection_t *connection,
491 xcb_drawable_t drawable,
496 _cairo_xcb_connection_free_gc (cairo_xcb_connection_t *connection,
500 _cairo_xcb_connection_change_gc (cairo_xcb_connection_t *connection,
506 _cairo_xcb_connection_copy_area (cairo_xcb_connection_t *connection,
518 _cairo_xcb_connection_put_image (cairo_xcb_connection_t *connection,
530 _cairo_xcb_connection_put_subimage (cairo_xcb_connection_t *connection,
544 cairo_private xcb_get_image_reply_t *
545 _cairo_xcb_connection_get_image (cairo_xcb_connection_t *connection,
553 _cairo_xcb_connection_poly_fill_rectangle (cairo_xcb_connection_t *connection,
556 uint32_t num_rectangles,
557 xcb_rectangle_t *rectangles);
559 cairo_private cairo_status_t
560 _cairo_xcb_shm_image_create (cairo_xcb_connection_t *connection,
561 pixman_format_code_t pixman_format,
562 int width, int height,
563 cairo_image_surface_t **image_out,
564 cairo_xcb_shm_info_t **shm_info_out);
566 #if CAIRO_HAS_XCB_SHM_FUNCTIONS
567 cairo_private uint32_t
568 _cairo_xcb_connection_shm_attach (cairo_xcb_connection_t *connection,
570 cairo_bool_t readonly);
573 _cairo_xcb_connection_shm_put_image (cairo_xcb_connection_t *connection,
576 uint16_t total_width,
577 uint16_t total_height,
588 cairo_private cairo_status_t
589 _cairo_xcb_connection_shm_get_image (cairo_xcb_connection_t *connection,
599 _cairo_xcb_connection_shm_detach (cairo_xcb_connection_t *connection,
603 _cairo_xcb_connection_shm_put_image (cairo_xcb_connection_t *connection,
606 uint16_t total_width,
607 uint16_t total_height,
623 _cairo_xcb_connection_render_create_picture (cairo_xcb_connection_t *connection,
624 xcb_render_picture_t picture,
625 xcb_drawable_t drawable,
626 xcb_render_pictformat_t format,
628 uint32_t *value_list);
631 _cairo_xcb_connection_render_change_picture (cairo_xcb_connection_t *connection,
632 xcb_render_picture_t picture,
634 uint32_t *value_list);
637 _cairo_xcb_connection_render_set_picture_clip_rectangles (cairo_xcb_connection_t *connection,
638 xcb_render_picture_t picture,
639 int16_t clip_x_origin,
640 int16_t clip_y_origin,
641 uint32_t rectangles_len,
642 xcb_rectangle_t *rectangles);
645 _cairo_xcb_connection_render_free_picture (cairo_xcb_connection_t *connection,
646 xcb_render_picture_t picture);
649 _cairo_xcb_connection_render_composite (cairo_xcb_connection_t *connection,
651 xcb_render_picture_t src,
652 xcb_render_picture_t mask,
653 xcb_render_picture_t dst,
664 _cairo_xcb_connection_render_trapezoids (cairo_xcb_connection_t *connection,
666 xcb_render_picture_t src,
667 xcb_render_picture_t dst,
668 xcb_render_pictformat_t mask_format,
672 xcb_render_trapezoid_t *traps);
675 _cairo_xcb_connection_render_create_glyph_set (cairo_xcb_connection_t *connection,
676 xcb_render_glyphset_t id,
677 xcb_render_pictformat_t format);
680 _cairo_xcb_connection_render_free_glyph_set (cairo_xcb_connection_t *connection,
681 xcb_render_glyphset_t glyphset);
684 _cairo_xcb_connection_render_add_glyphs (cairo_xcb_connection_t *connection,
685 xcb_render_glyphset_t glyphset,
688 xcb_render_glyphinfo_t *glyphs,
693 _cairo_xcb_connection_render_free_glyphs (cairo_xcb_connection_t *connection,
694 xcb_render_glyphset_t glyphset,
696 xcb_render_glyph_t *glyphs);
699 _cairo_xcb_connection_render_composite_glyphs_8 (cairo_xcb_connection_t *connection,
701 xcb_render_picture_t src,
702 xcb_render_picture_t dst,
703 xcb_render_pictformat_t mask_format,
704 xcb_render_glyphset_t glyphset,
707 uint32_t glyphcmds_len,
711 _cairo_xcb_connection_render_composite_glyphs_16 (cairo_xcb_connection_t *connection,
713 xcb_render_picture_t src,
714 xcb_render_picture_t dst,
715 xcb_render_pictformat_t mask_format,
716 xcb_render_glyphset_t glyphset,
719 uint32_t glyphcmds_len,
723 _cairo_xcb_connection_render_composite_glyphs_32 (cairo_xcb_connection_t *connection,
725 xcb_render_picture_t src,
726 xcb_render_picture_t dst,
727 xcb_render_pictformat_t mask_format,
728 xcb_render_glyphset_t glyphset,
731 uint32_t glyphcmds_len,
735 _cairo_xcb_connection_render_fill_rectangles (cairo_xcb_connection_t *connection,
737 xcb_render_picture_t dst,
738 xcb_render_color_t color,
740 xcb_rectangle_t *rects);
743 _cairo_xcb_connection_render_set_picture_transform (cairo_xcb_connection_t *connection,
744 xcb_render_picture_t picture,
745 xcb_render_transform_t *transform);
748 _cairo_xcb_connection_render_set_picture_filter (cairo_xcb_connection_t *connection,
749 xcb_render_picture_t picture,
753 xcb_render_fixed_t *values);
756 _cairo_xcb_connection_render_create_solid_fill (cairo_xcb_connection_t *connection,
757 xcb_render_picture_t picture,
758 xcb_render_color_t color);
761 _cairo_xcb_connection_render_create_linear_gradient (cairo_xcb_connection_t *connection,
762 xcb_render_picture_t picture,
763 xcb_render_pointfix_t p1,
764 xcb_render_pointfix_t p2,
766 xcb_render_fixed_t *stops,
767 xcb_render_color_t *colors);
770 _cairo_xcb_connection_render_create_radial_gradient (cairo_xcb_connection_t *connection,
771 xcb_render_picture_t picture,
772 xcb_render_pointfix_t inner,
773 xcb_render_pointfix_t outer,
774 xcb_render_fixed_t inner_radius,
775 xcb_render_fixed_t outer_radius,
777 xcb_render_fixed_t *stops,
778 xcb_render_color_t *colors);
781 _cairo_xcb_connection_render_create_conical_gradient (cairo_xcb_connection_t *c,
782 xcb_render_picture_t picture,
783 xcb_render_pointfix_t center,
784 xcb_render_fixed_t angle,
786 xcb_render_fixed_t *stops,
787 xcb_render_color_t *colors);
789 cairo_private cairo_xcb_picture_t *
790 _cairo_xcb_gaussian_filter (cairo_xcb_surface_t *target,
791 cairo_xcb_picture_t *orig_pict,
792 const cairo_pattern_t *pattern);
794 #if CAIRO_HAS_XLIB_XCB_FUNCTIONS
795 slim_hidden_proto (cairo_xcb_surface_create);
796 slim_hidden_proto (cairo_xcb_surface_create_for_bitmap);
797 slim_hidden_proto (cairo_xcb_surface_create_with_xrender_format);
798 slim_hidden_proto (cairo_xcb_surface_set_size);
799 slim_hidden_proto (cairo_xcb_surface_set_drawable);
800 slim_hidden_proto (cairo_xcb_device_debug_get_precision);
801 slim_hidden_proto_no_warn (cairo_xcb_device_debug_set_precision);
802 slim_hidden_proto_no_warn (cairo_xcb_device_debug_cap_xrender_version);
806 _cairo_xcb_resources_get (cairo_xcb_screen_t *screen,
807 cairo_xcb_resources_t *resources);
809 #endif /* CAIRO_XCB_PRIVATE_H */