VirtualBox

vbox的更動 61740 路徑 trunk/src/VBox/Main


忽略:
時間撮記:
2016-6-17 上午10:19:23 (8 年 以前)
作者:
vboxsync
訊息:

Main/Display: when taking a screenshot of a blanked/disabled screen, return all black pixels (and there is no need to get the screen content, which might be garbage)

檔案:
修改 1 筆資料

圖例:

未更動
新增
刪除
  • trunk/src/VBox/Main/src-client/DisplayImpl.cpp

    r61564 r61740  
    170170
    171171#ifdef VBOX_WITH_CRHGSMI
    172     if (RTCritSectRwIsInitialized (&mCrOglLock))
    173     {
    174         RTCritSectRwDelete (&mCrOglLock);
     172    if (RTCritSectRwIsInitialized(&mCrOglLock))
     173    {
     174        RTCritSectRwDelete(&mCrOglLock);
    175175        RT_ZERO(mCrOglLock);
    176176    }
     
    884884
    885885    if (uScreenId >= mcMonitors)
    886     {
    887886        return VINF_SUCCESS;
    888     }
    889887
    890888    DISPLAYFBINFO *pFBInfo = &maFramebuffers[uScreenId];
     
    10241022        return; */
    10251023
    1026     i_checkCoordBounds (&x, &y, &w, &h, maFramebuffers[uScreenId].w,
    1027                                         maFramebuffers[uScreenId].h);
     1024    i_checkCoordBounds(&x, &y, &w, &h, maFramebuffers[uScreenId].w,
     1025                                       maFramebuffers[uScreenId].h);
    10281026
    10291027    IFramebuffer *pFramebuffer = maFramebuffers[uScreenId].pFramebuffer;
     
    12081206    CHECK_CONSOLE_DRV(mpDrv);
    12091207    alock.release();  /* Release before calling up for lock order reasons. */
    1210     mpDrv->pUpPort->pfnReportHostCursorCapabilities (mpDrv->pUpPort, fCapabilitiesAdded, fCapabilitiesRemoved);
     1208    mpDrv->pUpPort->pfnReportHostCursorCapabilities(mpDrv->pUpPort, fCapabilitiesAdded, fCapabilitiesRemoved);
    12111209    mfHostCursorCapabilities = fHostCursorCapabilities;
    12121210    return S_OK;
     
    14851483         * disabled.
    14861484         */
    1487         Assert (fEnable == false);
     1485        Assert(fEnable == false);
    14881486
    14891487        mfVideoAccelVRDP = false;
     
    15041502        /* The first client has connected. Enable the accel.
    15051503         */
    1506         Assert (fEnable == true);
     1504        Assert(fEnable == true);
    15071505
    15081506        mfVideoAccelVRDP = true;
     
    19171915            if (pbDst != NULL)
    19181916            {
    1919                 /* Copy guest VRAM to the allocated 32bpp buffer. */
    1920                 const uint8_t *pu8Src       = pFBInfo->pu8FramebufferVRAM;
    1921                 int32_t xSrc                = 0;
    1922                 int32_t ySrc                = 0;
    1923                 uint32_t u32SrcWidth        = width;
    1924                 uint32_t u32SrcHeight       = height;
    1925                 uint32_t u32SrcLineSize     = pFBInfo->u32LineSize;
    1926                 uint32_t u32SrcBitsPerPixel = pFBInfo->u16BitsPerPixel;
    1927 
    1928                 int32_t xDst                = 0;
    1929                 int32_t yDst                = 0;
    1930                 uint32_t u32DstWidth        = u32SrcWidth;
    1931                 uint32_t u32DstHeight       = u32SrcHeight;
    1932                 uint32_t u32DstLineSize     = u32DstWidth * 4;
    1933                 uint32_t u32DstBitsPerPixel = 32;
    1934 
    1935                 rc = pDisplay->mpDrv->pUpPort->pfnCopyRect(pDisplay->mpDrv->pUpPort,
    1936                                                            width, height,
    1937                                                            pu8Src,
    1938                                                            xSrc, ySrc,
    1939                                                            u32SrcWidth, u32SrcHeight,
    1940                                                            u32SrcLineSize, u32SrcBitsPerPixel,
    1941                                                            pbDst,
    1942                                                            xDst, yDst,
    1943                                                            u32DstWidth, u32DstHeight,
    1944                                                            u32DstLineSize, u32DstBitsPerPixel);
     1917                if (pFBInfo->flags & VBVA_SCREEN_F_ACTIVE)
     1918                {
     1919                    /* Copy guest VRAM to the allocated 32bpp buffer. */
     1920                    const uint8_t *pu8Src       = pFBInfo->pu8FramebufferVRAM;
     1921                    int32_t xSrc                = 0;
     1922                    int32_t ySrc                = 0;
     1923                    uint32_t u32SrcWidth        = width;
     1924                    uint32_t u32SrcHeight       = height;
     1925                    uint32_t u32SrcLineSize     = pFBInfo->u32LineSize;
     1926                    uint32_t u32SrcBitsPerPixel = pFBInfo->u16BitsPerPixel;
     1927
     1928                    int32_t xDst                = 0;
     1929                    int32_t yDst                = 0;
     1930                    uint32_t u32DstWidth        = u32SrcWidth;
     1931                    uint32_t u32DstHeight       = u32SrcHeight;
     1932                    uint32_t u32DstLineSize     = u32DstWidth * 4;
     1933                    uint32_t u32DstBitsPerPixel = 32;
     1934
     1935                    rc = pDisplay->mpDrv->pUpPort->pfnCopyRect(pDisplay->mpDrv->pUpPort,
     1936                                                               width, height,
     1937                                                               pu8Src,
     1938                                                               xSrc, ySrc,
     1939                                                               u32SrcWidth, u32SrcHeight,
     1940                                                               u32SrcLineSize, u32SrcBitsPerPixel,
     1941                                                               pbDst,
     1942                                                               xDst, yDst,
     1943                                                               u32DstWidth, u32DstHeight,
     1944                                                               u32DstLineSize, u32DstBitsPerPixel);
     1945                }
     1946                else
     1947                {
     1948                    memset(pbDst, 0, cbRequired);
     1949                    rc = VINF_SUCCESS;
     1950                }
    19451951                if (RT_SUCCESS(rc))
    19461952                {
     
    25092515//    {
    25102516//        /* All ok. Redraw the screen. */
    2511 //        handleDisplayUpdate (x, y, width, height);
     2517//        handleDisplayUpdate(x, y, width, height);
    25122518//    }
    25132519
注意: 瀏覽 TracChangeset 來幫助您使用更動檢視器

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