aboutsummaryrefslogtreecommitdiff
path: root/composer/pattern.c
diff options
context:
space:
mode:
Diffstat (limited to 'composer/pattern.c')
-rw-r--r--composer/pattern.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/composer/pattern.c b/composer/pattern.c
index 819c585..42109fe 100644
--- a/composer/pattern.c
+++ b/composer/pattern.c
@@ -90,21 +90,31 @@ static void pattern_resize(t_pattern *x, t_int newsize) {
* Works only for the mastertrack (song_proxy)
*/
static void pattern_resize_cols(t_pattern* x, t_int newcols) {
- int j;
+ int i,j;
for(j = 0; j < x->x_rows_count; j++) {
if(&x->x_rows[j])
x->x_rows[j] = (t_atom*)resizebytes(x->x_rows[j], x->x_track->x_ncolumns, newcols);
else
x->x_rows[j] = (t_atom*)getbytes(sizeof(t_atom) * newcols);
}
+ if(newcols > x->x_track->x_ncolumns) {
+ for(j = 0; j < x->x_rows_count; j++) {
+ for(i = x->x_track->x_ncolumns; i < newcols; i++)
+ pattern_init_cell(&x->x_rows[j][i]);
+ }
+ }
x->x_track->x_ncolumns = newcols;
}
+static void pattern_init_cell(t_atom* a) {
+ SETSYMBOL(a, gensym("empty"));
+}
+
static void pattern_new_empty_row(t_pattern* x) {
t_atom* rowdata = (t_atom*)getbytes(sizeof(t_atom) * x->x_track->x_ncolumns);
int j;
for(j = 0; j < x->x_track->x_ncolumns; j++)
- SETSYMBOL(&(rowdata[j]), gensym("empty"));
+ pattern_init_cell(&rowdata[j]);
ArrayListAdd(x->x_rows, t_atom*, rowdata);
}