VirtualBox

Changeset 5038 in vbox


Ignore:
Timestamp:
Sep 26, 2007 8:09:52 AM (17 years ago)
Author:
vboxsync
Message:

Inform VBVA and VRDP about rectangle updated within DdLock/DdUnlock (fixes missing images in Word).

Location:
trunk/src/VBox/Additions/WINNT/Graphics/Display
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/WINNT/Graphics/Display/dd.c

    r4347 r5038  
    636636    DWORD                           ReturnedDataLength;
    637637
    638     DISPDBG((0, "%s: %p\n", __FUNCTION__, pDev));
     638    DISPDBG((0, "%s: %p bMap %d\n", __FUNCTION__, pDev, lpMapMemory->bMap));
    639639
    640640    if (lpMapMemory->bMap)
     
    718718    PPDEV pDev = (PPDEV)lpLock->lpDD->dhpdev;
    719719
    720     DISPDBG((0, "%s: %p\n", __FUNCTION__, pDev));
     720    DISPDBG((0, "%s: %p bHasRect = %d\n", __FUNCTION__, pDev, lpLock->bHasRect));
     721   
     722    pDev->ddLock.bHasRect = lpLock->bHasRect;
     723   
     724    if (lpLock->bHasRect)
     725    {
     726        DISPDBG((0, "%d,%d %dx%d\n", lpLock->rArea.left, lpLock->rArea.top, lpLock->rArea.right - lpLock->rArea.left, lpLock->rArea.bottom - lpLock->rArea.top));
     727        pDev->ddLock.rArea = lpLock->rArea;
     728    }
    721729
    722730    // Because we correctly set 'fpVidMem' to be the offset into our frame
     
    750758    DISPDBG((0, "%s: %p\n", __FUNCTION__, pDev));
    751759
     760    if (pDev->ddLock.bHasRect)
     761    {
     762        DISPDBG((0, "%d,%d %dx%d\n", pDev->ddLock.rArea.left, pDev->ddLock.rArea.top, pDev->ddLock.rArea.right - pDev->ddLock.rArea.left, pDev->ddLock.rArea.bottom - pDev->ddLock.rArea.top));
     763       
     764        if (pDev->pInfo && vboxHwBufferBeginUpdate (pDev))
     765        {
     766            vbvaReportDirtyRect (pDev, &pDev->ddLock.rArea);
     767
     768            if (  pDev->pInfo->hostEvents.fu32Events
     769                & VBOX_VIDEO_INFO_HOST_EVENTS_F_VRDP_RESET)
     770            {
     771                vrdpReset (pDev);
     772
     773                pDev->pInfo->hostEvents.fu32Events &=
     774                          ~VBOX_VIDEO_INFO_HOST_EVENTS_F_VRDP_RESET;
     775            }
     776
     777            if (pDev->vbva.pVbvaMemory->fu32ModeFlags
     778                & VBVA_F_MODE_VRDP)
     779            {
     780                vrdpReportDirtyRect (pDev, &pDev->ddLock.rArea);
     781            }
     782
     783            vboxHwBufferEndUpdate (pDev);
     784        }
     785        pDev->ddLock.bHasRect = 0;
     786    }
     787
    752788    lpUnlock->ddRVal = DD_OK;
    753789    return DDHAL_DRIVER_NOTHANDLED;
  • trunk/src/VBox/Additions/WINNT/Graphics/Display/driver.h

    r4265 r5038  
    133133    DWORD            cHeaps;
    134134    VIDEOMEMORY*     pvmList;
    135 #endif
     135    struct {
     136        DWORD bHasRect;
     137        RECTL rArea;
     138    } ddLock;
     139#endif /* VBOX_WITH_DDRAW */
    136140};
    137141
     
    238242#endif /* VBOX_VBVA_ADJUST_RECT */
    239243
     244void vrdpReportDirtyRect (PPDEV ppdev, RECTL *prcl);
     245void vbvaReportDirtyRect (PPDEV ppdev, RECTL *prcl);
    240246
    241247#include <iprt/assert.h>
  • trunk/src/VBox/Additions/WINNT/Graphics/Display/vrdp.c

    r5036 r5038  
    405405}
    406406
    407 static void vrdpReportDirtyRect (PPDEV ppdev, RECTL *prcl)
     407void vrdpReportDirtyRect (PPDEV ppdev, RECTL *prcl)
    408408{
    409409    SURFOBJ *pso = ppdev->psoScreenBitmap;
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