提交 1941ab1d 编写于 作者: S Samuel Thibault 提交者: Greg Kroah-Hartman

speakup: add the missing synth parameter to all io functions

So that we can avoid the spk_ttyio_synth global variable in the next
commit.
Signed-off-by: NSamuel Thibault <samuel.thibault@ens-lyon.org>
Link: https://lore.kernel.org/r/20210126222147.3848175-2-samuel.thibault@ens-lyon.orgSigned-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
上级 0fc99422
...@@ -27,11 +27,11 @@ static const struct old_serial_port *serstate; ...@@ -27,11 +27,11 @@ static const struct old_serial_port *serstate;
static int timeouts; static int timeouts;
static int spk_serial_out(struct spk_synth *in_synth, const char ch); static int spk_serial_out(struct spk_synth *in_synth, const char ch);
static void spk_serial_send_xchar(char ch); static void spk_serial_send_xchar(struct spk_synth *in_synth, char ch);
static void spk_serial_tiocmset(unsigned int set, unsigned int clear); static void spk_serial_tiocmset(struct spk_synth *in_synth, unsigned int set, unsigned int clear);
static unsigned char spk_serial_in(void); static unsigned char spk_serial_in(struct spk_synth *in_synth);
static unsigned char spk_serial_in_nowait(void); static unsigned char spk_serial_in_nowait(struct spk_synth *in_synth);
static void spk_serial_flush_buffer(void); static void spk_serial_flush_buffer(struct spk_synth *in_synth);
static int spk_serial_wait_for_xmitr(struct spk_synth *in_synth); static int spk_serial_wait_for_xmitr(struct spk_synth *in_synth);
struct spk_io_ops spk_serial_io_ops = { struct spk_io_ops spk_serial_io_ops = {
...@@ -150,7 +150,7 @@ static void start_serial_interrupt(int irq) ...@@ -150,7 +150,7 @@ static void start_serial_interrupt(int irq)
outb(1, speakup_info.port_tts + UART_FCR); /* Turn FIFO On */ outb(1, speakup_info.port_tts + UART_FCR); /* Turn FIFO On */
} }
static void spk_serial_send_xchar(char ch) static void spk_serial_send_xchar(struct spk_synth *synth, char ch)
{ {
int timeout = SPK_XMITR_TIMEOUT; int timeout = SPK_XMITR_TIMEOUT;
...@@ -162,7 +162,7 @@ static void spk_serial_send_xchar(char ch) ...@@ -162,7 +162,7 @@ static void spk_serial_send_xchar(char ch)
outb(ch, speakup_info.port_tts); outb(ch, speakup_info.port_tts);
} }
static void spk_serial_tiocmset(unsigned int set, unsigned int clear) static void spk_serial_tiocmset(struct spk_synth *in_synth, unsigned int set, unsigned int clear)
{ {
int old = inb(speakup_info.port_tts + UART_MCR); int old = inb(speakup_info.port_tts + UART_MCR);
...@@ -251,7 +251,7 @@ static int spk_serial_wait_for_xmitr(struct spk_synth *in_synth) ...@@ -251,7 +251,7 @@ static int spk_serial_wait_for_xmitr(struct spk_synth *in_synth)
return 1; return 1;
} }
static unsigned char spk_serial_in(void) static unsigned char spk_serial_in(struct spk_synth *in_synth)
{ {
int tmout = SPK_SERIAL_TIMEOUT; int tmout = SPK_SERIAL_TIMEOUT;
...@@ -265,7 +265,7 @@ static unsigned char spk_serial_in(void) ...@@ -265,7 +265,7 @@ static unsigned char spk_serial_in(void)
return inb_p(speakup_info.port_tts + UART_RX); return inb_p(speakup_info.port_tts + UART_RX);
} }
static unsigned char spk_serial_in_nowait(void) static unsigned char spk_serial_in_nowait(struct spk_synth *in_synth)
{ {
unsigned char lsr; unsigned char lsr;
...@@ -275,7 +275,7 @@ static unsigned char spk_serial_in_nowait(void) ...@@ -275,7 +275,7 @@ static unsigned char spk_serial_in_nowait(void)
return inb_p(speakup_info.port_tts + UART_RX); return inb_p(speakup_info.port_tts + UART_RX);
} }
static void spk_serial_flush_buffer(void) static void spk_serial_flush_buffer(struct spk_synth *in_synth)
{ {
/* TODO: flush the UART 16550 buffer */ /* TODO: flush the UART 16550 buffer */
} }
...@@ -307,7 +307,7 @@ const char *spk_serial_synth_immediate(struct spk_synth *synth, ...@@ -307,7 +307,7 @@ const char *spk_serial_synth_immediate(struct spk_synth *synth,
} }
EXPORT_SYMBOL_GPL(spk_serial_synth_immediate); EXPORT_SYMBOL_GPL(spk_serial_synth_immediate);
void spk_serial_release(void) void spk_serial_release(struct spk_synth *synth)
{ {
spk_stop_serial_interrupt(); spk_stop_serial_interrupt();
if (speakup_info.port_tts == 0) if (speakup_info.port_tts == 0)
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
#define PROCSPEECH '\r' #define PROCSPEECH '\r'
static int synth_probe(struct spk_synth *synth); static int synth_probe(struct spk_synth *synth);
static void accent_release(void); static void accent_release(struct spk_synth *synth);
static const char *synth_immediate(struct spk_synth *synth, const char *buf); static const char *synth_immediate(struct spk_synth *synth, const char *buf);
static void do_catch_up(struct spk_synth *synth); static void do_catch_up(struct spk_synth *synth);
static void synth_flush(struct spk_synth *synth); static void synth_flush(struct spk_synth *synth);
...@@ -294,7 +294,7 @@ static int synth_probe(struct spk_synth *synth) ...@@ -294,7 +294,7 @@ static int synth_probe(struct spk_synth *synth)
return 0; return 0;
} }
static void accent_release(void) static void accent_release(struct spk_synth *synth)
{ {
spk_stop_serial_interrupt(); spk_stop_serial_interrupt();
if (speakup_info.port_tts) if (speakup_info.port_tts)
......
...@@ -163,8 +163,8 @@ static void do_catch_up(struct spk_synth *synth) ...@@ -163,8 +163,8 @@ static void do_catch_up(struct spk_synth *synth)
full_time_val = full_time->u.n.value; full_time_val = full_time->u.n.value;
spin_unlock_irqrestore(&speakup_info.spinlock, flags); spin_unlock_irqrestore(&speakup_info.spinlock, flags);
if (!synth->io_ops->synth_out(synth, ch)) { if (!synth->io_ops->synth_out(synth, ch)) {
synth->io_ops->tiocmset(0, UART_MCR_RTS); synth->io_ops->tiocmset(synth, 0, UART_MCR_RTS);
synth->io_ops->tiocmset(UART_MCR_RTS, 0); synth->io_ops->tiocmset(synth, UART_MCR_RTS, 0);
schedule_timeout(msecs_to_jiffies(full_time_val)); schedule_timeout(msecs_to_jiffies(full_time_val));
continue; continue;
} }
......
...@@ -119,8 +119,8 @@ static struct spk_synth synth_audptr = { ...@@ -119,8 +119,8 @@ static struct spk_synth synth_audptr = {
static void synth_flush(struct spk_synth *synth) static void synth_flush(struct spk_synth *synth)
{ {
synth->io_ops->flush_buffer(); synth->io_ops->flush_buffer(synth);
synth->io_ops->send_xchar(SYNTH_CLEAR); synth->io_ops->send_xchar(synth, SYNTH_CLEAR);
synth->io_ops->synth_out(synth, PROCSPEECH); synth->io_ops->synth_out(synth, PROCSPEECH);
} }
...@@ -130,11 +130,11 @@ static void synth_version(struct spk_synth *synth) ...@@ -130,11 +130,11 @@ static void synth_version(struct spk_synth *synth)
char synth_id[40] = ""; char synth_id[40] = "";
synth->synth_immediate(synth, "\x05[Q]"); synth->synth_immediate(synth, "\x05[Q]");
synth_id[test] = synth->io_ops->synth_in(); synth_id[test] = synth->io_ops->synth_in(synth);
if (synth_id[test] == 'A') { if (synth_id[test] == 'A') {
do { do {
/* read version string from synth */ /* read version string from synth */
synth_id[++test] = synth->io_ops->synth_in(); synth_id[++test] = synth->io_ops->synth_in(synth);
} while (synth_id[test] != '\n' && test < 32); } while (synth_id[test] != '\n' && test < 32);
synth_id[++test] = 0x00; synth_id[++test] = 0x00;
} }
......
...@@ -218,7 +218,7 @@ static void do_catch_up(struct spk_synth *synth) ...@@ -218,7 +218,7 @@ static void do_catch_up(struct spk_synth *synth)
static void synth_flush(struct spk_synth *synth) static void synth_flush(struct spk_synth *synth)
{ {
in_escape = 0; in_escape = 0;
synth->io_ops->flush_buffer(); synth->io_ops->flush_buffer(synth);
synth->synth_immediate(synth, "\033P;10z\033\\"); synth->synth_immediate(synth, "\033P;10z\033\\");
} }
......
...@@ -125,7 +125,7 @@ enum { PRIMARY_DIC = 0, USER_DIC, COMMAND_DIC, ABBREV_DIC }; ...@@ -125,7 +125,7 @@ enum { PRIMARY_DIC = 0, USER_DIC, COMMAND_DIC, ABBREV_DIC };
#define SYNTH_IO_EXTENT 8 #define SYNTH_IO_EXTENT 8
static int synth_probe(struct spk_synth *synth); static int synth_probe(struct spk_synth *synth);
static void dtpc_release(void); static void dtpc_release(struct spk_synth *synth);
static const char *synth_immediate(struct spk_synth *synth, const char *buf); static const char *synth_immediate(struct spk_synth *synth, const char *buf);
static void do_catch_up(struct spk_synth *synth); static void do_catch_up(struct spk_synth *synth);
static void synth_flush(struct spk_synth *synth); static void synth_flush(struct spk_synth *synth);
...@@ -474,7 +474,7 @@ static int synth_probe(struct spk_synth *synth) ...@@ -474,7 +474,7 @@ static int synth_probe(struct spk_synth *synth)
return 0; return 0;
} }
static void dtpc_release(void) static void dtpc_release(struct spk_synth *synth)
{ {
spk_stop_serial_interrupt(); spk_stop_serial_interrupt();
if (speakup_info.port_tts) if (speakup_info.port_tts)
......
...@@ -289,7 +289,7 @@ static void synth_flush(struct spk_synth *synth) ...@@ -289,7 +289,7 @@ static void synth_flush(struct spk_synth *synth)
synth->io_ops->synth_out(synth, ']'); synth->io_ops->synth_out(synth, ']');
in_escape = 0; in_escape = 0;
is_flushing = 1; is_flushing = 1;
synth->io_ops->flush_buffer(); synth->io_ops->flush_buffer(synth);
synth->io_ops->synth_out(synth, SYNTH_CLEAR); synth->io_ops->synth_out(synth, SYNTH_CLEAR);
} }
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
#define PROCSPEECH 0x00 #define PROCSPEECH 0x00
static int synth_probe(struct spk_synth *synth); static int synth_probe(struct spk_synth *synth);
static void dtlk_release(void); static void dtlk_release(struct spk_synth *synth);
static const char *synth_immediate(struct spk_synth *synth, const char *buf); static const char *synth_immediate(struct spk_synth *synth, const char *buf);
static void do_catch_up(struct spk_synth *synth); static void do_catch_up(struct spk_synth *synth);
static void synth_flush(struct spk_synth *synth); static void synth_flush(struct spk_synth *synth);
...@@ -365,7 +365,7 @@ static int synth_probe(struct spk_synth *synth) ...@@ -365,7 +365,7 @@ static int synth_probe(struct spk_synth *synth)
return 0; return 0;
} }
static void dtlk_release(void) static void dtlk_release(struct spk_synth *synth)
{ {
spk_stop_serial_interrupt(); spk_stop_serial_interrupt();
if (speakup_info.port_tts) if (speakup_info.port_tts)
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
#define SYNTH_CLEAR 0x03 #define SYNTH_CLEAR 0x03
static int synth_probe(struct spk_synth *synth); static int synth_probe(struct spk_synth *synth);
static void keynote_release(void); static void keynote_release(struct spk_synth *synth);
static const char *synth_immediate(struct spk_synth *synth, const char *buf); static const char *synth_immediate(struct spk_synth *synth, const char *buf);
static void do_catch_up(struct spk_synth *synth); static void do_catch_up(struct spk_synth *synth);
static void synth_flush(struct spk_synth *synth); static void synth_flush(struct spk_synth *synth);
...@@ -295,7 +295,7 @@ static int synth_probe(struct spk_synth *synth) ...@@ -295,7 +295,7 @@ static int synth_probe(struct spk_synth *synth)
return 0; return 0;
} }
static void keynote_release(void) static void keynote_release(struct spk_synth *synth)
{ {
spk_stop_serial_interrupt(); spk_stop_serial_interrupt();
if (synth_port) if (synth_port)
......
...@@ -132,7 +132,7 @@ static void synth_interrogate(struct spk_synth *synth) ...@@ -132,7 +132,7 @@ static void synth_interrogate(struct spk_synth *synth)
synth->synth_immediate(synth, "\x18\x01?"); synth->synth_immediate(synth, "\x18\x01?");
for (i = 0; i < 50; i++) { for (i = 0; i < 50; i++) {
buf[i] = synth->io_ops->synth_in(); buf[i] = synth->io_ops->synth_in(synth);
if (i > 2 && buf[i] == 0x7f) if (i > 2 && buf[i] == 0x7f)
break; break;
} }
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
#define CLEAR_SYNTH 0x18 #define CLEAR_SYNTH 0x18
static int softsynth_probe(struct spk_synth *synth); static int softsynth_probe(struct spk_synth *synth);
static void softsynth_release(void); static void softsynth_release(struct spk_synth *synth);
static int softsynth_is_alive(struct spk_synth *synth); static int softsynth_is_alive(struct spk_synth *synth);
static unsigned char get_index(struct spk_synth *synth); static unsigned char get_index(struct spk_synth *synth);
...@@ -402,7 +402,7 @@ static int softsynth_probe(struct spk_synth *synth) ...@@ -402,7 +402,7 @@ static int softsynth_probe(struct spk_synth *synth)
return 0; return 0;
} }
static void softsynth_release(void) static void softsynth_release(struct spk_synth *synth)
{ {
misc_deregister(&synth_device); misc_deregister(&synth_device);
misc_deregister(&synthu_device); misc_deregister(&synthu_device);
......
...@@ -117,8 +117,8 @@ static struct spk_synth synth_spkout = { ...@@ -117,8 +117,8 @@ static struct spk_synth synth_spkout = {
static void synth_flush(struct spk_synth *synth) static void synth_flush(struct spk_synth *synth)
{ {
synth->io_ops->flush_buffer(); synth->io_ops->flush_buffer(synth);
synth->io_ops->send_xchar(SYNTH_CLEAR); synth->io_ops->send_xchar(synth, SYNTH_CLEAR);
} }
module_param_named(ser, synth_spkout.ser, int, 0444); module_param_named(ser, synth_spkout.ser, int, 0444);
......
...@@ -34,8 +34,8 @@ ...@@ -34,8 +34,8 @@
const struct old_serial_port *spk_serial_init(int index); const struct old_serial_port *spk_serial_init(int index);
void spk_stop_serial_interrupt(void); void spk_stop_serial_interrupt(void);
void spk_serial_release(void); void spk_serial_release(struct spk_synth *synth);
void spk_ttyio_release(void); void spk_ttyio_release(struct spk_synth *synth);
void spk_ttyio_register_ldisc(void); void spk_ttyio_register_ldisc(void);
void spk_ttyio_unregister_ldisc(void); void spk_ttyio_unregister_ldisc(void);
......
...@@ -114,11 +114,11 @@ static struct tty_ldisc_ops spk_ttyio_ldisc_ops = { ...@@ -114,11 +114,11 @@ static struct tty_ldisc_ops spk_ttyio_ldisc_ops = {
static int spk_ttyio_out(struct spk_synth *in_synth, const char ch); static int spk_ttyio_out(struct spk_synth *in_synth, const char ch);
static int spk_ttyio_out_unicode(struct spk_synth *in_synth, u16 ch); static int spk_ttyio_out_unicode(struct spk_synth *in_synth, u16 ch);
static void spk_ttyio_send_xchar(char ch); static void spk_ttyio_send_xchar(struct spk_synth *in_synth, char ch);
static void spk_ttyio_tiocmset(unsigned int set, unsigned int clear); static void spk_ttyio_tiocmset(struct spk_synth *in_synth, unsigned int set, unsigned int clear);
static unsigned char spk_ttyio_in(void); static unsigned char spk_ttyio_in(struct spk_synth *in_synth);
static unsigned char spk_ttyio_in_nowait(void); static unsigned char spk_ttyio_in_nowait(struct spk_synth *in_synth);
static void spk_ttyio_flush_buffer(void); static void spk_ttyio_flush_buffer(struct spk_synth *in_synth);
static int spk_ttyio_wait_for_xmitr(struct spk_synth *in_synth); static int spk_ttyio_wait_for_xmitr(struct spk_synth *in_synth);
struct spk_io_ops spk_ttyio_ops = { struct spk_io_ops spk_ttyio_ops = {
...@@ -281,7 +281,7 @@ static int check_tty(struct tty_struct *tty) ...@@ -281,7 +281,7 @@ static int check_tty(struct tty_struct *tty)
return 0; return 0;
} }
static void spk_ttyio_send_xchar(char ch) static void spk_ttyio_send_xchar(struct spk_synth *in_synth, char ch)
{ {
mutex_lock(&speakup_tty_mutex); mutex_lock(&speakup_tty_mutex);
if (check_tty(speakup_tty)) { if (check_tty(speakup_tty)) {
...@@ -294,7 +294,7 @@ static void spk_ttyio_send_xchar(char ch) ...@@ -294,7 +294,7 @@ static void spk_ttyio_send_xchar(char ch)
mutex_unlock(&speakup_tty_mutex); mutex_unlock(&speakup_tty_mutex);
} }
static void spk_ttyio_tiocmset(unsigned int set, unsigned int clear) static void spk_ttyio_tiocmset(struct spk_synth *in_synth, unsigned int set, unsigned int clear)
{ {
mutex_lock(&speakup_tty_mutex); mutex_lock(&speakup_tty_mutex);
if (check_tty(speakup_tty)) { if (check_tty(speakup_tty)) {
...@@ -312,7 +312,7 @@ static int spk_ttyio_wait_for_xmitr(struct spk_synth *in_synth) ...@@ -312,7 +312,7 @@ static int spk_ttyio_wait_for_xmitr(struct spk_synth *in_synth)
return 1; return 1;
} }
static unsigned char ttyio_in(int timeout) static unsigned char ttyio_in(struct spk_synth *in_synth, int timeout)
{ {
struct spk_ldisc_data *ldisc_data = speakup_tty->disc_data; struct spk_ldisc_data *ldisc_data = speakup_tty->disc_data;
char rv; char rv;
...@@ -339,19 +339,19 @@ static unsigned char ttyio_in(int timeout) ...@@ -339,19 +339,19 @@ static unsigned char ttyio_in(int timeout)
return rv; return rv;
} }
static unsigned char spk_ttyio_in(void) static unsigned char spk_ttyio_in(struct spk_synth *in_synth)
{ {
return ttyio_in(SPK_SYNTH_TIMEOUT); return ttyio_in(in_synth, SPK_SYNTH_TIMEOUT);
} }
static unsigned char spk_ttyio_in_nowait(void) static unsigned char spk_ttyio_in_nowait(struct spk_synth *in_synth)
{ {
u8 rv = ttyio_in(0); u8 rv = ttyio_in(in_synth, 0);
return (rv == 0xff) ? 0 : rv; return (rv == 0xff) ? 0 : rv;
} }
static void spk_ttyio_flush_buffer(void) static void spk_ttyio_flush_buffer(struct spk_synth *in_synth)
{ {
mutex_lock(&speakup_tty_mutex); mutex_lock(&speakup_tty_mutex);
if (check_tty(speakup_tty)) { if (check_tty(speakup_tty)) {
...@@ -379,7 +379,7 @@ int spk_ttyio_synth_probe(struct spk_synth *synth) ...@@ -379,7 +379,7 @@ int spk_ttyio_synth_probe(struct spk_synth *synth)
} }
EXPORT_SYMBOL_GPL(spk_ttyio_synth_probe); EXPORT_SYMBOL_GPL(spk_ttyio_synth_probe);
void spk_ttyio_release(void) void spk_ttyio_release(struct spk_synth *in_synth)
{ {
if (!speakup_tty) if (!speakup_tty)
return; return;
...@@ -395,15 +395,15 @@ void spk_ttyio_release(void) ...@@ -395,15 +395,15 @@ void spk_ttyio_release(void)
} }
EXPORT_SYMBOL_GPL(spk_ttyio_release); EXPORT_SYMBOL_GPL(spk_ttyio_release);
const char *spk_ttyio_synth_immediate(struct spk_synth *synth, const char *buff) const char *spk_ttyio_synth_immediate(struct spk_synth *in_synth, const char *buff)
{ {
u_char ch; u_char ch;
while ((ch = *buff)) { while ((ch = *buff)) {
if (ch == '\n') if (ch == '\n')
ch = synth->procspeech; ch = in_synth->procspeech;
if (tty_write_room(speakup_tty) < 1 || if (tty_write_room(speakup_tty) < 1 ||
!synth->io_ops->synth_out(synth, ch)) !in_synth->io_ops->synth_out(in_synth, ch))
return buff; return buff;
buff++; buff++;
} }
......
...@@ -157,11 +157,11 @@ struct spk_synth; ...@@ -157,11 +157,11 @@ struct spk_synth;
struct spk_io_ops { struct spk_io_ops {
int (*synth_out)(struct spk_synth *synth, const char ch); int (*synth_out)(struct spk_synth *synth, const char ch);
int (*synth_out_unicode)(struct spk_synth *synth, u16 ch); int (*synth_out_unicode)(struct spk_synth *synth, u16 ch);
void (*send_xchar)(char ch); void (*send_xchar)(struct spk_synth *synth, char ch);
void (*tiocmset)(unsigned int set, unsigned int clear); void (*tiocmset)(struct spk_synth *synth, unsigned int set, unsigned int clear);
unsigned char (*synth_in)(void); unsigned char (*synth_in)(struct spk_synth *synth);
unsigned char (*synth_in_nowait)(void); unsigned char (*synth_in_nowait)(struct spk_synth *synth);
void (*flush_buffer)(void); void (*flush_buffer)(struct spk_synth *synth);
int (*wait_for_xmitr)(struct spk_synth *synth); int (*wait_for_xmitr)(struct spk_synth *synth);
}; };
...@@ -188,7 +188,7 @@ struct spk_synth { ...@@ -188,7 +188,7 @@ struct spk_synth {
int *default_vol; int *default_vol;
struct spk_io_ops *io_ops; struct spk_io_ops *io_ops;
int (*probe)(struct spk_synth *synth); int (*probe)(struct spk_synth *synth);
void (*release)(void); void (*release)(struct spk_synth *synth);
const char *(*synth_immediate)(struct spk_synth *synth, const char *(*synth_immediate)(struct spk_synth *synth,
const char *buff); const char *buff);
void (*catch_up)(struct spk_synth *synth); void (*catch_up)(struct spk_synth *synth);
......
...@@ -137,14 +137,14 @@ EXPORT_SYMBOL_GPL(spk_do_catch_up_unicode); ...@@ -137,14 +137,14 @@ EXPORT_SYMBOL_GPL(spk_do_catch_up_unicode);
void spk_synth_flush(struct spk_synth *synth) void spk_synth_flush(struct spk_synth *synth)
{ {
synth->io_ops->flush_buffer(); synth->io_ops->flush_buffer(synth);
synth->io_ops->synth_out(synth, synth->clear); synth->io_ops->synth_out(synth, synth->clear);
} }
EXPORT_SYMBOL_GPL(spk_synth_flush); EXPORT_SYMBOL_GPL(spk_synth_flush);
unsigned char spk_synth_get_index(struct spk_synth *synth) unsigned char spk_synth_get_index(struct spk_synth *synth)
{ {
return synth->io_ops->synth_in_nowait(); return synth->io_ops->synth_in_nowait(synth);
} }
EXPORT_SYMBOL_GPL(spk_synth_get_index); EXPORT_SYMBOL_GPL(spk_synth_get_index);
...@@ -440,7 +440,7 @@ void synth_release(void) ...@@ -440,7 +440,7 @@ void synth_release(void)
sysfs_remove_group(speakup_kobj, &synth->attributes); sysfs_remove_group(speakup_kobj, &synth->attributes);
for (var = synth->vars; var->var_id != MAXVARS; var++) for (var = synth->vars; var->var_id != MAXVARS; var++)
speakup_unregister_var(var->var_id); speakup_unregister_var(var->var_id);
synth->release(); synth->release(synth);
synth = NULL; synth = NULL;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册