lilypond-auto
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Lilypond-auto] Issue 2801 in lilypond: Patch: Approximates cross-st


From: lilypond
Subject: Re: [Lilypond-auto] Issue 2801 in lilypond: Patch: Approximates cross-staff slurs in VerticalAxisGroup vertical-skylines.
Date: Mon, 17 Sep 2012 09:10:17 +0000


Comment #58 on issue 2801 by address@hidden: Patch: Approximates cross-staff slurs in VerticalAxisGroup vertical-skylines.
http://code.google.com/p/lilypond/issues/detail?id=2801

I think I've found the nature of the problem. I did a run of the regtests with a bunch of messages printed to std:err and it looks like every time there is a divergence, the order in which the grobs are read changes. This comes from sorting grobs by pointers and then running ::uniq. In theory this shouldn't matter, but in practice...

1) LilyPond requests pure height from grob X.
2) Grob X's pure height is somehow dependent on grob Y.
3) Depending on how a vector has been pointer-sorted...
3a) Grob Y's actual offset has not yet been calculated because of the way a given vector is sorted, in which is pure offset is returned. 3b) Grob Y's actual offset has been calculated because it was triggered first and stashed in dim_cache_. Grob::pure_relative_y_coordinate will always return this as opposed to the pure value.

So there you have it. One way to solve this may be to disallow Grob::pure_relative_y_coordinate from ever returning something out of dim_cache_. This has no bearing on the caching in item.cc, so it shouldn't result in too much of a slow-down. I'll run regtests on a patch doing this...




reply via email to

[Prev in Thread] Current Thread [Next in Thread]