diff options
author | Alon Levy <alevy@redhat.com> | 2012-05-23 20:50:46 +0300 |
---|---|---|
committer | Alon Levy <alevy@redhat.com> | 2012-06-15 10:34:57 +0300 |
commit | 326b80974b4080ed7519801f7d1c96077f5ae0b9 (patch) | |
tree | 9ef937fdfbefd86b75a7eb5a8c14000b396688cd | |
parent | 73981e02c90cc81dd462f9fc2a00b5b11a9eab00 (diff) |
prefix io with qxl_io, add several
-rw-r--r-- | src/qxl.h | 8 | ||||
-rw-r--r-- | src/qxl_driver.c | 39 | ||||
-rw-r--r-- | src/qxl_surface.c | 2 |
3 files changed, 40 insertions, 9 deletions
@@ -434,9 +434,11 @@ static inline void qxl_mem_unverifiable(struct qxl_mem *mem) {} * I/O port commands */ void qxl_update_area(qxl_screen_t *qxl); -void qxl_memslot_add(qxl_screen_t *qxl, uint8_t id); -void qxl_create_primary(qxl_screen_t *qxl); -void qxl_notify_oom(qxl_screen_t *qxl); +void qxl_io_memslot_add(qxl_screen_t *qxl, uint8_t id); +void qxl_io_create_primary(qxl_screen_t *qxl); +void qxl_io_notify_oom(qxl_screen_t *qxl); +void qxl_io_flush_surfaces(qxl_screen_t *qxl); +void qxl_io_destroy_all_surfaces (qxl_screen_t *qxl); #ifdef XSPICE /* device to spice-server, now xspice to spice-server */ diff --git a/src/qxl_driver.c b/src/qxl_driver.c index f6e4428..51b28db 100644 --- a/src/qxl_driver.c +++ b/src/qxl_driver.c @@ -153,7 +153,7 @@ void qxl_update_area(qxl_screen_t *qxl) #endif } -void qxl_memslot_add(qxl_screen_t *qxl, uint8_t id) +void qxl_io_memslot_add(qxl_screen_t *qxl, uint8_t id) { #ifndef XSPICE if (qxl->pci->revision >= 3) { @@ -167,7 +167,7 @@ void qxl_memslot_add(qxl_screen_t *qxl, uint8_t id) #endif } -void qxl_create_primary(qxl_screen_t *qxl) +void qxl_io_create_primary(qxl_screen_t *qxl) { #ifndef XSPICE if (qxl->pci->revision >= 3) { @@ -182,11 +182,21 @@ void qxl_create_primary(qxl_screen_t *qxl) qxl->device_primary = QXL_DEVICE_PRIMARY_CREATED; } -void qxl_notify_oom(qxl_screen_t *qxl) +void qxl_io_notify_oom(qxl_screen_t *qxl) { ioport_write(qxl, QXL_IO_NOTIFY_OOM, 0); } +void qxl_io_flush_surfaces(qxl_screen_t *qxl) +{ +#ifndef XSPICE + ioport_write(qxl, QXL_IO_FLUSH_SURFACES_ASYNC, 0); + qxl_wait_for_io_command(qxl); +#else + ioport_write(qxl, QXL_IO_FLUSH_SURFACES_ASYNC, 0); +#endif +} + int qxl_garbage_collect (qxl_screen_t *qxl) { @@ -275,7 +285,7 @@ qxl_usleep (int useconds) int qxl_handle_oom (qxl_screen_t *qxl) { - qxl_notify_oom(qxl); + qxl_io_notify_oom(qxl); #if 0 ErrorF ("."); @@ -533,7 +543,7 @@ setup_slot(qxl_screen_t *qxl, uint8_t slot_index_offset, ram_header->mem_slot.mem_start = slot->start_phys_addr; ram_header->mem_slot.mem_end = slot->end_phys_addr; - qxl_memslot_add(qxl, slot_index); + qxl_io_memslot_add(qxl, slot_index); slot->generation = qxl->rom->slot_generation; @@ -586,6 +596,25 @@ qxl_mark_mem_unverifiable(qxl_screen_t *qxl) qxl_mem_unverifiable(qxl->surf_mem); } +void +qxl_io_destroy_all_surfaces (qxl_screen_t *qxl) +{ +#ifndef XSPICE + if (qxl->pci->revision >= 3) + { + ioport_write(qxl, QXL_IO_DESTROY_ALL_SURFACES_ASYNC, 0); + qxl_wait_for_io_command(qxl); + } + else + { + ioport_write(qxl, QXL_IO_DESTROY_ALL_SURFACES, 0); + } +#else + ErrorF("Xspice: error: UNIMPLEMENTED qxl_io_destroy_all_surfaces\n"); +#endif + qxl->device_primary = QXL_DEVICE_PRIMARY_NONE; +} + static Bool qxl_close_screen(CLOSE_SCREEN_ARGS_DECL) { diff --git a/src/qxl_surface.c b/src/qxl_surface.c index a2810c8..3b2f9dc 100644 --- a/src/qxl_surface.c +++ b/src/qxl_surface.c @@ -336,7 +336,7 @@ qxl_surface_cache_create_primary (surface_cache_t *cache, create->type = QXL_SURF_TYPE_PRIMARY; create->mem = physical_address (cache->qxl, cache->qxl->ram, cache->qxl->main_mem_slot); - qxl_create_primary(qxl); + qxl_io_create_primary(qxl); dev_addr = (uint8_t *)qxl->ram + mode->stride * (mode->y_res - 1); |