summaryrefslogtreecommitdiffstats
path: root/ui/spice-display.c
diff options
context:
space:
mode:
authorGerd Hoffmann2011-04-27 15:50:32 +0200
committerGerd Hoffmann2011-05-03 15:35:48 +0200
commit075360945860ad9bdd491921954b383bf762b0e5 (patch)
treeac1107ff6143abcb443c7810aca478f68000d302 /ui/spice-display.c
parentspice: don't create updates in spice server context. (diff)
downloadqemu-075360945860ad9bdd491921954b383bf762b0e5.tar.gz
qemu-075360945860ad9bdd491921954b383bf762b0e5.tar.xz
qemu-075360945860ad9bdd491921954b383bf762b0e5.zip
spice: don't call displaystate callbacks from spice server context.
This patch moves the displaystate callback calls for setting the cursor and the mouse pointer from spice server to qemu (iothread) context. This allows us to simplify locking. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'ui/spice-display.c')
-rw-r--r--ui/spice-display.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/ui/spice-display.c b/ui/spice-display.c
index d56dcfc7d3..8579bfd5b2 100644
--- a/ui/spice-display.c
+++ b/ui/spice-display.c
@@ -254,6 +254,16 @@ void qemu_spice_display_refresh(SimpleSpiceDisplay *ssd)
ssd->update = qemu_spice_create_update(ssd);
ssd->notify++;
}
+ if (ssd->cursor) {
+ ssd->ds->cursor_define(ssd->cursor);
+ cursor_put(ssd->cursor);
+ ssd->cursor = NULL;
+ }
+ if (ssd->mouse_x != -1 && ssd->mouse_y != -1) {
+ ssd->ds->mouse_set(ssd->mouse_x, ssd->mouse_y, 1);
+ ssd->mouse_x = -1;
+ ssd->mouse_y = -1;
+ }
qemu_mutex_unlock(&ssd->lock);
if (ssd->notify) {
@@ -409,6 +419,8 @@ void qemu_spice_display_init(DisplayState *ds)
assert(sdpy.ds == NULL);
sdpy.ds = ds;
qemu_mutex_init(&sdpy.lock);
+ sdpy.mouse_x = -1;
+ sdpy.mouse_y = -1;
sdpy.bufsize = (16 * 1024 * 1024);
sdpy.buf = qemu_malloc(sdpy.bufsize);
register_displaychangelistener(ds, &display_listener);