- {
- if (cresc_type != ly_symbol2scm ("hairpin"))
- {
- // Fixme: should put value in error message.
- ly_display_scm (cresc_type);
- current_span_event_
- ->origin()->warning ("unknown crescendo style; defaulting to hairpin.");
- }
- current_spanner_ = make_spanner ("Hairpin",
- current_span_event_->self_scm ());
- if (finished_spanner_)
- {
- Pointer_group_interface::add_grob (finished_spanner_,
- ly_symbol2scm ("adjacent-hairpins"),
- current_spanner_);
-
- Pointer_group_interface::add_grob (current_spanner_,
- ly_symbol2scm ("adjacent-hairpins"),
- finished_spanner_);
- }
- }
+ {
+ if (cresc_type != ly_symbol2scm ("hairpin"))
+ {
+ string as_string = ly_scm_write_string (cresc_type);
+ current_span_event_
+ ->origin ()->warning (_f ("unknown crescendo style: %s\ndefaulting to hairpin.", as_string.c_str ()));
+ }
+ current_spanner_ = make_spanner ("Hairpin",
+ current_span_event_->self_scm ());
+ }
+ // if we have a break-dynamic-span event right after the start dynamic, break the new spanner immediately
+ if (end_new_spanner_)
+ {
+ current_spanner_->set_property ("spanner-broken", SCM_BOOL_T);
+ end_new_spanner_ = false;
+ }
+ if (finished_spanner_)
+ {
+ if (Hairpin::has_interface (finished_spanner_))
+ Pointer_group_interface::add_grob (finished_spanner_,
+ ly_symbol2scm ("adjacent-spanners"),
+ current_spanner_);
+ if (Hairpin::has_interface (current_spanner_))
+ Pointer_group_interface::add_grob (current_spanner_,
+ ly_symbol2scm ("adjacent-spanners"),
+ finished_spanner_);
+ }