VirtualBox

Changeset 38995 in vbox


Ignore:
Timestamp:
Oct 14, 2011 10:23:22 AM (13 years ago)
Author:
vboxsync
Message:

DisplayImpl: make sure that framebuffer info is updated.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/src-client/DisplayImpl.cpp

    r38966 r38995  
    37693769}
    37703770
     3771#ifdef DEBUG_sunlover
     3772static void logVBVAResize(const PVBVAINFOVIEW pView, const PVBVAINFOSCREEN pScreen, const DISPLAYFBINFO *pFBInfo)
     3773{
     3774    LogRel(("displayVBVAResize: [%d] %s\n"
     3775            "    pView->u32ViewIndex     %d\n"
     3776            "    pView->u32ViewOffset    0x%08X\n"
     3777            "    pView->u32ViewSize      0x%08X\n"
     3778            "    pView->u32MaxScreenSize 0x%08X\n"
     3779            "    pScreen->i32OriginX      %d\n"
     3780            "    pScreen->i32OriginY      %d\n"
     3781            "    pScreen->u32StartOffset  0x%08X\n"
     3782            "    pScreen->u32LineSize     0x%08X\n"
     3783            "    pScreen->u32Width        %d\n"
     3784            "    pScreen->u32Height       %d\n"
     3785            "    pScreen->u16BitsPerPixel %d\n"
     3786            "    pScreen->u16Flags        0x%04X\n"
     3787            "    pFBInfo->u32Offset             0x%08X\n"
     3788            "    pFBInfo->u32MaxFramebufferSize 0x%08X\n"
     3789            "    pFBInfo->u32InformationSize    0x%08X\n"
     3790            "    pFBInfo->fDisabled             %d\n"
     3791            "    xOrigin, yOrigin, w, h:        %d,%d %dx%d\n"
     3792            "    pFBInfo->u16BitsPerPixel       %d\n"
     3793            "    pFBInfo->pu8FramebufferVRAM    %p\n"
     3794            "    pFBInfo->u32LineSize           0x%08X\n"
     3795            "    pFBInfo->flags                 0x%04X\n"
     3796            "    pFBInfo->pHostEvents           %p\n"
     3797            "    pFBInfo->u32ResizeStatus       %d\n"
     3798            "    pFBInfo->fDefaultFormat        %d\n"
     3799            "    dirtyRect                      %d-%d %d-%d\n"
     3800            "    pFBInfo->pendingResize.fPending    %d\n"
     3801            "    pFBInfo->pendingResize.pixelFormat %d\n"
     3802            "    pFBInfo->pendingResize.pvVRAM      %p\n"
     3803            "    pFBInfo->pendingResize.bpp         %d\n"
     3804            "    pFBInfo->pendingResize.cbLine      0x%08X\n"
     3805            "    pFBInfo->pendingResize.w,h         %dx%d\n"
     3806            "    pFBInfo->pendingResize.flags       0x%04X\n"
     3807            "    pFBInfo->fVBVAEnabled    %d\n"
     3808            "    pFBInfo->cVBVASkipUpdate %d\n"
     3809            "    pFBInfo->vbvaSkippedRect %d-%d %d-%d\n"
     3810            "    pFBInfo->pVBVAHostFlags  %p\n"
     3811            "",
     3812            pScreen->u32ViewIndex,
     3813            (pScreen->u16Flags & VBVA_SCREEN_F_DISABLED)? "DISABLED": "ENABLED",
     3814            pView->u32ViewIndex,
     3815            pView->u32ViewOffset,
     3816            pView->u32ViewSize,
     3817            pView->u32MaxScreenSize,
     3818            pScreen->i32OriginX,
     3819            pScreen->i32OriginY,
     3820            pScreen->u32StartOffset,
     3821            pScreen->u32LineSize,
     3822            pScreen->u32Width,
     3823            pScreen->u32Height,
     3824            pScreen->u16BitsPerPixel,
     3825            pScreen->u16Flags,
     3826            pFBInfo->u32Offset,
     3827            pFBInfo->u32MaxFramebufferSize,
     3828            pFBInfo->u32InformationSize,
     3829            pFBInfo->fDisabled,
     3830            pFBInfo->xOrigin,
     3831            pFBInfo->yOrigin,
     3832            pFBInfo->w,
     3833            pFBInfo->h,
     3834            pFBInfo->u16BitsPerPixel,
     3835            pFBInfo->pu8FramebufferVRAM,
     3836            pFBInfo->u32LineSize,
     3837            pFBInfo->flags,
     3838            pFBInfo->pHostEvents,
     3839            pFBInfo->u32ResizeStatus,
     3840            pFBInfo->fDefaultFormat,
     3841            pFBInfo->dirtyRect.xLeft,
     3842            pFBInfo->dirtyRect.xRight,
     3843            pFBInfo->dirtyRect.yTop,
     3844            pFBInfo->dirtyRect.yBottom,
     3845            pFBInfo->pendingResize.fPending,
     3846            pFBInfo->pendingResize.pixelFormat,
     3847            pFBInfo->pendingResize.pvVRAM,
     3848            pFBInfo->pendingResize.bpp,
     3849            pFBInfo->pendingResize.cbLine,
     3850            pFBInfo->pendingResize.w,
     3851            pFBInfo->pendingResize.h,
     3852            pFBInfo->pendingResize.flags,
     3853            pFBInfo->fVBVAEnabled,
     3854            pFBInfo->cVBVASkipUpdate,
     3855            pFBInfo->vbvaSkippedRect.xLeft,
     3856            pFBInfo->vbvaSkippedRect.yTop,
     3857            pFBInfo->vbvaSkippedRect.xRight,
     3858            pFBInfo->vbvaSkippedRect.yBottom,
     3859            pFBInfo->pVBVAHostFlags
     3860          ));
     3861}
     3862#endif /* DEBUG_sunlover */
     3863
    37713864DECLCALLBACK(int) Display::displayVBVAResize(PPDMIDISPLAYCONNECTOR pInterface, const PVBVAINFOVIEW pView, const PVBVAINFOSCREEN pScreen, void *pvVRAM)
    37723865{
     
    37963889    }
    37973890
    3798     bool fResize = pFBInfo->fDisabled; /* If display was disabled, do a resize, because the framebuffer was changed. */
     3891    /* If display was disabled or there is no framebuffer, a resize will be required,
     3892     * because the framebuffer was/will be changed.
     3893     */
     3894    bool fResize = pFBInfo->fDisabled || pFBInfo->pFramebuffer.isNull();
    37993895
    38003896    if (pFBInfo->fDisabled)
     
    38063902                                     pScreen->i32OriginX, pScreen->i32OriginY,
    38073903                                     pScreen->u32Width, pScreen->u32Height);
    3808         if (pFBInfo->pFramebuffer.isNull())
    3809         {
    3810             /* @todo If no framebuffer, remember the resize parameters to issue a requestResize later. */
    3811             return VINF_SUCCESS;
    3812         }
    3813         /* If the framebuffer already set for the screen, do a regular resize. */
     3904        /* Continue to update pFBInfo. */
    38143905    }
    38153906
     
    38853976    }
    38863977
     3978    if (pFBInfo->pFramebuffer.isNull())
     3979    {
     3980        /* If no framebuffer, the resize will be done later when a new framebuffer will be set in changeFramebuffer. */
     3981        return VINF_SUCCESS;
     3982    }
     3983
     3984    /* If the framebuffer already set for the screen, do a regular resize. */
    38873985    return pThis->handleDisplayResize(pScreen->u32ViewIndex, pScreen->u16BitsPerPixel,
    38883986                                      (uint8_t *)pvVRAM + pScreen->u32StartOffset,
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