VirtualBox

Changeset 94183 in vbox for trunk


Ignore:
Timestamp:
Mar 11, 2022 5:53:16 PM (3 years ago)
Author:
vboxsync
Message:

VMMDev: Preserve display change data in saved state, bugref:10134.

This commit fixes an issue when guest displays with ID > 0 became
automatically disabled on first resize after VM was restored from saved state.

Location:
trunk/src/VBox/Devices/VMMDev
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/VMMDev/VMMDev.cpp

    r93944 r94183  
    155155#ifndef VBOX_DEVICE_STRUCT_TESTCASE
    156156#ifdef IN_RING3
     157
     158/** DISPLAYCHANGEDATA field descriptors for the v18+ saved state. */
     159static SSMFIELD const g_aSSMDISPLAYCHANGEDATAStateFields[] =
     160{
     161    SSMFIELD_ENTRY(DISPLAYCHANGEDATA, iCurrentMonitor),
     162    SSMFIELD_ENTRY(DISPLAYCHANGEDATA, fGuestSentChangeEventAck),
     163    SSMFIELD_ENTRY(DISPLAYCHANGEDATA, afAlignment),
     164    SSMFIELD_ENTRY(DISPLAYCHANGEDATA, aRequests),
     165    SSMFIELD_ENTRY_TERM()
     166};
    157167
    158168/* -=-=-=-=- Misc Helpers -=-=-=-=- */
     
    40354045    PDMDevHlpTimerSave(pDevIns, pThis->hFlatlinedTimer, pSSM);
    40364046
     4047    pHlp->pfnSSMPutStructEx(pSSM, &pThis->displayChangeData, sizeof(pThis->displayChangeData), 0,
     4048                            g_aSSMDISPLAYCHANGEDATAStateFields, NULL);
     4049
    40374050    PDMDevHlpCritSectLeave(pDevIns, &pThis->CritSect);
    40384051    return VINF_SUCCESS;
     
    41704183            LogRel(("vmmdevLoadState: Guest has flatlined. Last heartbeat %'RU64 ns before state was saved.\n",
    41714184                    PDMDevHlpTimerGetNano(pDevIns, pThis->hFlatlinedTimer) - pThis->nsLastHeartbeatTS));
     4185    }
     4186
     4187    if (uVersion >= VMMDEV_SAVED_STATE_VERSION_DISPLAY_CHANGE_DATA)
     4188    {
     4189        pHlp->pfnSSMGetStructEx(pSSM, &pThis->displayChangeData, sizeof(pThis->displayChangeData), 0,
     4190                                g_aSSMDISPLAYCHANGEDATAStateFields, NULL);
    41724191    }
    41734192
  • trunk/src/VBox/Devices/VMMDev/VMMDevState.h

    r93115 r94183  
    554554
    555555/** The saved state version. */
    556 #define VMMDEV_SAVED_STATE_VERSION                              VMMDEV_SAVED_STATE_VERSION_HGCM_PARAMS
     556#define VMMDEV_SAVED_STATE_VERSION                              VMMDEV_SAVED_STATE_VERSION_DISPLAY_CHANGE_DATA
     557/** The saved state version with display change data state. */
     558#define VMMDEV_SAVED_STATE_VERSION_DISPLAY_CHANGE_DATA          18
    557559/** Updated HGCM commands. */
    558560#define VMMDEV_SAVED_STATE_VERSION_HGCM_PARAMS                  17
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette