VirtualBox

Changeset 50259 in vbox


Ignore:
Timestamp:
Jan 28, 2014 2:17:48 PM (11 years ago)
Author:
vboxsync
Message:

DevVGA: VBVAPause

Location:
trunk/src/VBox/Devices/Graphics
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Graphics/DevVGA.cpp

    r50214 r50259  
    10371037#else
    10381038        {
    1039             /* reset when VBE is switched off */
    1040             bool fNeedRest = !(val & VBE_DISPI_ENABLED) && (pThis->vbe_regs[VBE_DISPI_INDEX_ENABLE] & VBE_DISPI_ENABLED);
    1041 
    10421039            if ((val & VBE_DISPI_ENABLED) &&
    10431040                !(pThis->vbe_regs[VBE_DISPI_INDEX_ENABLE] & VBE_DISPI_ENABLED)) {
     
    11321129            pThis->pDrv->pfnLFBModeChange(pThis->pDrv, (val & VBE_DISPI_ENABLED) != 0);
    11331130#ifdef VBOX_WITH_HGSMI
    1134             if (fNeedRest)
    1135                 VBVAReset(pThis);
     1131            VBVAPause(pThis, (val & VBE_DISPI_ENABLED) == 0);
    11361132#endif /* VBOX_WITH_HGSMI */
    11371133
  • trunk/src/VBox/Devices/Graphics/DevVGA.h

    r50149 r50259  
    593593int      VBVAUpdateDisplay (PVGASTATE pVGAState);
    594594void     VBVAReset (PVGASTATE pVGAState);
     595void     VBVAPause (PVGASTATE pVGAState, bool fPause);
    595596int      VBVAGetScreenInfo(PVGASTATE pVGAState, unsigned uScreenId, struct VBVAINFOSCREEN *pScreen, void **ppvVram);
    596597
  • trunk/src/VBox/Devices/Graphics/DevVGA_VBVA.cpp

    r50149 r50259  
    8282    VBVAVIEW aViews[64 /* @todo SchemaDefs::MaxGuestMonitors*/];
    8383    VBVAMOUSESHAPEINFO mouseShapeInfo;
     84    bool fPaused;
    8485} VBVACONTEXT;
    8586
     
    23212322}
    23222323
     2324/* When VBVA is paused, then VGA device is allowed to work but
     2325 * no HGSMI etc state is changed.
     2326 */
     2327void VBVAPause(PVGASTATE pVGAState, bool fPause)
     2328{
     2329    if (!pVGAState || !pVGAState->pHGSMI)
     2330    {
     2331        return;
     2332    }
     2333
     2334    VBVACONTEXT *pCtx = (VBVACONTEXT *)HGSMIContext(pVGAState->pHGSMI);
     2335
     2336    if (pCtx)
     2337    {
     2338        pCtx->fPaused = fPause;
     2339    }
     2340}
     2341
    23232342void VBVAReset (PVGASTATE pVGAState)
    23242343{
     
    23692388    if (pCtx)
    23702389    {
    2371         rc = vbvaFlush (pVGAState, pCtx);
    2372 
    2373         if (RT_SUCCESS (rc))
    2374         {
    2375             if (!pCtx->aViews[0].pVBVA)
    2376             {
    2377                 /* VBVA is not enabled for the first view, so VGA device must do updates. */
    2378                 rc = VERR_NOT_SUPPORTED;
     2390        if (!pCtx->fPaused)
     2391        {
     2392            rc = vbvaFlush (pVGAState, pCtx);
     2393
     2394            if (RT_SUCCESS (rc))
     2395            {
     2396                if (!pCtx->aViews[0].pVBVA)
     2397                {
     2398                    /* VBVA is not enabled for the first view, so VGA device must do updates. */
     2399                    rc = VERR_NOT_SUPPORTED;
     2400                }
    23792401            }
    23802402        }
     
    24132435             VBVACONTEXT *pCtx = (VBVACONTEXT *)HGSMIContext (pVGAState->pHGSMI);
    24142436             pCtx->cViews = pVGAState->cMonitors;
     2437             pCtx->fPaused = true;
    24152438         }
    24162439     }
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