[CSOUND-DEV:3592] RE: Opcode deinitialization
| Date | 2003-11-30 16:37 |
| From | "gogins@pipeline.com" |
| Subject | [CSOUND-DEV:3592] RE: Opcode deinitialization |
I never tried instrument 0, so I don't know about that. The function is called during cleanup if the function pointer in opds is not null. Original Message: ----------------- From: stevenyi stevenyi@csounds.com Date: Sun, 30 Nov 2003 00:11:14 -0800 To: csound-dev@eartha.mills.edu Subject: [CSOUND-DEV:3589] Opcode deinitialization Hi all, Could someone explain when opcode deinitialization functions are called? I tried building an opcode lib with an opcode that had thread of 1 (i-rate) and the deinitialization function was not called. This opcode was also in instrument 0, so I'm having a hard time figuring out if deinitialization functions only work for k/a-rate opcodes or only for opcodes not in instrument 0 or what. Any help on this greatly appreciated!!! Thanks, steven -------------------------------------------------------------------- mail2web - Check your email from the web at http://mail2web.com/ . |
| Date | 2003-12-01 01:30 |
| From | stevenyi |
| Subject | [CSOUND-DEV:3600] RE: Opcode deinitialization |
On Sun, 2003-11-30 at 08:37, gogins@pipeline.com wrote:
> I never tried instrument 0, so I don't know about that.
>
> The function is called during cleanup if the function pointer in opds is
> not null.
It seems that insert.c::orcompact only walks the nxtp chain of
performance opcodes and not the nxti chain of init-time opcodes. I
added a walk of the nxti chain and it correctly called the
deinitialization functions for my i-time opcodes. The code is as
follows:
off = ip->nxti;
while (off != NULL) {
if(off->dopadr) (*off->dopadr)(off);
off = off->nxti;
}
and is added after the nxtp walk in orcompact. I'll be checking this
code into csound5 cvs in a moment as I think it's a bug-fix. If it
seems good to everyone else, I'll add it to csound4 cvs as well.
Thanks,
steven
(who's happy to have his opcode plugin happily cleaning up after
itself! btw: I've learned from this opcode I've built how to redo the
deinitialization for sfont correctly for csound5 (which was in a
function added to mainRESET but is no longer accessible as sfont stuff
is in an opcode lib), so will be reworking that code too).
|
| Date | 2003-12-01 05:12 |
| From | stevenyi |
| Subject | [CSOUND-DEV:3598] RE: Opcode deinitialization |
Hi All, I mixed up when committing and ended up also committing my change in insert.c::orcompact in csound4 CVS. I will leave it in as I think it's a bug fix as mentioned in my previous email; if anyone wants it out I'll take it out promptly. Thanks, steven |
| Date | 2003-12-01 05:27 |
| From | stevenyi |
| Subject | [CSOUND-DEV:3599] RE: Opcode deinitialization |
Hmm... I'm not sure my first email got through, which would make my
second one not make any sense. I've attached the first email I sent
below.
steven
On Sun, 2003-11-30 at 08:37, gogins@pipeline.com wrote:
> I never tried instrument 0, so I don't know about that.
>
> The function is called during cleanup if the function pointer in opds
is
> not null.
It seems that insert.c::orcompact only walks the nxtp chain of
performance opcodes and not the nxti chain of init-time opcodes. I
added a walk of the nxti chain and it correctly called the
deinitialization functions for my i-time opcodes. The code is as
follows:
off = ip->nxti;
while (off != NULL) {
if(off->dopadr) (*off->dopadr)(off);
off = off->nxti;
}
and is added after the nxtp walk in orcompact. I'll be checking this
code into csound5 cvs in a moment as I think it's a bug-fix. If it
seems good to everyone else, I'll add it to csound4 cvs as well.
Thanks,
steven
(who's happy to have his opcode plugin happily cleaning up after
itself! btw: I've learned from this opcode I've built how to redo the
deinitialization for sfont correctly for csound5 (which was in a
function added to mainRESET but is no longer accessible as sfont stuff
is in an opcode lib), so will be reworking that code too). |