From 9d03b3529816551ef7beea0f5cdc87d315cb0948 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Wed, 21 Jun 2000 17:07:28 +0200 Subject: [PATCH] patch::: 1.3.62.hwn1 * Bugfix: use deep copies for resetting keys. --- CHANGES | 2 ++ VERSION | 2 +- lily/include/lily-guile.hh | 3 +++ lily/include/rest-collision.hh | 4 ++-- lily/lily-guile.cc | 12 ++++++++++++ lily/local-key-engraver.cc | 7 +++++-- lily/rest-collision.cc | 7 ++++--- ly/engraver.ly | 5 +++-- 8 files changed, 32 insertions(+), 10 deletions(-) diff --git a/CHANGES b/CHANGES index 9d3aa6b170..b75707b55b 100644 --- a/CHANGES +++ b/CHANGES @@ -8,6 +8,8 @@ Score_element::after_line_breaking() * Removed --ignore-version option. Added --verbose option. +* Bugfix: use deep copies for resetting keys. + 1.3.61 ====== diff --git a/VERSION b/VERSION index e2d5f09aaf..68a66150c1 100644 --- a/VERSION +++ b/VERSION @@ -2,7 +2,7 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=3 PATCH_LEVEL=62 -MY_PATCH_LEVEL= +MY_PATCH_LEVEL=hwn1 # use the above to send patches: MY_PATCH_LEVEL is always empty for a # released version. diff --git a/lily/include/lily-guile.hh b/lily/include/lily-guile.hh index ba9751c4b5..7c91bbd276 100644 --- a/lily/include/lily-guile.hh +++ b/lily/include/lily-guile.hh @@ -29,6 +29,9 @@ A ly_B2A (B b); */ SCM ly_str02scm (char const*c); +SCM ly_deep_copy (SCM); + + SCM ly_symbol2scm (char const *); String ly_scm2string (SCM s); String ly_symbol2string (SCM); diff --git a/lily/include/rest-collision.hh b/lily/include/rest-collision.hh index 550ed5e0f4..10b8ac01c1 100644 --- a/lily/include/rest-collision.hh +++ b/lily/include/rest-collision.hh @@ -20,7 +20,7 @@ public: Rest_collision(SCM); - SCM member_before_line_breaking (); - static SCM before_line_breaking (SCM); + SCM member_after_line_breaking (); + static SCM after_line_breaking (SCM); }; #endif // REST_COLLISION_HH diff --git a/lily/lily-guile.cc b/lily/lily-guile.cc index e406055722..f02685cf44 100644 --- a/lily/lily-guile.cc +++ b/lily/lily-guile.cc @@ -404,3 +404,15 @@ init_functions () } ADD_SCM_INIT_FUNC(funcs, init_functions); + +SCM +ly_deep_copy (SCM l) +{ + if (gh_pair_p (l)) + { + return gh_cons (ly_deep_copy (gh_car (l)), ly_deep_copy (gh_cdr (l))); + } + else + return l; +} + diff --git a/lily/local-key-engraver.cc b/lily/local-key-engraver.cc index 172961dacf..302a1a0630 100644 --- a/lily/local-key-engraver.cc +++ b/lily/local-key-engraver.cc @@ -208,6 +208,9 @@ Local_key_engraver::acknowledge_element (Score_element_info info) } } +/* + ugh. deep_copy uses lots of space. + */ void Local_key_engraver::do_process_music() { @@ -218,11 +221,11 @@ Local_key_engraver::do_process_music() if (!mp) { if (!to_boolean (get_property ("noResetKey"))) - daddy_trans_l_->set_property ("localKeySignature", sig); + daddy_trans_l_->set_property ("localKeySignature", ly_deep_copy (sig)); } else if (last_keysig_ != sig) { - daddy_trans_l_->set_property ("localKeySignature", sig); + daddy_trans_l_->set_property ("localKeySignature", ly_deep_copy (sig)); } } diff --git a/lily/rest-collision.cc b/lily/rest-collision.cc index f7474eccb3..a72e0504e3 100644 --- a/lily/rest-collision.cc +++ b/lily/rest-collision.cc @@ -60,15 +60,16 @@ col2rhythmic_head (Note_column* c) return dynamic_cast (e); } -GLUE_SCORE_ELEMENT(Rest_collision,before_line_breaking); +GLUE_SCORE_ELEMENT(Rest_collision,after_line_breaking); + SCM -Rest_collision::member_before_line_breaking () +Rest_collision::member_after_line_breaking () { Link_array rest_l_arr = Pointer_group_interface__extract_elements (this, (Note_column*) 0, "rests"); Link_array ncol_l_arr = Pointer_group_interface__extract_elements (this, (Note_column*) 0, "notes"); - + /* handle rest-rest and rest-note collisions diff --git a/ly/engraver.ly b/ly/engraver.ly index 10a44a2db8..dcf9a7ebb1 100644 --- a/ly/engraver.ly +++ b/ly/engraver.ly @@ -549,6 +549,7 @@ ScoreContext = \translator { ) basicRestCollisionProperties = #`( + (after-line-breaking-callback . ,Rest_collision::after_line_breaking) ) basicScriptProperties = #`( (molecule-callback . ,Script::brew_molecule) @@ -615,10 +616,10 @@ ScoreContext = \translator { ) basicTieProperties = #`( (molecule-callback . ,Tie::brew_molecule) - (after-line-breaking-callback . ,System_start_delimiter::after_line_breaking) + (after-line-breaking-callback . ,Tie::after_line_breaking) ) basicTieColumnProperties = #`( - (after-line-breaking-callback .,Tie_engraver::after_line_breaking) + (after-line-breaking-callback . ,Tie_column::after_line_breaking) ) basicTupletSpannerProperties = #`( (number-gap . 2.0) -- 2.39.5