mirror of https://github.com/xqemu/xqemu.git
spice/gl: add & use qemu_spice_gl_monitor_config
Cc: qemu-stable@nongnu.org Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
This commit is contained in:
parent
44b31e0bc4
commit
39414ef4e9
|
@ -71,6 +71,7 @@ typedef struct QXLCookie {
|
||||||
QXLRect area;
|
QXLRect area;
|
||||||
int redraw;
|
int redraw;
|
||||||
} render;
|
} render;
|
||||||
|
void *data;
|
||||||
} u;
|
} u;
|
||||||
} QXLCookie;
|
} QXLCookie;
|
||||||
|
|
||||||
|
|
|
@ -660,6 +660,11 @@ static void interface_async_complete(QXLInstance *sin, uint64_t cookie_token)
|
||||||
qemu_bh_schedule(ssd->gl_unblock_bh);
|
qemu_bh_schedule(ssd->gl_unblock_bh);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case QXL_COOKIE_TYPE_IO:
|
||||||
|
if (cookie->io == QXL_IO_MONITORS_CONFIG_ASYNC) {
|
||||||
|
g_free(cookie->u.data);
|
||||||
|
}
|
||||||
|
break;
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
/* should never be called, used in qxl native mode only */
|
/* should never be called, used in qxl native mode only */
|
||||||
|
@ -795,6 +800,29 @@ static const DisplayChangeListenerOps display_listener_ops = {
|
||||||
|
|
||||||
#ifdef HAVE_SPICE_GL
|
#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)
|
static void qemu_spice_gl_block(SimpleSpiceDisplay *ssd, bool block)
|
||||||
{
|
{
|
||||||
uint64_t timeout;
|
uint64_t timeout;
|
||||||
|
@ -858,6 +886,8 @@ static void qemu_spice_gl_scanout(DisplayChangeListener *dcl,
|
||||||
surface_width(ssd->ds),
|
surface_width(ssd->ds),
|
||||||
surface_height(ssd->ds),
|
surface_height(ssd->ds),
|
||||||
stride, fourcc, y_0_top);
|
stride, fourcc, y_0_top);
|
||||||
|
|
||||||
|
qemu_spice_gl_monitor_config(ssd, x, y, w, h);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void qemu_spice_gl_update(DisplayChangeListener *dcl,
|
static void qemu_spice_gl_update(DisplayChangeListener *dcl,
|
||||||
|
|
Loading…
Reference in New Issue