Re: Cairo 1.14.2 problems with Solaris 10, libXrender

"Andreas F. Borchert" <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <[email protected]>
On Wed, Aug 05, 2015 at 12:07:52PM -0700, Bill Spitzak wrote:
> >    #if !HAVE_XRENDERCREATESOLIDFILL
> >    #define XRenderCreateSolidFill _int_consume
> >    #endif
> 
> Exactly what purpose does this serve?

It replaces XRenderCreateSolidFill by _int_consume (a no-op function)
to avoid references to a function that is supposedly not defined
in -lXrender.

> In cairo there is only one use of this symbol in cairo-xlib-source.c,
> perhaps the if statement can be put around that instead.

There is a whole bunch of macros of this kind in cairo-xlib-xrender-private.h:

   #if !HAVE_XRENDERCREATESOLIDFILL
   #define XRenderCreateSolidFill				_int_consume
   #endif

   #if !HAVE_XRENDERCREATELINEARGRADIENT
   #define XRenderCreateLinearGradient			_int_consume

   typedef struct _XLinearGradient {
       XPointFixed p1;
       XPointFixed p2;
   } XLinearGradient;
   #endif

   #if !HAVE_XRENDERCREATERADIALGRADIENT
   #define XRenderCreateRadialGradient			_int_consume

   typedef struct _XCircle {
       XFixed x;
       XFixed y;
       XFixed radius;
   } XCircle;
   typedef struct _XRadialGradient {
       XCircle inner;
       XCircle outer;
   } XRadialGradient;
   #endif

   #if !HAVE_XRENDERCREATECONICALGRADIENT
   #define XRenderCreateConicalGradient			_int_consume

   typedef struct _XConicalGradient {
       XPointFixed center;
       XFixed angle; /* in degrees */
   } XConicalGradient;
   #endif

The obvious intention was to keep the code in cairo-xlib-source.c
tidy without myriads of #if directives. A better solution could
be the replacement of

   #define CAIRO_RENDER_HAS_GRADIENTS(surface) \
      CAIRO_RENDER_AT_LEAST((surface), 0, 10)

by

   #define CAIRO_RENDER_HAS_GRADIENTS(surface) \
      (HAVE_XRENDERCREATELINEARGRADIENT &&
	 CAIRO_RENDER_AT_LEAST((surface), 0, 10))

and likewise for all the other macros of this kind in cairo-xlib-private.h.

Regards, Andreas.

-- 
Dr. Andreas F. Borchert, Institut für Numerische Mathematik,
Universität Ulm, Helmholtzstraße 20, Zimmer 1.22, 89081 Ulm
-- 
cairo mailing list
[email protected]
http://lists.cairographics.org/mailman/listinfo/cairo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.