qxl: require spice >= 0.8.2

drop all ifdefs on SPICE_INTERFACE_QXL_MINOR >= 1 as a result,
any check for SPICE_SERVER_VERSION that is now always satisfied,
and SPICE_INTERFACE_CORE_MINOR >= 3 tests, because
0.8.2 has SPICE_INTERFACE_QXL_MINOR == 1 and
SPICE_INTERFACE_CORE_MINOR == 3.

Signed-off-by: Alon Levy <alevy@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
Alon Levy 2012-02-24 23:19:28 +02:00 committed by Gerd Hoffmann
parent 45a4b48528
commit 4295e15aa7
5 changed files with 1 additions and 74 deletions

2
configure vendored
View File

@ -2547,7 +2547,7 @@ int main(void) { spice_server_new(); return 0; }
EOF EOF
spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null) spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null) spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
if $pkg_config --atleast-version=0.6.0 spice-server >/dev/null 2>&1 && \ if $pkg_config --atleast-version=0.8.2 spice-server >/dev/null 2>&1 && \
compile_prog "$spice_cflags" "$spice_libs" ; then compile_prog "$spice_cflags" "$spice_libs" ; then
spice="yes" spice="yes"
libs_softmmu="$libs_softmmu $spice_libs" libs_softmmu="$libs_softmmu $spice_libs"

View File

@ -125,9 +125,7 @@ static void qxl_ring_set_dirty(PCIQXLDevice *qxl);
void qxl_guest_bug(PCIQXLDevice *qxl, const char *msg, ...) void qxl_guest_bug(PCIQXLDevice *qxl, const char *msg, ...)
{ {
#if SPICE_INTERFACE_QXL_MINOR >= 1
qxl_send_events(qxl, QXL_INTERRUPT_ERROR); qxl_send_events(qxl, QXL_INTERRUPT_ERROR);
#endif
if (qxl->guestdebug) { if (qxl->guestdebug) {
va_list ap; va_list ap;
va_start(ap, msg); va_start(ap, msg);
@ -149,12 +147,8 @@ void qxl_spice_update_area(PCIQXLDevice *qxl, uint32_t surface_id,
qxl->ssd.worker->update_area(qxl->ssd.worker, surface_id, area, qxl->ssd.worker->update_area(qxl->ssd.worker, surface_id, area,
dirty_rects, num_dirty_rects, clear_dirty_region); dirty_rects, num_dirty_rects, clear_dirty_region);
} else { } else {
#if SPICE_INTERFACE_QXL_MINOR >= 1
spice_qxl_update_area_async(&qxl->ssd.qxl, surface_id, area, spice_qxl_update_area_async(&qxl->ssd.qxl, surface_id, area,
clear_dirty_region, 0); clear_dirty_region, 0);
#else
abort();
#endif
} }
} }
@ -171,24 +165,18 @@ static void qxl_spice_destroy_surface_wait(PCIQXLDevice *qxl, uint32_t id,
qxl_async_io async) qxl_async_io async)
{ {
if (async) { if (async) {
#if SPICE_INTERFACE_QXL_MINOR < 1
abort();
#else
spice_qxl_destroy_surface_async(&qxl->ssd.qxl, id, spice_qxl_destroy_surface_async(&qxl->ssd.qxl, id,
(uint64_t)id); (uint64_t)id);
#endif
} else { } else {
qxl->ssd.worker->destroy_surface_wait(qxl->ssd.worker, id); qxl->ssd.worker->destroy_surface_wait(qxl->ssd.worker, id);
qxl_spice_destroy_surface_wait_complete(qxl, id); qxl_spice_destroy_surface_wait_complete(qxl, id);
} }
} }
#if SPICE_INTERFACE_QXL_MINOR >= 1
static void qxl_spice_flush_surfaces_async(PCIQXLDevice *qxl) static void qxl_spice_flush_surfaces_async(PCIQXLDevice *qxl)
{ {
spice_qxl_flush_surfaces_async(&qxl->ssd.qxl, 0); spice_qxl_flush_surfaces_async(&qxl->ssd.qxl, 0);
} }
#endif
void qxl_spice_loadvm_commands(PCIQXLDevice *qxl, struct QXLCommandExt *ext, void qxl_spice_loadvm_commands(PCIQXLDevice *qxl, struct QXLCommandExt *ext,
uint32_t count) uint32_t count)
@ -217,11 +205,7 @@ static void qxl_spice_destroy_surfaces_complete(PCIQXLDevice *qxl)
static void qxl_spice_destroy_surfaces(PCIQXLDevice *qxl, qxl_async_io async) static void qxl_spice_destroy_surfaces(PCIQXLDevice *qxl, qxl_async_io async)
{ {
if (async) { if (async) {
#if SPICE_INTERFACE_QXL_MINOR < 1
abort();
#else
spice_qxl_destroy_surfaces_async(&qxl->ssd.qxl, 0); spice_qxl_destroy_surfaces_async(&qxl->ssd.qxl, 0);
#endif
} else { } else {
qxl->ssd.worker->destroy_surfaces(qxl->ssd.worker); qxl->ssd.worker->destroy_surfaces(qxl->ssd.worker);
qxl_spice_destroy_surfaces_complete(qxl); qxl_spice_destroy_surfaces_complete(qxl);
@ -490,7 +474,6 @@ static const char *io_port_to_string(uint32_t io_port)
[QXL_IO_DESTROY_PRIMARY] = "QXL_IO_DESTROY_PRIMARY", [QXL_IO_DESTROY_PRIMARY] = "QXL_IO_DESTROY_PRIMARY",
[QXL_IO_DESTROY_SURFACE_WAIT] = "QXL_IO_DESTROY_SURFACE_WAIT", [QXL_IO_DESTROY_SURFACE_WAIT] = "QXL_IO_DESTROY_SURFACE_WAIT",
[QXL_IO_DESTROY_ALL_SURFACES] = "QXL_IO_DESTROY_ALL_SURFACES", [QXL_IO_DESTROY_ALL_SURFACES] = "QXL_IO_DESTROY_ALL_SURFACES",
#if SPICE_INTERFACE_QXL_MINOR >= 1
[QXL_IO_UPDATE_AREA_ASYNC] = "QXL_IO_UPDATE_AREA_ASYNC", [QXL_IO_UPDATE_AREA_ASYNC] = "QXL_IO_UPDATE_AREA_ASYNC",
[QXL_IO_MEMSLOT_ADD_ASYNC] = "QXL_IO_MEMSLOT_ADD_ASYNC", [QXL_IO_MEMSLOT_ADD_ASYNC] = "QXL_IO_MEMSLOT_ADD_ASYNC",
[QXL_IO_CREATE_PRIMARY_ASYNC] = "QXL_IO_CREATE_PRIMARY_ASYNC", [QXL_IO_CREATE_PRIMARY_ASYNC] = "QXL_IO_CREATE_PRIMARY_ASYNC",
@ -500,7 +483,6 @@ static const char *io_port_to_string(uint32_t io_port)
= "QXL_IO_DESTROY_ALL_SURFACES_ASYNC", = "QXL_IO_DESTROY_ALL_SURFACES_ASYNC",
[QXL_IO_FLUSH_SURFACES_ASYNC] = "QXL_IO_FLUSH_SURFACES_ASYNC", [QXL_IO_FLUSH_SURFACES_ASYNC] = "QXL_IO_FLUSH_SURFACES_ASYNC",
[QXL_IO_FLUSH_RELEASE] = "QXL_IO_FLUSH_RELEASE", [QXL_IO_FLUSH_RELEASE] = "QXL_IO_FLUSH_RELEASE",
#endif
}; };
return io_port_to_string[io_port]; return io_port_to_string[io_port];
} }
@ -735,8 +717,6 @@ static int interface_flush_resources(QXLInstance *sin)
static void qxl_create_guest_primary_complete(PCIQXLDevice *d); static void qxl_create_guest_primary_complete(PCIQXLDevice *d);
#if SPICE_INTERFACE_QXL_MINOR >= 1
/* called from spice server thread context only */ /* called from spice server thread context only */
static void interface_async_complete(QXLInstance *sin, uint64_t cookie) static void interface_async_complete(QXLInstance *sin, uint64_t cookie)
{ {
@ -764,8 +744,6 @@ static void interface_async_complete(QXLInstance *sin, uint64_t cookie)
qxl_send_events(qxl, QXL_INTERRUPT_IO_CMD); qxl_send_events(qxl, QXL_INTERRUPT_IO_CMD);
} }
#endif
static const QXLInterface qxl_interface = { static const QXLInterface qxl_interface = {
.base.type = SPICE_INTERFACE_QXL, .base.type = SPICE_INTERFACE_QXL,
.base.description = "qxl gpu", .base.description = "qxl gpu",
@ -785,9 +763,7 @@ static const QXLInterface qxl_interface = {
.req_cursor_notification = interface_req_cursor_notification, .req_cursor_notification = interface_req_cursor_notification,
.notify_update = interface_notify_update, .notify_update = interface_notify_update,
.flush_resources = interface_flush_resources, .flush_resources = interface_flush_resources,
#if SPICE_INTERFACE_QXL_MINOR >= 1
.async_complete = interface_async_complete, .async_complete = interface_async_complete,
#endif
}; };
static void qxl_enter_vga_mode(PCIQXLDevice *d) static void qxl_enter_vga_mode(PCIQXLDevice *d)
@ -1137,9 +1113,7 @@ static void ioport_write(void *opaque, target_phys_addr_t addr,
PCIQXLDevice *d = opaque; PCIQXLDevice *d = opaque;
uint32_t io_port = addr; uint32_t io_port = addr;
qxl_async_io async = QXL_SYNC; qxl_async_io async = QXL_SYNC;
#if SPICE_INTERFACE_QXL_MINOR >= 1
uint32_t orig_io_port = io_port; uint32_t orig_io_port = io_port;
#endif
switch (io_port) { switch (io_port) {
case QXL_IO_RESET: case QXL_IO_RESET:
@ -1149,10 +1123,8 @@ static void ioport_write(void *opaque, target_phys_addr_t addr,
case QXL_IO_CREATE_PRIMARY: case QXL_IO_CREATE_PRIMARY:
case QXL_IO_UPDATE_IRQ: case QXL_IO_UPDATE_IRQ:
case QXL_IO_LOG: case QXL_IO_LOG:
#if SPICE_INTERFACE_QXL_MINOR >= 1
case QXL_IO_MEMSLOT_ADD_ASYNC: case QXL_IO_MEMSLOT_ADD_ASYNC:
case QXL_IO_CREATE_PRIMARY_ASYNC: case QXL_IO_CREATE_PRIMARY_ASYNC:
#endif
break; break;
default: default:
if (d->mode != QXL_MODE_VGA) { if (d->mode != QXL_MODE_VGA) {
@ -1160,17 +1132,14 @@ static void ioport_write(void *opaque, target_phys_addr_t addr,
} }
dprint(d, 1, "%s: unexpected port 0x%x (%s) in vga mode\n", dprint(d, 1, "%s: unexpected port 0x%x (%s) in vga mode\n",
__func__, io_port, io_port_to_string(io_port)); __func__, io_port, io_port_to_string(io_port));
#if SPICE_INTERFACE_QXL_MINOR >= 1
/* be nice to buggy guest drivers */ /* be nice to buggy guest drivers */
if (io_port >= QXL_IO_UPDATE_AREA_ASYNC && if (io_port >= QXL_IO_UPDATE_AREA_ASYNC &&
io_port <= QXL_IO_DESTROY_ALL_SURFACES_ASYNC) { io_port <= QXL_IO_DESTROY_ALL_SURFACES_ASYNC) {
qxl_send_events(d, QXL_INTERRUPT_IO_CMD); qxl_send_events(d, QXL_INTERRUPT_IO_CMD);
} }
#endif
return; return;
} }
#if SPICE_INTERFACE_QXL_MINOR >= 1
/* we change the io_port to avoid ifdeffery in the main switch */ /* we change the io_port to avoid ifdeffery in the main switch */
orig_io_port = io_port; orig_io_port = io_port;
switch (io_port) { switch (io_port) {
@ -1209,7 +1178,6 @@ async_common:
default: default:
break; break;
} }
#endif
switch (io_port) { switch (io_port) {
case QXL_IO_UPDATE_AREA: case QXL_IO_UPDATE_AREA:
@ -1301,7 +1269,6 @@ async_common:
} }
qxl_spice_destroy_surface_wait(d, val, async); qxl_spice_destroy_surface_wait(d, val, async);
break; break;
#if SPICE_INTERFACE_QXL_MINOR >= 1
case QXL_IO_FLUSH_RELEASE: { case QXL_IO_FLUSH_RELEASE: {
QXLReleaseRing *ring = &d->ram->release_ring; QXLReleaseRing *ring = &d->ram->release_ring;
if (ring->prod - ring->cons + 1 == ring->num_items) { if (ring->prod - ring->cons + 1 == ring->num_items) {
@ -1322,7 +1289,6 @@ async_common:
d->num_free_res); d->num_free_res);
qxl_spice_flush_surfaces_async(d); qxl_spice_flush_surfaces_async(d);
break; break;
#endif
case QXL_IO_DESTROY_ALL_SURFACES: case QXL_IO_DESTROY_ALL_SURFACES:
d->mode = QXL_MODE_UNDEFINED; d->mode = QXL_MODE_UNDEFINED;
qxl_spice_destroy_surfaces(d, async); qxl_spice_destroy_surfaces(d, async);
@ -1333,16 +1299,12 @@ async_common:
} }
return; return;
cancel_async: cancel_async:
#if SPICE_INTERFACE_QXL_MINOR >= 1
if (async) { if (async) {
qxl_send_events(d, QXL_INTERRUPT_IO_CMD); qxl_send_events(d, QXL_INTERRUPT_IO_CMD);
qemu_mutex_lock(&d->async_lock); qemu_mutex_lock(&d->async_lock);
d->current_async = QXL_UNDEFINED_IO; d->current_async = QXL_UNDEFINED_IO;
qemu_mutex_unlock(&d->async_lock); qemu_mutex_unlock(&d->async_lock);
} }
#else
return;
#endif
} }
static uint64_t ioport_read(void *opaque, target_phys_addr_t addr, static uint64_t ioport_read(void *opaque, target_phys_addr_t addr,
@ -1604,9 +1566,7 @@ static int qxl_init_common(PCIQXLDevice *qxl)
case 2: /* spice 0.6 -- qxl-2 */ case 2: /* spice 0.6 -- qxl-2 */
pci_device_rev = QXL_REVISION_STABLE_V06; pci_device_rev = QXL_REVISION_STABLE_V06;
break; break;
#if SPICE_INTERFACE_QXL_MINOR >= 1
case 3: /* qxl-3 */ case 3: /* qxl-3 */
#endif
default: default:
pci_device_rev = QXL_DEFAULT_REVISION; pci_device_rev = QXL_DEFAULT_REVISION;
break; break;

View File

@ -108,11 +108,7 @@ typedef struct PCIQXLDevice {
} \ } \
} while (0) } while (0)
#if SPICE_INTERFACE_QXL_MINOR >= 1
#define QXL_DEFAULT_REVISION QXL_REVISION_STABLE_V10 #define QXL_DEFAULT_REVISION QXL_REVISION_STABLE_V10
#else
#define QXL_DEFAULT_REVISION QXL_REVISION_STABLE_V06
#endif
/* qxl.c */ /* qxl.c */
void *qxl_phys2virt(PCIQXLDevice *qxl, QXLPHYSICAL phys, int group_id); void *qxl_phys2virt(PCIQXLDevice *qxl, QXLPHYSICAL phys, int group_id);

View File

@ -139,8 +139,6 @@ static void watch_remove(SpiceWatch *watch)
g_free(watch); g_free(watch);
} }
#if SPICE_INTERFACE_CORE_MINOR >= 3
typedef struct ChannelList ChannelList; typedef struct ChannelList ChannelList;
struct ChannelList { struct ChannelList {
SpiceChannelEventInfo *info; SpiceChannelEventInfo *info;
@ -257,15 +255,6 @@ static void channel_event(int event, SpiceChannelEventInfo *info)
} }
} }
#else /* SPICE_INTERFACE_CORE_MINOR >= 3 */
static QList *channel_list_get(void)
{
return NULL;
}
#endif /* SPICE_INTERFACE_CORE_MINOR >= 3 */
static SpiceCoreInterface core_interface = { static SpiceCoreInterface core_interface = {
.base.type = SPICE_INTERFACE_CORE, .base.type = SPICE_INTERFACE_CORE,
.base.description = "qemu core services", .base.description = "qemu core services",
@ -281,9 +270,7 @@ static SpiceCoreInterface core_interface = {
.watch_update_mask = watch_update_mask, .watch_update_mask = watch_update_mask,
.watch_remove = watch_remove, .watch_remove = watch_remove,
#if SPICE_INTERFACE_CORE_MINOR >= 3
.channel_event = channel_event, .channel_event = channel_event,
#endif
}; };
#ifdef SPICE_INTERFACE_MIGRATION #ifdef SPICE_INTERFACE_MIGRATION
@ -490,14 +477,12 @@ static void migration_state_notifier(Notifier *notifier, void *data)
spice_server_migrate_start(spice_server); spice_server_migrate_start(spice_server);
#endif #endif
} else if (migration_has_finished(s)) { } else if (migration_has_finished(s)) {
#if SPICE_SERVER_VERSION >= 0x000701 /* 0.7.1 */
#ifndef SPICE_INTERFACE_MIGRATION #ifndef SPICE_INTERFACE_MIGRATION
spice_server_migrate_switch(spice_server); spice_server_migrate_switch(spice_server);
#else #else
spice_server_migrate_end(spice_server, true); spice_server_migrate_end(spice_server, true);
} else if (migration_has_failed(s)) { } else if (migration_has_failed(s)) {
spice_server_migrate_end(spice_server, false); spice_server_migrate_end(spice_server, false);
#endif
#endif #endif
} }
} }
@ -659,11 +644,9 @@ void qemu_spice_init(void)
spice_server_set_noauth(spice_server); spice_server_set_noauth(spice_server);
} }
#if SPICE_SERVER_VERSION >= 0x000801
if (qemu_opt_get_bool(opts, "disable-copy-paste", 0)) { if (qemu_opt_get_bool(opts, "disable-copy-paste", 0)) {
spice_server_set_agent_copypaste(spice_server, false); spice_server_set_agent_copypaste(spice_server, false);
} }
#endif
compression = SPICE_IMAGE_COMPRESS_AUTO_GLZ; compression = SPICE_IMAGE_COMPRESS_AUTO_GLZ;
str = qemu_opt_get(opts, "image-compression"); str = qemu_opt_get(opts, "image-compression");

View File

@ -64,11 +64,7 @@ void qemu_spice_add_memslot(SimpleSpiceDisplay *ssd, QXLDevMemSlot *memslot,
qxl_async_io async) qxl_async_io async)
{ {
if (async != QXL_SYNC) { if (async != QXL_SYNC) {
#if SPICE_INTERFACE_QXL_MINOR >= 1
spice_qxl_add_memslot_async(&ssd->qxl, memslot, 0); spice_qxl_add_memslot_async(&ssd->qxl, memslot, 0);
#else
abort();
#endif
} else { } else {
ssd->worker->add_memslot(ssd->worker, memslot); ssd->worker->add_memslot(ssd->worker, memslot);
} }
@ -84,11 +80,7 @@ void qemu_spice_create_primary_surface(SimpleSpiceDisplay *ssd, uint32_t id,
qxl_async_io async) qxl_async_io async)
{ {
if (async != QXL_SYNC) { if (async != QXL_SYNC) {
#if SPICE_INTERFACE_QXL_MINOR >= 1
spice_qxl_create_primary_surface_async(&ssd->qxl, id, surface, 0); spice_qxl_create_primary_surface_async(&ssd->qxl, id, surface, 0);
#else
abort();
#endif
} else { } else {
ssd->worker->create_primary_surface(ssd->worker, id, surface); ssd->worker->create_primary_surface(ssd->worker, id, surface);
} }
@ -99,11 +91,7 @@ void qemu_spice_destroy_primary_surface(SimpleSpiceDisplay *ssd,
uint32_t id, qxl_async_io async) uint32_t id, qxl_async_io async)
{ {
if (async != QXL_SYNC) { if (async != QXL_SYNC) {
#if SPICE_INTERFACE_QXL_MINOR >= 1
spice_qxl_destroy_primary_surface_async(&ssd->qxl, id, 0); spice_qxl_destroy_primary_surface_async(&ssd->qxl, id, 0);
#else
abort();
#endif
} else { } else {
ssd->worker->destroy_primary_surface(ssd->worker, id); ssd->worker->destroy_primary_surface(ssd->worker, id);
} }