aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/speakup/speakup_acntpc.c
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2017-03-04 15:01:55 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-03-09 17:28:20 +0100
commit89fc2ae80bb1eeca1d967723c1918c0b156508a0 (patch)
treec7024e665fd9ecb22c86cdf031b48516565ff019 /drivers/staging/speakup/speakup_acntpc.c
parentstaging: greybus: Remove unneeded header file (diff)
downloadlinux-dev-89fc2ae80bb1eeca1d967723c1918c0b156508a0.tar.xz
linux-dev-89fc2ae80bb1eeca1d967723c1918c0b156508a0.zip
speakup: extend synth buffer to 16bit unicode characters
This extends the synth buffer slots to 16bit, so as to hold 16bit unicode characters. synth_buffer_getc and synth_buffer_peek now return 16bit characters. Speech synthesizers which do not support characters beyond latin1 can use the synth_buffer_skip_nonlatin1() helper to skip the non-latin1 characters before getting or peeking. All synthesizers are made to use it for now. This makes synth_buffer_add take a 16bit character. For simplicity for now, synth_printf is left to using latin1 formats and strings. synth_putwc, synth_putwc_s, synth_putws and synth_putws_s helpers are however added to put 16bit characters and strings. Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org> Reviewed-by: Chris Brannon <chris@the-brannons.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/speakup/speakup_acntpc.c')
-rw-r--r--drivers/staging/speakup/speakup_acntpc.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/staging/speakup/speakup_acntpc.c b/drivers/staging/speakup/speakup_acntpc.c
index cf6fcd63498d..56ece087ff88 100644
--- a/drivers/staging/speakup/speakup_acntpc.c
+++ b/drivers/staging/speakup/speakup_acntpc.c
@@ -196,6 +196,7 @@ static void do_catch_up(struct spk_synth *synth)
synth->flush(synth);
continue;
}
+ synth_buffer_skip_nonlatin1();
if (synth_buffer_empty()) {
spin_unlock_irqrestore(&speakup_info.spinlock, flags);
break;