diff options
Diffstat (limited to 'ui/spice-display.c')
-rw-r--r-- | ui/spice-display.c | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/ui/spice-display.c b/ui/spice-display.c index 99132b69b..2a77a545a 100644 --- a/ui/spice-display.c +++ b/ui/spice-display.c @@ -197,7 +197,7 @@ static void qemu_spice_create_one_update(SimpleSpiceDisplay *ssd, static void qemu_spice_create_update(SimpleSpiceDisplay *ssd) { static const int blksize = 32; - int blocks = DIV_ROUND_UP(surface_width(ssd->ds), blksize); + int blocks = (surface_width(ssd->ds) + blksize - 1) / blksize; int dirty_top[blocks]; int y, yoff1, yoff2, x, xoff, blk, bw; int bpp = surface_bytes_per_pixel(ssd->ds); @@ -527,13 +527,11 @@ static void interface_set_compression_level(QXLInstance *sin, int level) /* nothing to do */ } -#if SPICE_NEEDS_SET_MM_TIME static void interface_set_mm_time(QXLInstance *sin, uint32_t mm_time) { dprint(3, "%s/%d:\n", __func__, sin->id); /* nothing to do */ } -#endif static void interface_get_init_info(QXLInstance *sin, QXLDevInitInfo *info) { @@ -688,7 +686,6 @@ static int interface_client_monitors_config(QXLInstance *sin, { SimpleSpiceDisplay *ssd = container_of(sin, SimpleSpiceDisplay, qxl); QemuUIInfo info; - int head; if (!dpy_ui_info_supported(ssd->dcl.con)) { return 0; /* == not supported by guest */ @@ -698,12 +695,14 @@ static int interface_client_monitors_config(QXLInstance *sin, return 1; } + /* + * FIXME: multihead is tricky due to the way + * spice has multihead implemented. + */ memset(&info, 0, sizeof(info)); - - head = qemu_console_get_head(ssd->dcl.con); - if (mc->num_of_monitors > head) { - info.width = mc->monitors[head].width; - info.height = mc->monitors[head].height; + if (mc->num_of_monitors > 0) { + info.width = mc->monitors[0].width; + info.height = mc->monitors[0].height; } dpy_set_ui_info(ssd->dcl.con, &info); dprint(1, "%s/%d: size %dx%d\n", __func__, ssd->qxl.id, @@ -719,9 +718,7 @@ static const QXLInterface dpy_interface = { .attache_worker = interface_attach_worker, .set_compression_level = interface_set_compression_level, -#if SPICE_NEEDS_SET_MM_TIME .set_mm_time = interface_set_mm_time, -#endif .get_init_info = interface_get_init_info, /* the callbacks below are called from spice server thread context */ @@ -777,7 +774,9 @@ static void display_mouse_define(DisplayChangeListener *dcl, SimpleSpiceDisplay *ssd = container_of(dcl, SimpleSpiceDisplay, dcl); qemu_mutex_lock(&ssd->lock); - cursor_get(c); + if (c) { + cursor_get(c); + } cursor_put(ssd->cursor); ssd->cursor = c; ssd->hot_x = c->hot_x; @@ -861,8 +860,6 @@ static QEMUGLContext qemu_spice_gl_create_context(DisplayChangeListener *dcl, static void qemu_spice_gl_scanout(DisplayChangeListener *dcl, uint32_t tex_id, bool y_0_top, - uint32_t backing_width, - uint32_t backing_height, uint32_t x, uint32_t y, uint32_t w, uint32_t h) { @@ -885,7 +882,9 @@ static void qemu_spice_gl_scanout(DisplayChangeListener *dcl, assert(!tex_id || fd >= 0); /* note: spice server will close the fd */ - spice_qxl_gl_scanout(&ssd->qxl, fd, backing_width, backing_height, + spice_qxl_gl_scanout(&ssd->qxl, fd, + surface_width(ssd->ds), + surface_height(ssd->ds), stride, fourcc, y_0_top); qemu_spice_gl_monitor_config(ssd, x, y, w, h); |