From: Alon Levy Date: Fri, 24 Feb 2012 21:19:25 +0000 (+0200) Subject: qxl: fix spice+sdl no cursor regression X-Git-Tag: v1.1-rc0~291^2~10 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bb5a8cd5b0aec0286c5e749803083de22c2b0be6;p=thirdparty%2Fqemu.git qxl: fix spice+sdl no cursor regression regression introduced by 075360945860ad9bdd491921954b383bf762b0e5, v2: lock around qemu_spice_cursor_refresh_unlocked Reported-by: Fabiano FidĂȘncio Signed-off-by: Alon Levy Signed-off-by: Gerd Hoffmann --- diff --git a/hw/qxl.c b/hw/qxl.c index f643667205e..0bbf0e8c164 100644 --- a/hw/qxl.c +++ b/hw/qxl.c @@ -1545,6 +1545,10 @@ static void display_refresh(struct DisplayState *ds) { if (qxl0->mode == QXL_MODE_VGA) { qemu_spice_display_refresh(&qxl0->ssd); + } else { + qemu_mutex_lock(&qxl0->ssd.lock); + qemu_spice_cursor_refresh_unlocked(&qxl0->ssd); + qemu_mutex_unlock(&qxl0->ssd.lock); } } diff --git a/ui/spice-display.c b/ui/spice-display.c index 6c302a39094..c6e61d84ea6 100644 --- a/ui/spice-display.c +++ b/ui/spice-display.c @@ -317,16 +317,8 @@ void qemu_spice_display_resize(SimpleSpiceDisplay *ssd) ssd->notify++; } -void qemu_spice_display_refresh(SimpleSpiceDisplay *ssd) +void qemu_spice_cursor_refresh_unlocked(SimpleSpiceDisplay *ssd) { - dprint(3, "%s:\n", __FUNCTION__); - vga_hw_update(); - - qemu_mutex_lock(&ssd->lock); - if (ssd->update == NULL) { - ssd->update = qemu_spice_create_update(ssd); - ssd->notify++; - } if (ssd->cursor) { ssd->ds->cursor_define(ssd->cursor); cursor_put(ssd->cursor); @@ -337,6 +329,19 @@ void qemu_spice_display_refresh(SimpleSpiceDisplay *ssd) ssd->mouse_x = -1; ssd->mouse_y = -1; } +} + +void qemu_spice_display_refresh(SimpleSpiceDisplay *ssd) +{ + dprint(3, "%s:\n", __func__); + vga_hw_update(); + + qemu_mutex_lock(&ssd->lock); + if (ssd->update == NULL) { + ssd->update = qemu_spice_create_update(ssd); + ssd->notify++; + } + qemu_spice_cursor_refresh_unlocked(ssd); qemu_mutex_unlock(&ssd->lock); if (ssd->notify) { diff --git a/ui/spice-display.h b/ui/spice-display.h index 5e52df99beb..a23bfc8502a 100644 --- a/ui/spice-display.h +++ b/ui/spice-display.h @@ -97,6 +97,7 @@ void qemu_spice_display_update(SimpleSpiceDisplay *ssd, int x, int y, int w, int h); void qemu_spice_display_resize(SimpleSpiceDisplay *ssd); void qemu_spice_display_refresh(SimpleSpiceDisplay *ssd); +void qemu_spice_cursor_refresh_unlocked(SimpleSpiceDisplay *ssd); void qemu_spice_add_memslot(SimpleSpiceDisplay *ssd, QXLDevMemSlot *memslot, qxl_async_io async);