lilypond-devel
[Top][All Lists]
Advanced

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

Re: Reduces algorithm time by prefinding footnoted grobs (issue4213042)


From: n . puttock
Subject: Re: Reduces algorithm time by prefinding footnoted grobs (issue4213042)
Date: Tue, 01 Mar 2011 22:15:37 +0000


http://codereview.appspot.com/4213042/diff/24025/lily/balloon-engraver.cc
File lily/balloon-engraver.cc (right):

http://codereview.appspot.com/4213042/diff/24025/lily/balloon-engraver.cc#newcode65
lily/balloon-engraver.cc:65: Pointer_group_interface::add_grob (g,
ly_symbol2scm ("annotations"), b);
remove (and all related code)

http://codereview.appspot.com/4213042/diff/24025/lily/grob.cc
File lily/grob.cc (right):

http://codereview.appspot.com/4213042/diff/24025/lily/grob.cc#newcode257
lily/grob.cc:257: extract_grob_set (this, "annotations", annotations);
I'm not sure what you were thinking here, but this would never get
called anyway since object_alist_ is empty :)

http://codereview.appspot.com/4213042/diff/24025/lily/page-spacing.cc
File lily/page-spacing.cc (right):

http://codereview.appspot.com/4213042/diff/24025/lily/page-spacing.cc#newcode87
lily/page-spacing.cc:87: return footnote_height;
This produces incorrect results in some cases, since footnotes_ is
initialized before line breaking has taken place.  For example, compare
the return values for the following snippets:

\relative c' {
  \repeat unfold 3 \footnoteGrob #'NoteHead #'(0 . 2) "foo" "bar"
  c1
}

\new Staff \with { \consists "Footnote_engraver" }
\relative c' {
  \footnoteGrob #'TimeSignature #'(0 . 2) "foo" "bar"
  c1
}

http://codereview.appspot.com/4213042/diff/24025/lily/system.cc
File lily/system.cc (right):

http://codereview.appspot.com/4213042/diff/24025/lily/system.cc#newcode237
lily/system.cc:237: && all_elts[i]->is_live ())
This doesn't do anything: it's the parent which is suicided in
Item::break_visible (), but that happens later than this.

http://codereview.appspot.com/4213042/diff/24025/lily/system.cc#newcode257
lily/system.cc:257: if (!footnote_grobs_[j]->is_live ())
See comment above.

http://codereview.appspot.com/4213042/diff/24025/lily/system.cc#newcode276
lily/system.cc:276: if (!Text_interface::is_markup (footnote_markup))
This is where the defunct footnotes are removed: since you're using the
footnote_grobs_ cache instead of storing the stencils, any FootnoteItem
whose parent has been suicided due to break-visibility settings will
also be suicided in Grob::handle_broken_dependencies (): thus
footnote-text returns '().

http://codereview.appspot.com/4213042/



reply via email to

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