X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Ftime-signature-engraver.cc;h=ff335a0f974827ffc329fcba4eede009a45a81d3;hb=bd621ce77744a56b6d70ddd9eeae88ead5e7ffe4;hp=5b7b384e79b53fbc878ce6c3d850a59fe9c8478e;hpb=6b9bfd374643d1eed1ea158777d796c57a2bcd3a;p=lilypond.git diff --git a/lily/time-signature-engraver.cc b/lily/time-signature-engraver.cc index 5b7b384e79..ff335a0f97 100644 --- a/lily/time-signature-engraver.cc +++ b/lily/time-signature-engraver.cc @@ -3,13 +3,15 @@ source file of the GNU LilyPond music typesetter - (c) 1997--2002 Han-Wen Nienhuys + (c) 1997--2003 Han-Wen Nienhuys */ #include "time-signature.hh" -#include "command-request.hh" +#include "warn.hh" + #include "engraver.hh" #include "engraver-group-engraver.hh" +#include "misc.hh" /** generate time_signatures. @@ -40,8 +42,25 @@ Time_signature_engraver::process_music () not rigorously safe, since the value might get GC'd and reallocated in the same spot */ SCM fr= get_property ("timeSignatureFraction"); - if (!time_signature_ && last_time_fraction_ != fr) + if (!time_signature_ + && last_time_fraction_ != fr + && gh_pair_p (fr)) { + int den = gh_scm2int (gh_cdr (fr)); + if (den != (1 << intlog2 (den))) + { + /* + Todo: should make typecheck? + + OTOH, Tristan Keuris writes 8/20 in his Intermezzi. + */ + warning (_f("Found strange time signature %d/%d.", + den, + gh_scm2int (gh_car (fr)) + )); + } + + last_time_fraction_ = fr; time_signature_ = new Item (get_property ("TimeSignature")); time_signature_->set_grob_property ("fraction",fr); @@ -65,7 +84,7 @@ Time_signature_engraver::stop_translation_timestep () ENTER_DESCRIPTION(Time_signature_engraver, /* descr */ "Create a TimeSignature whenever @code{timeSignatureFraction} changes", /* creats*/ "TimeSignature", -/* accepts */ "general-music", +/* accepts */ "", /* acks */ "", /* reads */ "", /* write */ "");