[cairo-bugs] [Bug 12210] build breaks on compilation after successful configuration
bugzilla-daemon at freedesktop.org
bugzilla-daemon at freedesktop.org
Fri Aug 31 14:11:41 PDT 2007
http://bugs.freedesktop.org/show_bug.cgi?id=12210
------- Comment #6 from freedesktop at behdad.org 2007-08-31 14:11 PST -------
(In reply to comment #5)
> (In reply to comment #4)
> > If you want to give it a try, just start #if CAIRO_HAS_XLIB_XRENDER_SURFACE
> > stuff out until it compiles and works...
> >
>
> I started to look at it, I am thinking about splitting cairo-xlib-surface.c
> in two, stuffing everything that requires render extensions
> into cairo-xlib-surface-xrender.c, and possibly export
> an interface in cairo-xlib-surface-xrender.h to make available to
> cairo-xlib-surface.c . Still very cloudy, but the idea is to clutter
> with preprocessor conditionals as little as possible.
I don't think separating them makes much sense.
> ATM I have wrapped part of the struct _cairo_xlib_surface declaration in
> cairo-xlib-surface-private.h in an if like this:
>
> #if CAIRO_HAS_XLIB_XRENDER_SURFACE
> int render_major;
> int render_minor;
> Picture dst_picture, src_picture;
> XRenderPictFormat *xrender_format;
> XTransform xtransform;
> #endif
>
> but maybe something better will come to mind.
> Tomorrow I'll start going through the functions in the .c in more
> detail, trying to understand how this thing works.
>
> Btw, I've noticed that functions are referenced in a backend table/structure,
> and in some cases some of these functions only have an implementation that
> requires render extensions. Should I just put NULL there in these cases
> and hope for the best? (that applications still work?)
If you do NULL, cairo will use the fallback code. So yes. But you can also
just return UNSUPPORTED. As I said, the current code does work with an X
server without Xrender. So, you already got all the answers in there. Just
follow what happens if Xrender is detected to be unavailable at run-time and
make it do the same at compile time.
> For example, I singled out
>
> _cairo_xlib_surface_create_similar,
> _cairo_xlib_surface_fill_rectangles,
> _cairo_xlib_surface_composite_trapezoids,
> _cairo_xlib_surface_is_similar
>
> as currently being render-ext-only (or so they look to me).
> Does this make any sense? The domain is very unfamiliar to me.
There's at least _cairo_xlib_show_glyphs too. show_glyphs and
composite_trapezoids should become UNSUPPORTED/NULL with no render I guess, the
rest should already have paths working without Xrender. is_similar definitely
should be available still.
> Claudio
>
--
Configure bugmail: http://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug, or are watching the QA contact.
More information about the cairo-bugs
mailing list