aboutsummaryrefslogtreecommitdiff
path: root/composer/pattern.c
diff options
context:
space:
mode:
authormescalinum <mescalinum@users.sourceforge.net>2009-08-20 02:28:19 +0000
committermescalinum <mescalinum@users.sourceforge.net>2009-08-20 02:28:19 +0000
commita874e13115da648dae992634c5f6ee0912f136f3 (patch)
tree74a466d84582d502de0a48c5ad5cef2cc8710c47 /composer/pattern.c
parent1bdf5157d0707e89b1bce0a939fbcfcf33047816 (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.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);
}