From: Han-Wen Nienhuys Date: Mon, 8 Jan 2007 08:33:32 +0000 (+0100) Subject: Revert moving columns_ into Spacing_options. Fixes core dumps. X-Git-Tag: release/2.11.10-1~15 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=7460765740db3ed400bedb9b1122fb18f03cb71e;p=lilypond.git Revert moving columns_ into Spacing_options. Fixes core dumps. --- diff --git a/input/regression/spacing-bar-whole-measure.ly b/input/regression/spacing-bar-whole-measure.ly index e2cb1d9f1d..f2bbb62cb3 100644 --- a/input/regression/spacing-bar-whole-measure.ly +++ b/input/regression/spacing-bar-whole-measure.ly @@ -17,5 +17,6 @@ s1 c2. c4 \time 3/4 + s2. c2. } diff --git a/lily/include/spacing-options.hh b/lily/include/spacing-options.hh index 1b5ee32db0..670f0e96f7 100644 --- a/lily/include/spacing-options.hh +++ b/lily/include/spacing-options.hh @@ -14,6 +14,11 @@ #include "rational.hh" #include "std-vector.hh" +/* + Various options for spacing. Usually inited from SpacingSpanner, but sometimes + from GraceSpacing. + */ + struct Spacing_options { bool packed_; @@ -23,7 +28,6 @@ struct Spacing_options Rational global_shortest_; Real increment_; Real shortest_duration_space_; - vector columns_; Spacing_options(); void init_from_grob (Grob *me); diff --git a/lily/include/spacing-spanner.hh b/lily/include/spacing-spanner.hh index 6723dfefbf..8a2d25eff0 100644 --- a/lily/include/spacing-spanner.hh +++ b/lily/include/spacing-spanner.hh @@ -26,10 +26,10 @@ private: static Real get_duration_space (Moment dur, Spacing_options const *, bool *); static Rational effective_shortest_duration (Grob *me, vector const &all); static void breakable_column_spacing (Grob *, Item *l, Item *r, Spacing_options const *); - static void prune_loose_columns (Grob *, Spacing_options *); + static void prune_loose_columns (Grob *, vector *cols, Spacing_options *); static void set_explicit_neighbor_columns (vector const &cols); static void set_implicit_neighbor_columns (vector const &cols); - static void generate_springs (Grob *me, Spacing_options const *); + static void generate_springs (Grob *me, vector const &cols, Spacing_options const *); static void musical_column_spacing (Grob *, Item *, Item *, Spacing_options const *); static bool fills_measure (Grob *, Item *, Item *); public: diff --git a/lily/spacing-basic.cc b/lily/spacing-basic.cc index 835801d94a..fe9fd7c144 100644 --- a/lily/spacing-basic.cc +++ b/lily/spacing-basic.cc @@ -164,7 +164,6 @@ Spacing_spanner::note_spacing (Grob *me, Grob *lc, Grob *rc, { Spacing_options grace_opts; grace_opts.init_from_grob (grace_spacing); - bool bla; dist = grace_opts.get_duration_space (delta_t.grace_part_, &bla); } diff --git a/lily/spacing-determine-loose-columns.cc b/lily/spacing-determine-loose-columns.cc index 11e9caa18d..4657afee31 100644 --- a/lily/spacing-determine-loose-columns.cc +++ b/lily/spacing-determine-loose-columns.cc @@ -194,9 +194,10 @@ Spacing_spanner::set_distances_for_loose_col (Grob *me, Grob *c, between. */ void -Spacing_spanner::prune_loose_columns (Grob *me, Spacing_options *options) - { - vector *cols = &options->columns_; +Spacing_spanner::prune_loose_columns (Grob *me, + vector *cols, + Spacing_options *options) +{ vector newcols; for (vsize i = 0; i < cols->size (); i++) diff --git a/lily/spacing-options.cc b/lily/spacing-options.cc index 9a73ad6d7f..c4e40a8837 100644 --- a/lily/spacing-options.cc +++ b/lily/spacing-options.cc @@ -35,8 +35,6 @@ Spacing_options::init_from_grob (Grob *me) global_shortest_ = shortest_dur.main_part_; else global_shortest_ = shortest_dur.grace_part_; - - columns_ = Spacing_spanner::get_columns (me); // ugh. } Spacing_options::Spacing_options () diff --git a/lily/spacing-spanner.cc b/lily/spacing-spanner.cc index fb91f0b010..ab623f29e8 100644 --- a/lily/spacing-spanner.cc +++ b/lily/spacing-spanner.cc @@ -54,12 +54,12 @@ Spacing_spanner::set_springs (SCM smob) */ Spacing_options options; options.init_from_grob (me); + vector cols = Spacing_spanner::get_columns (me); + set_explicit_neighbor_columns (cols); - set_explicit_neighbor_columns (options.columns_); - - prune_loose_columns (me, &options); - set_implicit_neighbor_columns (options.columns_); - generate_springs (me, &options); + prune_loose_columns (me, &cols, &options); + set_implicit_neighbor_columns (cols); + generate_springs (me, cols, &options); return SCM_UNSPECIFIED; } @@ -216,13 +216,14 @@ Spacing_spanner::generate_pair_spacing (Grob *me, void Spacing_spanner::generate_springs (Grob *me, + vector const &cols, Spacing_options const *options) { Paper_column *prev = 0; - for (vsize i = 0; i < options->columns_.size (); i++) + for (vsize i = 0; i < cols.size (); i++) { - Paper_column *col = dynamic_cast (options->columns_[i]); - Paper_column *next = (i < options->columns_.size()-1) ? dynamic_cast (options->columns_[i+1]) : 0; + Paper_column *col = dynamic_cast (cols[i]); + Paper_column *next = (i < cols.size()-1) ? dynamic_cast (cols[i+1]) : 0; if (i > 0) generate_pair_spacing (me, prev, col, next, options); @@ -396,12 +397,14 @@ Spacing_spanner::musical_column_spacing (Grob *me, bool Spacing_spanner::fills_measure (Grob *me, Item *l, Item *r) { - return false; System *sys = get_root_system (me); Grob *next = sys->column (r->get_column()->get_rank () + 1); if (!next) return false; + if (Paper_column::is_musical (next)) + return false; + Moment dt = Paper_column::when_mom (next) - Paper_column::when_mom (r); @@ -493,7 +496,8 @@ Spacing_spanner::breakable_column_spacing (Grob *me, Item *l, Item *r, } - if (fills_measure (me, l, r)) + if (Paper_column::is_musical (r) + && fills_measure (me, l, r)) { compound_space += 1.0; }