[cairo] cairomm 1.6.0 fails with cairo 1.6.4 + quartz on Mac OS X
Murray Cumming
murrayc at murrayc.com
Fri Apr 25 08:59:55 PDT 2008
On Fri, 2008-04-25 at 10:37 -0500, Jonathon Jongsma wrote:
> On Fri, Apr 25, 2008 at 10:24 AM, Carl Worth <cworth at cworth.org> wrote:
> > On Fri, 25 Apr 2008 17:06:42 +0200, Murray Cumming wrote:
> > > On Thu, 2008-04-24 at 12:41 -0400, Benjamin Reed wrote:
> >
> > > > I'm not sure how to untangle this stuff, is it impossible to support
> > > > both X and quartz in the same cairo installation?
> > >
> > > I guess so. If it works for cairo then it should work for cairomm.
> >
> > Hi Murray,
> >
> > Long ago (before cairo 1.0) we had a single "cairo.h" file that gave
> > you all the backends enabled in your cairo build.
> >
> > Then we discovered that many systems, (X, Microsoft Windows, and
> > Apple), all have namespace-hating header files that collide badly,
> > (with things like Window, Cursor, etc.).
> >
> > So for cairo, we know provide separate cairo-xlib.h, cairo-win32.h,
> > and cairo-quartz.h and applications can pull those in only as needed.
> >
> > I don't know exactly what's happening here, but if cairomm is pulling
> > in several of those system-specific header files automatically, then
> > that's a problem.
> >
> > -Carl
>
> Yes, we do essentially the same thing in cairomm (we have separate
> xlib_surface.h and quartz_surface.h headers). The problem in this
> case is that we currently have some code in
> Cairo::Context::get_target() that checks which kind of surface it is
> and creates the appropriate wrapper type for that surface (e.g. an
> XlibSurface, a QuartzSurface, ImageSurface, etc.). So that's
> obviously pulling in all of the platform surface types. (Note that
> this is in the source file, not a header, so it's not a problem for
> users, only for building cairomm itself). But it appears that we may
> need to find a smarter way to do this...
Our C++ headers should generally avoid including any C headers
(including C++ headers), so maybe reducing that would help a bit.
Or maybe that .cc file is just the place to put some #ifdefs or #undefs.
--
murrayc at murrayc.com
www.murrayc.com
www.openismus.com
More information about the cairo
mailing list