VirtualBox

Changeset 100712 in vbox for trunk/src/VBox/Devices/Graphics


Ignore:
Timestamp:
Jul 26, 2023 10:38:25 PM (19 months ago)
Author:
vboxsync
Message:

Devices/Graphics: pre-initialize screen ids. bugref:9830

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

Legend:

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

    r100211 r100712  
    10111011        && pSVGAState->aScreens[idScreen].fDefined)
    10121012    {
     1013        Assert(pSVGAState->aScreens[idScreen].idScreen == idScreen);
    10131014        return &pSVGAState->aScreens[idScreen];
    10141015    }
     
    18441845        /** @todo Generic screen object/target interface. */
    18451846        VMSVGASCREENOBJECT *pScreen = &pSvgaR3State->aScreens[pCmd->stid];
     1847        Assert(pScreen->idScreen == pCmd->stid);
    18461848        pScreen->fDefined  = true;
    18471849        pScreen->fModified = true;
    18481850        pScreen->fuScreen  = SVGA_SCREEN_MUST_BE_SET
    18491851                           | (RT_BOOL(pCmd->flags & SVGA_STFLAG_PRIMARY) ? SVGA_SCREEN_IS_PRIMARY : 0);
    1850         pScreen->idScreen  = pCmd->stid;
    18511852
    18521853        pScreen->xOrigin = pCmd->xRoot;
     
    67566757
    67576758    VMSVGASCREENOBJECT *pScreen = &pSvgaR3State->aScreens[idScreen];
     6759    Assert(pScreen->idScreen == idScreen);
    67586760    pScreen->fDefined  = true;
    67596761    pScreen->fModified = true;
    67606762    pScreen->fuScreen  = pCmd->screen.flags;
    6761     pScreen->idScreen  = idScreen;
    67626763    if (!RT_BOOL(pCmd->screen.flags & (SVGA_SCREEN_DEACTIVATE | SVGA_SCREEN_BLANKING)))
    67636764    {
     
    68026803
    68036804    VMSVGASCREENOBJECT *pScreen = &pSvgaR3State->aScreens[idScreen];
     6805    Assert(pScreen->idScreen == idScreen);
    68046806    vmsvgaR3DestroyScreen(pThis, pThisCC, pScreen);
    68056807}
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA.cpp

    r100710 r100712  
    16821682
    16831683        VMSVGASCREENOBJECT *pScreen = &pSVGAState->aScreens[0];
     1684        Assert(pScreen->idScreen == 0);
    16841685        pScreen->fDefined  = true;
    16851686        pScreen->fModified = true;
    16861687        pScreen->fuScreen  = SVGA_SCREEN_MUST_BE_SET | SVGA_SCREEN_IS_PRIMARY;
    1687         pScreen->idScreen  = 0;
    16881688        pScreen->xOrigin   = 0;
    16891689        pScreen->yOrigin   = 0;
     
    60186018        /* Try to setup at least the first screen. */
    60196019        VMSVGASCREENOBJECT *pScreen = &pSVGAState->aScreens[0];
     6020        Assert(pScreen->idScreen == 0);
    60206021        pScreen->fDefined  = true;
    60216022        pScreen->fModified = true;
    60226023        pScreen->fuScreen  = SVGA_SCREEN_MUST_BE_SET | SVGA_SCREEN_IS_PRIMARY;
    6023         pScreen->idScreen  = 0;
    60246024        pScreen->xOrigin   = 0;
    60256025        pScreen->yOrigin   = 0;
     
    65606560    rc = RTCritSectInit(&pSVGAState->CritSectCmdBuf);
    65616561    AssertRCReturn(rc, rc);
     6562
     6563    /* Init screen ids which are constant and allow to use a pointer to aScreens element and know its index. */
     6564    for (uint32_t i = 0; i < RT_ELEMENTS(pSVGAState->aScreens); ++i)
     6565        pSVGAState->aScreens[i].idScreen = i;
    65626566
    65636567    vmsvgaR3CmdBufCtxInit(&pSVGAState->CmdBufCtxDC);
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