Make sure all voices are deallocated on close.
This commit is contained in:
parent
7dcac1e40c
commit
32f42fe1e9
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: opl.c,v 1.4 1998/08/26 13:08:10 augustss Exp $ */
|
||||
/* $NetBSD: opl.c,v 1.5 1998/09/13 04:41:34 mycroft Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1998 The NetBSD Foundation, Inc.
|
||||
|
@ -183,12 +183,12 @@ opl_command(sc, offs, addr, data)
|
|||
if (sc->model == OPL_2)
|
||||
delay(10);
|
||||
else
|
||||
delay(2);
|
||||
delay(6);
|
||||
bus_space_write_1(sc->iot, sc->ioh, OPL_DATA+offs, data);
|
||||
if (sc->model == OPL_2)
|
||||
delay(30);
|
||||
else
|
||||
delay(2);
|
||||
delay(6);
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -347,13 +347,10 @@ oplsyn_close(ms)
|
|||
midisyn *ms;
|
||||
{
|
||||
struct opl_softc *sc = ms->data;
|
||||
int v;
|
||||
|
||||
DPRINTFN(2, ("oplsyn_close:\n"));
|
||||
/*opl_reset(ms->data);*/
|
||||
|
||||
for (v = 0; v < sc->syn.nvoice ; v++)
|
||||
oplsyn_noteoff(ms, v, 0, 0);
|
||||
/*opl_reset(ms->data);*/
|
||||
if (sc->spkrctl)
|
||||
sc->spkrctl(sc->spkrarg, 0);
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: midisyn.c,v 1.3 1998/08/17 21:16:12 augustss Exp $ */
|
||||
/* $NetBSD: midisyn.c,v 1.4 1998/09/13 04:41:34 mycroft Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1998 The NetBSD Foundation, Inc.
|
||||
|
@ -112,10 +112,18 @@ midisyn_close(addr)
|
|||
void *addr;
|
||||
{
|
||||
midisyn *ms = addr;
|
||||
struct midisyn_methods *fs;
|
||||
int v;
|
||||
|
||||
DPRINTF(("midisyn_close: ms=%p ms->mets=%p\n", ms, ms->mets));
|
||||
if (ms->mets->close)
|
||||
ms->mets->close(ms);
|
||||
fs = ms->mets;
|
||||
for (v = 0; v < ms->nvoice; v++)
|
||||
if (ms->voices[v].inuse) {
|
||||
fs->noteoff(ms, v, 0, 0);
|
||||
midisyn_freevoice(ms, v);
|
||||
}
|
||||
if (fs->close)
|
||||
fs->close(ms);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
Loading…
Reference in New Issue