diff options
author | Alon Levy <alevy@redhat.com> | 2012-07-22 17:24:08 +0300 |
---|---|---|
committer | Alon Levy <alevy@redhat.com> | 2012-10-23 18:46:58 +0200 |
commit | 80675313563b28158de8773cf2ca156ef573200d (patch) | |
tree | 62c9c467889eb2b53e6aaee02f1126ce465eab76 | |
parent | 57a5f8167fb7c86722215ed1255ebfbd82a04318 (diff) |
qxl: add cb reset_and_create_mem_slots
-rw-r--r-- | src/qxl.h | 2 | ||||
-rw-r--r-- | src/qxl_driver.c | 45 |
2 files changed, 29 insertions, 18 deletions
@@ -238,6 +238,8 @@ struct _qxl_screen_t int drm_fd; + void (*reset_and_create_mem_slots)(qxl_screen_t *qxl); + #ifdef XSPICE /* XSpice specific */ struct QXLRom shadow_rom; /* Parameter RAM */ diff --git a/src/qxl_driver.c b/src/qxl_driver.c index 88156d0..976d9e0 100644 --- a/src/qxl_driver.c +++ b/src/qxl_driver.c @@ -806,8 +806,16 @@ setup_slot (qxl_screen_t *qxl, uint8_t slot_index_offset, return slot_index; } +#ifndef XSPICE +static void +qxl_kms_reset_and_create_mem_slots (qxl_screen_t *qxl) +{ + // nop +} +#endif + static void -qxl_reset_and_create_mem_slots (qxl_screen_t *qxl) +qxl_ums_reset_and_create_mem_slots (qxl_screen_t *qxl) { ioport_write (qxl, QXL_IO_RESET, 0); qxl->device_primary = QXL_DEVICE_PRIMARY_NONE; @@ -892,8 +900,8 @@ qxl_close_screen (CLOSE_SCREEN_ARGS_DECL) result = pScreen->CloseScreen (CLOSE_SCREEN_ARGS); #ifndef XSPICE - if (!xf86IsPrimaryPci (qxl->pci) && qxl->primary) - qxl_reset_and_create_mem_slots (qxl); + if (!xf86IsPrimaryPci(qxl->pci) && qxl->primary) + qxl->reset_and_create_mem_slots(qxl); #endif if (pScrn->vtSema) @@ -1799,9 +1807,9 @@ qxl_screen_init (SCREEN_INIT_ARGS_DECL) qxl->uxa = uxa_driver_alloc (); /* Set up resources */ - qxl_reset_and_create_mem_slots (qxl); - ErrorF ("done reset\n"); - + qxl->reset_and_create_mem_slots(qxl); + ErrorF("done reset\n"); + #ifndef XSPICE qxl->io_pages = (void *)((unsigned long)qxl->ram); qxl->io_pages_physical = (void *)((unsigned long)qxl->ram_physical); @@ -1888,18 +1896,17 @@ qxl_enter_vt (VT_FUNC_ARGS_DECL) { SCRN_INFO_PTR (arg); qxl_screen_t *qxl = pScrn->driverPrivate; - - qxl_save_state (pScrn); - - qxl_reset_and_create_mem_slots (qxl); - - if (!qxl_resize_primary_to_virtual (qxl)) - return FALSE; - - if (qxl->mem) - { - qxl_mem_free_all (qxl->mem); - qxl_drop_image_cache (qxl); + + qxl_save_state(pScrn); + + qxl->reset_and_create_mem_slots(qxl); + + if (!qxl_resize_primary_to_virtual(qxl)) + return FALSE; + + if (qxl->mem) { + qxl_mem_free_all(qxl->mem); + qxl_drop_image_cache(qxl); } if (qxl->surf_mem) @@ -2382,12 +2389,14 @@ qxl_initialize_x_modes (qxl_screen_t *qxl, ScrnInfoPtr pScrn, static void set_callbacks_to_ums(qxl_screen_t *qxl) { + qxl->reset_and_create_mem_slots = qxl_ums_reset_and_create_mem_slots; } #ifndef XSPICE static void set_callbacks_to_kms(qxl_screen_t *qxl) { + qxl->reset_and_create_mem_slots = qxl_kms_reset_and_create_mem_slots; } #endif |