diff options
author | Marc-André Lureau <marcandre.lureau@gmail.com> | 2012-12-05 16:15:32 +0100 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2012-12-17 14:01:41 +0100 |
commit | 07a54d704e62e2515db0b085d53d13a2f1b1b06a (patch) | |
tree | 0bb54e83794456d564c6c141bfbe5fdf10fc2500 | |
parent | 938b8a36b65e44c44ca29245437f8d7ac0f826e8 (diff) | |
download | qemu-07a54d704e62e2515db0b085d53d13a2f1b1b06a.tar.gz qemu-07a54d704e62e2515db0b085d53d13a2f1b1b06a.tar.bz2 qemu-07a54d704e62e2515db0b085d53d13a2f1b1b06a.zip |
spice-qemu-char: write to chardev whatever amount it can read
The current code waits until the chardev can read MIN(len, VMC_MAX)
But some chardev may never reach than amount, in fact some of them
will only ever accept write of 1. Fix the min computation and remove
the VMC_MAX constant.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
-rw-r--r-- | spice-qemu-char.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/spice-qemu-char.c b/spice-qemu-char.c index 09aa22d566..665efd30ee 100644 --- a/spice-qemu-char.c +++ b/spice-qemu-char.c @@ -14,8 +14,6 @@ } \ } while (0) -#define VMC_MAX_HOST_WRITE 2048 - typedef struct SpiceCharDriver { CharDriverState* chr; SpiceCharDeviceInstance sin; @@ -35,8 +33,8 @@ static int vmc_write(SpiceCharDeviceInstance *sin, const uint8_t *buf, int len) uint8_t* p = (uint8_t*)buf; while (len > 0) { - last_out = MIN(len, VMC_MAX_HOST_WRITE); - if (qemu_chr_be_can_write(scd->chr) < last_out) { + last_out = MIN(len, qemu_chr_be_can_write(scd->chr)); + if (last_out <= 0) { break; } qemu_chr_be_write(scd->chr, p, last_out); |