summaryrefslogtreecommitdiff
path: root/src/cairo-xlib-private.h
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2009-09-01 23:12:43 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2009-09-01 23:12:43 +0100
commit7d1eb259f93d3f2f2e754b2b8b90cb88359b477d (patch)
treeb608289649a97f6d0088246c1e09abb9fc1ad17b /src/cairo-xlib-private.h
parentb8ddd66cf6e0d16383580c3c3398343f577b89fd (diff)
downloadcairo-7d1eb259f93d3f2f2e754b2b8b90cb88359b477d.tar.gz
[xlib] Make xlib_display_t private and rename xlib_screen_info_t
The issue Joonas was trying to solve was the unwanted inclusion of the inlines via cairo-freelist-private.h. Unwittingly he included cairoint.h from cairo-xlib-private.h instead, a far more heinous crime as that causes the boilerplate to try to use the hidden, private symbols. Instead we resolve this issue by making the cairo_xlib_display_t structure private to cairo-xlib-display.c and provide functions to manipulate the abstract data type. Whilst in the vicinity, we rename cairo_xlib_screen_info_t to cairo_xlib_screen_t for consistency and cleanliness.
Diffstat (limited to 'src/cairo-xlib-private.h')
-rw-r--r--src/cairo-xlib-private.h88
1 files changed, 52 insertions, 36 deletions
diff --git a/src/cairo-xlib-private.h b/src/cairo-xlib-private.h
index b980b0745..e92bb942e 100644
--- a/src/cairo-xlib-private.h
+++ b/src/cairo-xlib-private.h
@@ -41,11 +41,13 @@
#include "cairo-xlib-xrender-private.h"
#include "cairo-compiler-private.h"
-#include "cairo-freelist-private.h"
#include "cairo-mutex-private.h"
#include "cairo-reference-count-private.h"
+#include "cairo-types-private.h"
typedef struct _cairo_xlib_display cairo_xlib_display_t;
+typedef struct _cairo_xlib_screen cairo_xlib_screen_t;
+
typedef struct _cairo_xlib_hook cairo_xlib_hook_t;
typedef struct _cairo_xlib_job cairo_xlib_job_t;
typedef void (*cairo_xlib_notify_func) (Display *, void *);
@@ -56,28 +58,6 @@ struct _cairo_xlib_hook {
void (*func) (cairo_xlib_display_t *display, void *data);
};
-struct _cairo_xlib_display {
- cairo_xlib_display_t *next;
- cairo_reference_count_t ref_count;
- cairo_mutex_t mutex;
-
- Display *display;
- cairo_xlib_screen_info_t *screens;
-
- int render_major;
- int render_minor;
- XRenderPictFormat *cached_xrender_formats[CAIRO_FORMAT_A1 + 1];
-
- cairo_xlib_job_t *workqueue;
- cairo_freelist_t wq_freelist;
-
- cairo_xlib_hook_t *close_display_hooks;
- unsigned int buggy_gradients :1;
- unsigned int buggy_pad_reflect :1;
- unsigned int buggy_repeat :1;
- unsigned int closed :1;
-};
-
/* size of color cube */
#define CUBE_SIZE 6
/* size of gray ramp */
@@ -92,8 +72,8 @@ typedef struct _cairo_xlib_visual_info {
uint8_t gray8_to_pseudocolor[256];
} cairo_xlib_visual_info_t;
-struct _cairo_xlib_screen_info {
- cairo_xlib_screen_info_t *next;
+struct _cairo_xlib_screen {
+ cairo_xlib_screen_t *next;
cairo_reference_count_t ref_count;
cairo_mutex_t mutex;
@@ -115,10 +95,33 @@ _cairo_xlib_display_get (Display *display, cairo_xlib_display_t **out);
cairo_private cairo_xlib_display_t *
_cairo_xlib_display_reference (cairo_xlib_display_t *info);
+
cairo_private void
_cairo_xlib_display_destroy (cairo_xlib_display_t *info);
cairo_private void
+_cairo_xlib_display_lock (cairo_xlib_display_t *display);
+
+cairo_private void
+_cairo_xlib_display_unlock (cairo_xlib_display_t *display);
+
+cairo_private Display *
+_cairo_xlib_display_get_dpy (cairo_xlib_display_t *info);
+
+cairo_private void
+_cairo_xlib_display_add_screen (cairo_xlib_display_t *display,
+ cairo_xlib_screen_t *screen);
+
+cairo_private cairo_status_t
+_cairo_xlib_display_get_screen (cairo_xlib_display_t *display,
+ Screen *screen,
+ cairo_xlib_screen_t **out);
+
+cairo_private void
+_cairo_xlib_display_remove_screen (cairo_xlib_display_t *display,
+ cairo_xlib_screen_t *screen);
+
+cairo_private void
_cairo_xlib_add_close_display_hook (cairo_xlib_display_t *display, cairo_xlib_hook_t *hook);
cairo_private void
@@ -136,40 +139,53 @@ _cairo_xlib_display_queue_resource (cairo_xlib_display_t *display,
cairo_private void
_cairo_xlib_display_notify (cairo_xlib_display_t *display);
+cairo_private void
+_cairo_xlib_display_get_xrender_version (cairo_xlib_display_t *display,
+ int *major, int *minor);
+
+cairo_private cairo_bool_t
+_cairo_xlib_display_has_repeat (cairo_xlib_display_t *display);
+
+cairo_private cairo_bool_t
+_cairo_xlib_display_has_reflect (cairo_xlib_display_t *display);
+
+cairo_private cairo_bool_t
+_cairo_xlib_display_has_gradients (cairo_xlib_display_t *display);
+
cairo_private XRenderPictFormat *
_cairo_xlib_display_get_xrender_format (cairo_xlib_display_t *display,
cairo_format_t format);
cairo_private cairo_status_t
-_cairo_xlib_screen_info_get (cairo_xlib_display_t *display,
- Screen *screen,
- cairo_xlib_screen_info_t **out);
+_cairo_xlib_screen_get (Display *dpy,
+ Screen *screen,
+ cairo_xlib_screen_t **out);
-cairo_private cairo_xlib_screen_info_t *
-_cairo_xlib_screen_info_reference (cairo_xlib_screen_info_t *info);
+cairo_private cairo_xlib_screen_t *
+_cairo_xlib_screen_reference (cairo_xlib_screen_t *info);
cairo_private void
-_cairo_xlib_screen_info_destroy (cairo_xlib_screen_info_t *info);
+_cairo_xlib_screen_destroy (cairo_xlib_screen_t *info);
cairo_private void
-_cairo_xlib_screen_info_close_display (cairo_xlib_screen_info_t *info);
+_cairo_xlib_screen_close_display (cairo_xlib_screen_t *info);
cairo_private GC
-_cairo_xlib_screen_get_gc (cairo_xlib_screen_info_t *info,
+_cairo_xlib_screen_get_gc (cairo_xlib_screen_t *info,
unsigned int depth,
Drawable drawable,
unsigned int *need_reset);
cairo_private void
-_cairo_xlib_screen_put_gc (cairo_xlib_screen_info_t *info,
+_cairo_xlib_screen_put_gc (cairo_xlib_screen_t *info,
unsigned int depth,
GC gc,
cairo_bool_t reset_clip);
cairo_private cairo_font_options_t *
-_cairo_xlib_screen_get_font_options (cairo_xlib_screen_info_t *info);
+_cairo_xlib_screen_get_font_options (cairo_xlib_screen_t *info);
cairo_private cairo_status_t
-_cairo_xlib_screen_get_visual_info (cairo_xlib_screen_info_t *info,
+_cairo_xlib_screen_get_visual_info (cairo_xlib_screen_t *info,
Visual *visual,
cairo_xlib_visual_info_t **out);