[cairo] regression in text rendering when not using Render xlib

Frederic Crozat fcrozat at mandriva.com
Tue Mar 20 02:20:16 PDT 2007

Le lundi 19 mars 2007 à 14:00 -0700, Carl Worth a écrit :
> Behdad asked me to take a look at this patch so we could get it in
> place for the cairo 1.4.2 release happening today.
> On Tue, 06 Mar 2007 09:47:01 +0100, Frederic Crozat wrote:
> > I wanted git to give me a combined patch with changelog but I'm still a
> > newbie for that ;)
> For future reference, you could have most easily done this by not
> making a second commit, but instead doing "git commit -a --amend" to
> replace the first commit with the final desired state.
> But even after you had made two commits, you could merge them by first
> resetting the current branch pointer back to the previous commit while
> leaving the working-tree content unchanged, then doing the --amend
> commit. That is:
> 	git reset HEAD~1
> 	git commit -a --amend
> As is, I could fabricate a commit message, ("Use union instead of cast
> for __m54 conversion to allow compilation without
> -fno-strict-aliasing" ? Is that accurate?).

Yes for commit message :)

And thanks for git tutorial.

> But meanwhile:
> > -		__m64 vdest = in_over(vsrc, vsrca, expand_alpha_rev (M64(m)), expand565(vd, 0));
> > +		__m64 vdest = in_over(vsrc, vsrca, expand_alpha_rev (to_m64(m)), expand565(vd, 0));
> So the patch only touches up one occurrence of M64 while leaving the
> M64 macro and 14 other callers to it in place. That can't be right,
> can it?

It is right, or at least, it is the only changes that are needed to fix
the issues we are seeing on x86 and x86_64.

I'm not a specialist in these strange (for me) casting stuff so I didn't
replace all occurrences of M64 with to_m64 since some of those cast
might be valid (according to our gcc guy who helped me debug that
initially), since I don't have the expertise in pixman and I didn't want
to break everything :)

Another thing is troubling me : 
we got hit by this bug because in our default rpm configuration, %
optflags contains -fomit-frame-pointer, so CFLAGS is exported when
running ./configure.

And after doing more checks, it seems -fno-strict-aliasing is correctly
added and used when building cairo code (src subdir) but not when
building pixman code, because CAIRO_CFLAGS (where -fno-strict-aliasing
is defined) is not used in pixman subdirectory.

I'm not sure which way is best to fix this : adding -fno-strict-aliasing
to CFLAGS in configure.in and not in CAIRO_CFLAGS (so pixman will use
it) or teach pixman to use CAIRO_CFLAGS.

Frederic Crozat <fcrozat at mandriva.com>

More information about the cairo mailing list