mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
125 lines
4.1 KiB
Diff
125 lines
4.1 KiB
Diff
Index: cairo-xlib-surface.c
|
|
===================================================================
|
|
RCS file: /cvsroot/mozilla/gfx/cairo/cairo/src/cairo-xlib-surface.c,v
|
|
retrieving revision 1.41
|
|
diff -u -p -8 -r1.41 cairo-xlib-surface.c
|
|
--- cairo-xlib-surface.c 7 Apr 2008 05:09:45 -0000 1.41
|
|
+++ cairo-xlib-surface.c 7 Apr 2008 09:16:50 -0000
|
|
@@ -43,26 +43,16 @@
|
|
#include "cairo-clip-private.h"
|
|
|
|
#include <X11/Xutil.h> /* for XDestroyImage */
|
|
|
|
/* Xlib doesn't define a typedef, so define one ourselves */
|
|
typedef int (*cairo_xlib_error_func_t) (Display *display,
|
|
XErrorEvent *event);
|
|
|
|
-static cairo_surface_t *
|
|
-_cairo_xlib_surface_create_internal (Display *dpy,
|
|
- Drawable drawable,
|
|
- Screen *screen,
|
|
- Visual *visual,
|
|
- XRenderPictFormat *xrender_format,
|
|
- int width,
|
|
- int height,
|
|
- int depth);
|
|
-
|
|
static cairo_status_t
|
|
_cairo_xlib_surface_ensure_gc (cairo_xlib_surface_t *surface);
|
|
|
|
static void
|
|
_cairo_xlib_surface_ensure_src_picture (cairo_xlib_surface_t *surface);
|
|
|
|
static void
|
|
_cairo_xlib_surface_ensure_dst_picture (cairo_xlib_surface_t *surface);
|
|
@@ -76,16 +66,20 @@ _native_byte_order_lsb (void);
|
|
static cairo_int_status_t
|
|
_cairo_xlib_surface_show_glyphs (void *abstract_dst,
|
|
cairo_operator_t op,
|
|
cairo_pattern_t *src_pattern,
|
|
cairo_glyph_t *glyphs,
|
|
int num_glyphs,
|
|
cairo_scaled_font_t *scaled_font);
|
|
|
|
+#if CAIRO_HAS_XLIB_XRENDER_SURFACE
|
|
+slim_hidden_proto (cairo_xlib_surface_create_with_xrender_format);
|
|
+#endif
|
|
+
|
|
/*
|
|
* Instead of taking two round trips for each blending request,
|
|
* assume that if a particular drawable fails GetImage that it will
|
|
* fail for a "while"; use temporary pixmaps to avoid the errors
|
|
*/
|
|
|
|
#define CAIRO_ASSUME_PIXMAP 20
|
|
|
|
@@ -174,21 +168,19 @@ _cairo_xlib_surface_create_similar_with_
|
|
return NULL;
|
|
}
|
|
|
|
pix = XCreatePixmap (dpy, src->drawable,
|
|
width <= 0 ? 1 : width, height <= 0 ? 1 : height,
|
|
depth);
|
|
|
|
surface = (cairo_xlib_surface_t *)
|
|
- _cairo_xlib_surface_create_internal (dpy, pix,
|
|
- src->screen, src->visual,
|
|
- xrender_format,
|
|
- width, height,
|
|
- depth);
|
|
+ cairo_xlib_surface_create_with_xrender_format (dpy, pix, src->screen,
|
|
+ xrender_format,
|
|
+ width, height);
|
|
if (surface->base.status) {
|
|
XFreePixmap (dpy, pix);
|
|
return &surface->base;
|
|
}
|
|
|
|
surface->owns_pixmap = TRUE;
|
|
|
|
return &surface->base;
|
|
@@ -254,21 +246,20 @@ _cairo_xlib_surface_create_similar (void
|
|
/* We've got a compatible XRenderFormat now, which means the
|
|
* similar surface will match the existing surface as closely in
|
|
* visual/depth etc. as possible. */
|
|
pix = XCreatePixmap (src->dpy, src->drawable,
|
|
width <= 0 ? 1 : width, height <= 0 ? 1 : height,
|
|
xrender_format->depth);
|
|
|
|
surface = (cairo_xlib_surface_t *)
|
|
- _cairo_xlib_surface_create_internal (src->dpy, pix,
|
|
- src->screen, src->visual,
|
|
- xrender_format,
|
|
- width, height,
|
|
- xrender_format->depth);
|
|
+ cairo_xlib_surface_create_with_xrender_format (src->dpy, pix,
|
|
+ src->screen,
|
|
+ xrender_format,
|
|
+ width, height);
|
|
if (surface->base.status != CAIRO_STATUS_SUCCESS) {
|
|
XFreePixmap (src->dpy, pix);
|
|
return &surface->base;
|
|
}
|
|
|
|
surface->owns_pixmap = TRUE;
|
|
|
|
return &surface->base;
|
|
@@ -2396,16 +2387,17 @@ cairo_xlib_surface_create_with_xrender_f
|
|
Screen *screen,
|
|
XRenderPictFormat *format,
|
|
int width,
|
|
int height)
|
|
{
|
|
return _cairo_xlib_surface_create_internal (dpy, drawable, screen,
|
|
NULL, format, width, height, 0);
|
|
}
|
|
+slim_hidden_def (cairo_xlib_surface_create_with_xrender_format);
|
|
|
|
/**
|
|
* cairo_xlib_surface_get_xrender_format:
|
|
* @surface: an xlib surface
|
|
*
|
|
* Gets the X Render picture format that @surface uses for rendering with the
|
|
* X Render extension. If the surface was created by
|
|
* cairo_xlib_surface_create_with_xrender_format() originally, the return
|