diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2012-08-13 01:34:12 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2012-08-17 13:58:09 +0100 |
commit | 0bfd2acd35547fc2bd0de99cc67d153f0170697d (patch) | |
tree | c59ffaad038cb57115c68505b36aa6bc15d88fa7 /src/cairo-xlib-private.h | |
parent | 140fafed89508c4685f3a464c9dbe8df769f2411 (diff) | |
download | cairo-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.h | 59 |
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 */ |