Mercurial > hg > dmlib
changeset 1317:2772c16622bb
Add checking of duplicate patterns in the optimization pass of xm2jss. Not
actually removing the dupes yet.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Sun, 20 Aug 2017 02:14:02 +0300 |
parents | 817a4d0c70b5 |
children | f8c45f7aac79 |
files | tools/xm2jss.c |
diffstat | 1 files changed, 22 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/tools/xm2jss.c Sun Aug 20 01:55:09 2017 +0300 +++ b/tools/xm2jss.c Sun Aug 20 02:14:02 2017 +0300 @@ -765,6 +765,17 @@ } +/* Check if two given patterns are dupes + */ +BOOL comparePattern(const JSSPattern *pat1, const JSSPattern *pat2) +{ + return + pat1->nrows == pat2->nrows && + pat1->nchannels == pat2->nchannels && + memcmp(pat1->data, pat2->data, sizeof(JSSNote) * pat1->nrows * pat1->nchannels) == 0; +} + + /* Optimize a given module */ JSSModule *optimizeModule(JSSModule *m) @@ -1075,6 +1086,17 @@ } // + // Check for duplicate patterns .. + // + dmMsg(1, "Checking for duplicate patterns ...\n"); + for (int pat1 = 0; pat1 < r->npatterns; pat1++) + for (int pat2 = 0; pat2 < r->npatterns; pat2++) + if (pat1 != pat2 && comparePattern(r->patterns[pat1], r->patterns[pat2])) + { + dmPrint(1, " * %d and %d are dupes.\n"); + } + + // // Remap orders list // for (i = 0; i < m->norders; i++)