diff options
author | mescalinum <mescalinum@users.sourceforge.net> | 2009-08-20 02:28:19 +0000 |
---|---|---|
committer | mescalinum <mescalinum@users.sourceforge.net> | 2009-08-20 02:28:19 +0000 |
commit | a874e13115da648dae992634c5f6ee0912f136f3 (patch) | |
tree | 74a466d84582d502de0a48c5ad5cef2cc8710c47 /composer/pattern.c | |
parent | 1bdf5157d0707e89b1bce0a939fbcfcf33047816 (diff) |
- Added preliminary support for song view in window.tk
- Memory leak fixes
- Add song save/load code
svn path=/trunk/externals/ffext/; revision=11989
Diffstat (limited to 'composer/pattern.c')
-rw-r--r-- | composer/pattern.c | 14 |
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); } |