--- src/qxl.h | 1 - src/qxlhw_pci.c | 7 +++++++ src/qxlhw_pci.h | 1 + src/spiceqxl_display.c | 9 ++++++--- src/spiceqxl_driver.c | 3 ++- src/spiceqxl_io_port.c | 5 +++-- 6 files changed, 19 insertions(+), 7 deletions(-)
diff --git a/src/qxl.h b/src/qxl.h index 8ef29ee..5c82a79 100644 --- a/src/qxl.h +++ b/src/qxl.h @@ -169,7 +169,6 @@ struct _qxl_screen_t #ifdef XSPICE /* XSpice specific */ - struct QXLRom shadow_rom; /* Parameter RAM */ SpiceServer * spice_server; QXLWorker * worker; int worker_running; diff --git a/src/qxlhw_pci.c b/src/qxlhw_pci.c index 0d483fc..4f737f4 100644 --- a/src/qxlhw_pci.c +++ b/src/qxlhw_pci.c @@ -1013,4 +1013,11 @@ void *qxlhw_pci_get_ram(struct qxlhw *base) return hw->ram; } + +struct QXLRom *qxlhw_pci_get_shadow_rom(struct qxlhw *base) +{ + struct qxlhw_pci *hw = (struct qxlhw_pci *)base; + + return &hw->shadow_rom; +} #endif diff --git a/src/qxlhw_pci.h b/src/qxlhw_pci.h index 4dbf4aa..51b559d 100644 --- a/src/qxlhw_pci.h +++ b/src/qxlhw_pci.h @@ -18,6 +18,7 @@ struct QXLRam *qxlhw_pci_get_ram_header(struct qxlhw *base); void *qxlhw_pci_get_ram(struct qxlhw *base); void *qxlhw_pci_get_vram(struct qxlhw *base); struct QXLRom *qxlhw_pci_get_rom(struct qxlhw *base); +struct QXLRom *qxlhw_pci_get_shadow_rom(struct qxlhw *base); #endif #endif diff --git a/src/spiceqxl_display.c b/src/spiceqxl_display.c index 85088fa..394b89a 100644 --- a/src/spiceqxl_display.c +++ b/src/spiceqxl_display.c @@ -103,25 +103,28 @@ static void interface_attach_worker(QXLInstance *sin, QXLWorker *qxl_worker) static void interface_set_compression_level(QXLInstance *sin, int level) { qxl_screen_t *qxl = container_of(sin, qxl_screen_t, display_sin); + struct QXLRom *shadow_rom = qxlhw_pci_get_shadow_rom(qxl->hw); struct QXLRom *rom = qxlhw_pci_get_rom(qxl->hw); dprint(qxl, 1, "%s: %d\n", __FUNCTION__, level); - qxl->shadow_rom.compression_level = level; + shadow_rom->compression_level = level; rom->compression_level = level; } static void interface_set_mm_time(QXLInstance *sin, uint32_t mm_time) { qxl_screen_t *qxl = container_of(sin, qxl_screen_t, display_sin); + struct QXLRom *shadow_rom = qxlhw_pci_get_shadow_rom(qxl->hw); struct QXLRom *rom = qxlhw_pci_get_rom(qxl->hw); - qxl->shadow_rom.mm_clock = mm_time; + shadow_rom->mm_clock = mm_time; rom->mm_clock = mm_time; } static void interface_get_init_info(QXLInstance *sin, QXLDevInitInfo *info) { qxl_screen_t *qxl = container_of(sin, qxl_screen_t, display_sin); + struct QXLRom *shadow_rom = qxlhw_pci_get_shadow_rom(qxl->hw); dprint(qxl, 1, "%s:\n", __FUNCTION__); info->memslot_gen_bits = MEMSLOT_GENERATION_BITS; @@ -129,7 +132,7 @@ static void interface_get_init_info(QXLInstance *sin, QXLDevInitInfo *info) info->num_memslots = NUM_MEMSLOTS; info->num_memslots_groups = NUM_MEMSLOTS_GROUPS; info->internal_groupslot_id = 0; - info->qxl_ram_size = qxl->shadow_rom.num_pages << TARGET_PAGE_BITS; + info->qxl_ram_size = shadow_rom->num_pages << TARGET_PAGE_BITS; info->n_surfaces = NUM_SURFACES; } diff --git a/src/spiceqxl_driver.c b/src/spiceqxl_driver.c index d657cf0..e7b88fd 100644 --- a/src/spiceqxl_driver.c +++ b/src/spiceqxl_driver.c @@ -156,5 +156,6 @@ void init_qxl_rom(qxl_screen_t* qxl, uint32_t rom_size) rom->num_pages = (num_pages); rom->ram_header_offset = (VRAM_SIZE - ram_header_size); - qxl->shadow_rom = *qxlhw_pci_get_rom(qxl->hw); // TODO - do we need this? + // TODO - do we need this? + *qxlhw_pci_get_shadow_rom(qxl->hw) = *qxlhw_pci_get_rom(qxl->hw); } diff --git a/src/spiceqxl_io_port.c b/src/spiceqxl_io_port.c index db7d715..86c3d6e 100644 --- a/src/spiceqxl_io_port.c +++ b/src/spiceqxl_io_port.c @@ -95,12 +95,13 @@ void xspice_init_qxl_ram(qxl_screen_t *qxl) static void qxl_reset_state(qxl_screen_t *qxl) { QXLRam *ram = qxlhw_pci_get_ram_header(qxl->hw); + struct QXLRom *shadow_rom = qxlhw_pci_get_shadow_rom(qxl->hw); struct QXLRom *rom = qxlhw_pci_get_rom(qxl->hw); assert(SPICE_RING_IS_EMPTY(&ram->cmd_ring)); assert(SPICE_RING_IS_EMPTY(&ram->cursor_ring)); - qxl->shadow_rom.update_id = 0; - *rom = qxl->shadow_rom; + shadow_rom->update_id = 0; + *rom = *shadow_rom; xspice_init_qxl_ram(qxl); qxl->num_free_res = 0; qxl->last_release = NULL; -- 1.7.9.3 _______________________________________________ Spice-devel mailing list Spice-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/spice-devel