diff --git a/audio/audio.c b/audio/audio.c index 7fc3aa9d16..56fae55047 100644 --- a/audio/audio.c +++ b/audio/audio.c @@ -1390,6 +1390,7 @@ void *audio_generic_get_buffer_in(HWVoiceIn *hw, size_t *size) size_t read = hw->pcm_ops->read(hw, hw->buf_emul + hw->pos_emul, read_len); hw->pending_emul += read; + hw->pos_emul = (hw->pos_emul + read) % hw->size_emul; if (read < read_len) { break; } diff --git a/hw/display/xlnx_dp.c b/hw/display/xlnx_dp.c index fde3b21ea5..7058443797 100644 --- a/hw/display/xlnx_dp.c +++ b/hw/display/xlnx_dp.c @@ -394,13 +394,18 @@ static void xlnx_dp_audio_callback(void *opaque, int avail) written = AUD_write(s->amixer_output_stream, &s->out_buffer[s->data_ptr], s->byte_left); } else { + int len_to_copy; /* * There is nothing to play.. We don't have any data! Fill the * buffer with zero's and send it. */ written = 0; - memset(s->out_buffer, 0, 1024); - AUD_write(s->amixer_output_stream, s->out_buffer, 1024); + while (avail) { + len_to_copy = MIN(AUD_CHBUF_MAX_DEPTH, avail); + memset(s->out_buffer, 0, len_to_copy); + avail -= AUD_write(s->amixer_output_stream, s->out_buffer, + len_to_copy); + } } } else { written = AUD_write(s->amixer_output_stream, diff --git a/po/zh_CN.po b/po/zh_CN.po index b25e8e3c02..38de6a4f2a 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -66,7 +66,7 @@ msgid "Detach Tab" msgstr "分离标签页" msgid "Show Menubar" -msgstr "" +msgstr "显示菜单栏" msgid "_Machine" msgstr "虚拟机(_M)" diff --git a/ui/gtk.c b/ui/gtk.c index 2f23922afc..692ccc7bbb 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -2215,6 +2215,7 @@ static void gtk_display_init(DisplayState *ds, DisplayOptions *opts) setlocale(LC_MESSAGES, ""); setlocale(LC_CTYPE, "C.UTF-8"); bindtextdomain("qemu", CONFIG_QEMU_LOCALEDIR); + bind_textdomain_codeset("qemu", "UTF-8"); textdomain("qemu"); window_display = gtk_widget_get_display(s->window);