Closed Bug 373632 Opened 18 years ago Closed 18 years ago

Skew transforms were broken by the cairo update in December

Categories

(Core :: SVG, defect)

x86
Windows XP
defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: jwatt, Unassigned)

References

()

Details

(Keywords: regression)

Attachments

(1 file)

The cairo update in December (bug 364742) broke the croczilla.com skew testcase: http://www.croczilla.com/svg/samples/skew1/skew1.xml
Jonathan, Can you provide me more details on the bug here? What it's supposed to look like? What it looks like with the bug? And can anyone provide more details on what "cairo update in December" means? Does someone have before-and-after cairo git revisions, (or nearest approximations). Thanks, -Carl PS. Oh, I see in the linked bug that the update was _to_ revision 473ae3aa9510b750f54cbf889180e3c4784da1b7 . Does someone know what it was _from_ ?
Carl: it was updated from cairo 1.2.0. Here's a simplified testcase. The problem only seems to occur for vertical lines with a skewX transform (skewY seems okay).
And when I say "vertical" I mean perfectly vertical. If there's a gradient then the bug doesn't show.
Attachment #258342 - Attachment description: testcase - should be a red line down the middle of the screen → testcase - should show a red line
Thanks for the tiny little test case---it let me easily replicate the bug with libsvg-cairo, (oddly it replicated with the image backend, but not the xlib backend). Also, the skew test in cairo's test suite never triggered. I'm bisecting now---and will report back on what I find. -Carl
That's great. Thanks Carl! One thing I noticed is that if you reduce the skewX to a small enough value then the line appears. If you have the skewX at just too big a value so the line doesn't show, then increase the line width, it again shows.
OK, so this bug is pretty sensitive to the input---that's why the skew test in our test suite didn't find it. Here's what git-bisect took me to: http://gitweb.freedesktop.org/?p=cairo;a=commitdiff;h=3d53f623faed4aed2517e207d77a6da7e3b74fbd So, this is probably just some bug in the tessellate_convex_quad function, (which I really thought I had right, but maybe I missed a case---it is one of those things that is surprisingly more complex than one would think it should be). I'll try to make as minimal a test case as possible, throw it into cairo's test suite, and then track down the bug here. Thanks again for the report, -Carl
Indeed, just some missed cases there. I've just pushed a fix out to cairo's central repository as can be seen here: http://gitweb.freedesktop.org/?p=cairo;a=commitdiff;h=1f3a5b4e1283cc0e55f7ea6baca6d0fe67fd14b1 And before that I pushed out a new test for cairo's test suite that triggers the bug to help us avoid ever regressing on this. Thanks again for the helpful report, -Carl
Super cool. Thanks for the speedy fix Carl!
This was fixed by the recent update to cairo-1.4.4.
Status: NEW → RESOLVED
Closed: 18 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: