<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Aug 5, 2015 at 1:23 PM, Andreas F. Borchert <span dir="ltr"><<a href="mailto:andreas.borchert@uni-ulm.de" target="_blank">andreas.borchert@uni-ulm.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">The obvious intention was to keep the code in cairo-xlib-source.c<br>
tidy without myriads of #if directives. A better solution could<br>
be the replacement of<br>
<span class=""><br>
   #define CAIRO_RENDER_HAS_GRADIENTS(surface) \<br>
      CAIRO_RENDER_AT_LEAST((surface), 0, 10)<br>
<br>
</span>by<br>
<br>
   #define CAIRO_RENDER_HAS_GRADIENTS(surface) \<br>
      (HAVE_XRENDERCREATELINEARGRADIENT &&<br>
         CAIRO_RENDER_AT_LEAST((surface), 0, 10))<br>
<br>
and likewise for all the other macros of this kind in cairo-xlib-private.h.</blockquote><div><br></div><div>I think that is already being done, at least in some of the image code I was working on.<br><br></div><div>The problem is that if you write this:<br><br></div><div>   if (CAIRO_RENDER_HAS_GRADIENTS(surface))<br></div><div>      XRenderCreateLinearGraident(x);<br></div><div>   else<br>      ...<br><br></div><div>Actually that would still cause the compilation to fail because XRenderCreateLinearGradient is not defined, even though the compiler can tell that the if statement is always false. I assume that is the reason the #define was done this way.<br><br></div><div>It might be better to #define it to assert(false)?<br><br></div><div><br></div></div></div></div>