--- src/qxl_driver.c | 38 ++++---------------------------------- src/qxlhw.c | 10 ++++++++++ src/qxlhw.h | 5 +++++ src/qxlhw_pci.c | 24 ++++++++++++++++++++++++ 4 files changed, 43 insertions(+), 34 deletions(-)
diff --git a/src/qxl_driver.c b/src/qxl_driver.c index a39d8c7..6ffbfa9 100644 --- a/src/qxl_driver.c +++ b/src/qxl_driver.c @@ -318,36 +318,6 @@ qxl_blank_screen(ScreenPtr pScreen, int mode) return TRUE; } -#ifdef XSPICE -static void -qxl_save_state(ScrnInfoPtr pScrn) -{ -} - -static void -qxl_restore_state(ScrnInfoPtr pScrn) -{ -} -#else /* QXL */ -static void -qxl_save_state(ScrnInfoPtr pScrn) -{ - qxl_screen_t *qxl = pScrn->driverPrivate; - - if (xf86IsPrimaryPci (qxl->pci)) - vgaHWSaveFonts(pScrn, &qxl->vgaRegs); -} - -static void -qxl_restore_state(ScrnInfoPtr pScrn) -{ - qxl_screen_t *qxl = pScrn->driverPrivate; - - if (xf86IsPrimaryPci (qxl->pci)) - vgaHWRestoreFonts(pScrn, &qxl->vgaRegs); -} -#endif /* XSPICE */ - static Bool qxl_close_screen(int scrnIndex, ScreenPtr pScreen) { @@ -371,7 +341,7 @@ qxl_close_screen(int scrnIndex, ScreenPtr pScreen) if (pScrn->vtSema) { - qxl_restore_state(pScrn); + qxlhw_restore_state(qxl->hw, pScrn); qxlhw_unmap_memory(qxl->hw, scrnIndex); } pScrn->vtSema = FALSE; @@ -846,7 +816,7 @@ qxl_screen_init(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) printf ("ram_header at %d\n", rom->ram_header_offset); printf ("surf0 size: %d\n", rom->surface0_area_size); - qxl_save_state(pScrn); + qxlhw_save_state(qxl->hw, pScrn); qxl_blank_screen(pScreen, SCREEN_SAVER_ON); miClearVisualTypes(); @@ -955,7 +925,7 @@ qxl_enter_vt(int scrnIndex, int flags) ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; qxl_screen_t *qxl = pScrn->driverPrivate; - qxl_save_state(pScrn); + qxlhw_save_state(qxl->hw, pScrn); qxl_switch_mode(scrnIndex, pScrn->currentMode, 0); if (qxl->vt_surfaces) @@ -982,7 +952,7 @@ qxl_leave_vt(int scrnIndex, int flags) outb(qxl->io_base + QXL_IO_RESET, 0); - qxl_restore_state(pScrn); + qxlhw_restore_state(qxl->hw, pScrn); } static Bool diff --git a/src/qxlhw.c b/src/qxlhw.c index d9617e7..42ca0db 100644 --- a/src/qxlhw.c +++ b/src/qxlhw.c @@ -28,6 +28,16 @@ void qxlhw_reset(struct qxlhw *base) base->reset(base); } +void qxlhw_save_state(struct qxlhw *base, ScrnInfoPtr pScrn) +{ + base->save_state(base, pScrn); +} + +void qxlhw_restore_state(struct qxlhw *base, ScrnInfoPtr pScrn) +{ + base->restore_state(base, pScrn); +} + Bool qxlhw_map_memory(struct qxlhw *base, int scrnIndex) { return base->map_memory(base, scrnIndex); diff --git a/src/qxlhw.h b/src/qxlhw.h index 28a1e70..67e7edd 100644 --- a/src/qxlhw.h +++ b/src/qxlhw.h @@ -11,6 +11,8 @@ struct qxlhw { /* device callbacks */ void (*device_reset)(struct qxlhw *base); void (*reset)(struct qxlhw *base); + void (*save_state)(struct qxlhw *base, ScrnInfoPtr pScrn); + void (*restore_state)(struct qxlhw *base, ScrnInfoPtr pScrn); Bool (*map_memory)(struct qxlhw *base, int scrnIndex); void (*unmap_memory)(struct qxlhw *base, int scrnIndex); @@ -31,6 +33,9 @@ void qxlhw_update_area(struct qxlhw *base, int surface_id, struct QXLRect rect); void qxlhw_device_reset(struct qxlhw *base); void qxlhw_reset(struct qxlhw *base); +void qxlhw_save_state(struct qxlhw *base, ScrnInfoPtr pScrn); +void qxlhw_restore_state(struct qxlhw *base, ScrnInfoPtr pScrn); + Bool qxlhw_map_memory(struct qxlhw *base, int scrnIndex); void qxlhw_unmap_memory(struct qxlhw *base, int scrnIndex); diff --git a/src/qxlhw_pci.c b/src/qxlhw_pci.c index f25b792..d6a0b63 100644 --- a/src/qxlhw_pci.c +++ b/src/qxlhw_pci.c @@ -367,6 +367,28 @@ static void qxlhw_pci_reset(struct qxlhw *base) base->qxl->vram_mem_slot = hw->vram_mem_slot; } +static void qxlhw_pci_save_state(struct qxlhw *base, ScrnInfoPtr pScrn) +{ +#ifndef XSPICE + struct qxlhw_pci *hw = (struct qxlhw_pci *)base; + qxl_screen_t *qxl = base->qxl; + + if (xf86IsPrimaryPci (qxl->pci)) + vgaHWSaveFonts(pScrn, &hw->vgaRegs); +#endif +} + +static void qxlhw_pci_restore_state(struct qxlhw *base, ScrnInfoPtr pScrn) +{ +#ifndef XSPICE + struct qxlhw_pci *hw = (struct qxlhw_pci *)base; + qxl_screen_t *qxl = base->qxl; + + if (xf86IsPrimaryPci (qxl->pci)) + vgaHWRestoreFonts(pScrn, &hw->vgaRegs); +#endif +} + static void qxlhw_pci_update_area(struct qxlhw *base, int surface_id, struct QXLRect rect) { struct qxlhw_pci *hw = (struct qxlhw_pci *)base; @@ -398,6 +420,8 @@ struct qxlhw *create_qxlhw_pci(qxl_screen_t *qxl, ScrnInfoPtr pScrn) qxlhw_init(base, qxl); base->device_reset = qxlhw_pci_device_reset; base->reset = qxlhw_pci_reset; + base->save_state = qxlhw_pci_save_state; + base->restore_state = qxlhw_pci_restore_state; base->map_memory = qxlhw_pci_map_memory; base->unmap_memory = qxlhw_pci_unmap_memory; base->update_area = qxlhw_pci_update_area; -- 1.7.9.3 _______________________________________________ Spice-devel mailing list Spice-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/spice-devel