summaryrefslogtreecommitdiff
path: root/src/cairo-xlib-private.h
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2012-08-13 01:34:12 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2012-08-17 13:58:09 +0100
commit0bfd2acd35547fc2bd0de99cc67d153f0170697d (patch)
treec59ffaad038cb57115c68505b36aa6bc15d88fa7 /src/cairo-xlib-private.h
parent140fafed89508c4685f3a464c9dbe8df769f2411 (diff)
downloadcairo-0bfd2acd35547fc2bd0de99cc67d153f0170697d.tar.gz
xlib: Implement SHM fallbacks and fast upload paths
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'src/cairo-xlib-private.h')
-rw-r--r--src/cairo-xlib-private.h59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/cairo-xlib-private.h b/src/cairo-xlib-private.h
index 452283233..8e9c044db 100644
--- a/src/cairo-xlib-private.h
+++ b/src/cairo-xlib-private.h
@@ -52,8 +52,10 @@
#include <pixman.h>
typedef struct _cairo_xlib_display cairo_xlib_display_t;
+typedef struct _cairo_xlib_shm_display cairo_xlib_shm_display_t;
typedef struct _cairo_xlib_screen cairo_xlib_screen_t;
typedef struct _cairo_xlib_source cairo_xlib_source_t;
+typedef struct _cairo_xlib_proxy cairo_xlib_proxy_t;
typedef struct _cairo_xlib_surface cairo_xlib_surface_t;
/* size of color cube */
@@ -72,6 +74,8 @@ struct _cairo_xlib_display {
cairo_list_t screens;
cairo_list_t fonts;
+ cairo_xlib_shm_display_t *shm;
+
const cairo_compositor_t *compositor;
int render_major;
@@ -168,6 +172,8 @@ struct _cairo_xlib_surface {
Picture picture;
const cairo_compositor_t *compositor;
+ cairo_surface_t *shm;
+ int fallback;
cairo_xlib_display_t *display;
cairo_xlib_screen_t *screen;
@@ -205,6 +211,11 @@ struct _cairo_xlib_surface {
} embedded_source;
};
+struct _cairo_xlib_proxy {
+ struct _cairo_xlib_source source;
+ cairo_surface_t *owner;
+};
+
cairo_private cairo_status_t
_cairo_xlib_surface_get_gc (cairo_xlib_display_t *display,
cairo_xlib_surface_t *surface,
@@ -213,6 +224,12 @@ _cairo_xlib_surface_get_gc (cairo_xlib_display_t *display,
cairo_private cairo_device_t *
_cairo_xlib_device_create (Display *display);
+cairo_private void
+_cairo_xlib_display_init_shm (cairo_xlib_display_t *display);
+
+cairo_private void
+_cairo_xlib_display_fini_shm (cairo_xlib_display_t *display);
+
cairo_private cairo_xlib_screen_t *
_cairo_xlib_display_get_screen (cairo_xlib_display_t *display,
Screen *screen);
@@ -381,4 +398,46 @@ _cairo_xlib_surface_put_gc (cairo_xlib_display_t *display,
gc);
}
+cairo_private cairo_surface_t *
+_cairo_xlib_surface_create_similar_shm (void *surface,
+ cairo_format_t format,
+ int width, int height);
+
+cairo_private cairo_surface_t *
+_cairo_xlib_surface_get_shm (cairo_xlib_surface_t *surface);
+
+cairo_private cairo_int_status_t
+_cairo_xlib_surface_put_shm (cairo_xlib_surface_t *surface);
+
+cairo_private cairo_surface_t *
+_cairo_xlib_surface_create_shm_image (cairo_xlib_surface_t *surface,
+ pixman_format_code_t format,
+ int width, int height);
+
+cairo_private void
+_cairo_xlib_shm_surface_get_ximage (cairo_surface_t *surface,
+ XImage *ximage);
+
+cairo_private void *
+_cairo_xlib_shm_surface_get_obdata (cairo_surface_t *surface);
+
+cairo_private cairo_bool_t
+_cairo_xlib_shm_surface_is_active (cairo_surface_t *surface);
+
+cairo_private cairo_bool_t
+_cairo_xlib_shm_surface_is_idle (cairo_surface_t *surface);
+
+cairo_private Pixmap
+_cairo_xlib_shm_surface_get_pixmap (cairo_surface_t *surface);
+
+cairo_private void
+_cairo_xlib_shm_surface_mark_active (cairo_surface_t *surface);
+
+cairo_private XRenderPictFormat *
+_cairo_xlib_shm_surface_get_xrender_format (cairo_surface_t *surface);
+
+cairo_private pixman_format_code_t
+_pixman_format_for_xlib_surface (cairo_xlib_surface_t *surface);
+
+
#endif /* CAIRO_XLIB_PRIVATE_H */