Loading include/ui/spice-display.h +1 −0 Original line number Diff line number Diff line Loading @@ -71,6 +71,7 @@ typedef struct QXLCookie { QXLRect area; int redraw; } render; void *data; } u; } QXLCookie; Loading ui/spice-display.c +30 −0 Original line number Diff line number Diff line Loading @@ -660,6 +660,11 @@ static void interface_async_complete(QXLInstance *sin, uint64_t cookie_token) qemu_bh_schedule(ssd->gl_unblock_bh); break; } case QXL_COOKIE_TYPE_IO: if (cookie->io == QXL_IO_MONITORS_CONFIG_ASYNC) { g_free(cookie->u.data); } break; #endif default: /* should never be called, used in qxl native mode only */ Loading Loading @@ -795,6 +800,29 @@ static const DisplayChangeListenerOps display_listener_ops = { #ifdef HAVE_SPICE_GL static void qemu_spice_gl_monitor_config(SimpleSpiceDisplay *ssd, int x, int y, int w, int h) { QXLMonitorsConfig *config; QXLCookie *cookie; config = g_malloc0(sizeof(QXLMonitorsConfig) + sizeof(QXLHead)); config->count = 1; config->max_allowed = 1; config->heads[0].x = x; config->heads[0].y = y; config->heads[0].width = w; config->heads[0].height = h; cookie = qxl_cookie_new(QXL_COOKIE_TYPE_IO, QXL_IO_MONITORS_CONFIG_ASYNC); cookie->u.data = config; spice_qxl_monitors_config_async(&ssd->qxl, (uintptr_t)config, MEMSLOT_GROUP_HOST, (uintptr_t)cookie); } static void qemu_spice_gl_block(SimpleSpiceDisplay *ssd, bool block) { uint64_t timeout; Loading Loading @@ -858,6 +886,8 @@ static void qemu_spice_gl_scanout(DisplayChangeListener *dcl, surface_width(ssd->ds), surface_height(ssd->ds), stride, fourcc, y_0_top); qemu_spice_gl_monitor_config(ssd, x, y, w, h); } static void qemu_spice_gl_update(DisplayChangeListener *dcl, Loading Loading
include/ui/spice-display.h +1 −0 Original line number Diff line number Diff line Loading @@ -71,6 +71,7 @@ typedef struct QXLCookie { QXLRect area; int redraw; } render; void *data; } u; } QXLCookie; Loading
ui/spice-display.c +30 −0 Original line number Diff line number Diff line Loading @@ -660,6 +660,11 @@ static void interface_async_complete(QXLInstance *sin, uint64_t cookie_token) qemu_bh_schedule(ssd->gl_unblock_bh); break; } case QXL_COOKIE_TYPE_IO: if (cookie->io == QXL_IO_MONITORS_CONFIG_ASYNC) { g_free(cookie->u.data); } break; #endif default: /* should never be called, used in qxl native mode only */ Loading Loading @@ -795,6 +800,29 @@ static const DisplayChangeListenerOps display_listener_ops = { #ifdef HAVE_SPICE_GL static void qemu_spice_gl_monitor_config(SimpleSpiceDisplay *ssd, int x, int y, int w, int h) { QXLMonitorsConfig *config; QXLCookie *cookie; config = g_malloc0(sizeof(QXLMonitorsConfig) + sizeof(QXLHead)); config->count = 1; config->max_allowed = 1; config->heads[0].x = x; config->heads[0].y = y; config->heads[0].width = w; config->heads[0].height = h; cookie = qxl_cookie_new(QXL_COOKIE_TYPE_IO, QXL_IO_MONITORS_CONFIG_ASYNC); cookie->u.data = config; spice_qxl_monitors_config_async(&ssd->qxl, (uintptr_t)config, MEMSLOT_GROUP_HOST, (uintptr_t)cookie); } static void qemu_spice_gl_block(SimpleSpiceDisplay *ssd, bool block) { uint64_t timeout; Loading Loading @@ -858,6 +886,8 @@ static void qemu_spice_gl_scanout(DisplayChangeListener *dcl, surface_width(ssd->ds), surface_height(ssd->ds), stride, fourcc, y_0_top); qemu_spice_gl_monitor_config(ssd, x, y, w, h); } static void qemu_spice_gl_update(DisplayChangeListener *dcl, Loading