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:
		
							parent
							
								
									45a4b48528
								
							
						
					
					
						commit
						4295e15aa7
					
				| 
						 | 
					@ -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"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										40
									
								
								hw/qxl.c
								
								
								
								
							
							
						
						
									
										40
									
								
								hw/qxl.c
								
								
								
								
							| 
						 | 
					@ -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;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										4
									
								
								hw/qxl.h
								
								
								
								
							
							
						
						
									
										4
									
								
								hw/qxl.h
								
								
								
								
							| 
						 | 
					@ -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);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue