Changeset 27429 in vbox
- Timestamp:
- Mar 16, 2010 9:49:51 PM (15 years ago)
- Location:
- trunk/src/VBox
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm/VBoxVideoWddm.cpp
r27426 r27429 1310 1310 { 1311 1311 pAllocation->enmType = VBOXWDDM_ALLOC_TYPE_STD_SHAREDPRIMARYSURFACE; 1312 pAllocation->offVram = VBOXVIDEOOFFSET_VOID; 1312 1313 pAllocation->u.SurfInfo = pAllocInfo->u.SurfInfo; 1313 1314 PVBOXWDDM_ALLOCATION_SHAREDPRIMARYSURFACE pAlloc = VBOXWDDM_ALLOCATION_BODY(pAllocation, VBOXWDDM_ALLOCATION_SHAREDPRIMARYSURFACE); … … 1365 1366 { 1366 1367 pAllocation->enmType = pAllocInfo->enmType; 1368 pAllocation->offVram = VBOXVIDEOOFFSET_VOID; 1367 1369 pAllocation->u.SurfInfo = pAllocInfo->u.SurfInfo; 1368 1370 -
trunk/src/VBox/Devices/Graphics/DevVGA_VDMA.cpp
r27426 r27429 170 170 } 171 171 172 static void vboxVDMARectlUnite(VBOXVDMA_RECTL * pRectl1, const VBOXVDMA_RECTL * pRectl2) 173 { 174 if (!pRectl1->width) 175 *pRectl1 = *pRectl2; 176 else 177 { 178 int16_t x21 = pRectl1->left + pRectl1->width; 179 int16_t x22 = pRectl2->left + pRectl2->width; 180 if (pRectl1->left > pRectl2->left) 181 { 182 pRectl1->left = pRectl2->left; 183 pRectl1->width = x21 < x22 ? x22 - pRectl1->left : x21 - pRectl1->left; 184 } 185 else if (x21 < x22) 186 pRectl1->width = x22 - pRectl1->left; 187 188 x21 = pRectl1->top + pRectl1->height; 189 x22 = pRectl2->top + pRectl2->height; 190 if (pRectl1->top > pRectl2->top) 191 { 192 pRectl1->top = pRectl2->top; 193 pRectl1->height = x21 < x22 ? x22 - pRectl1->top : x21 - pRectl1->top; 194 } 195 else if (x21 < x22) 196 pRectl1->height = x22 - pRectl1->top; 197 } 198 } 199 172 200 /* 173 201 * @return on success the number of bytes the command contained, otherwise - VERR_xxx error code … … 190 218 191 219 uint8_t * pvRam = pVdma->pVGAState->vram_ptrR3; 220 VBOXVDMA_RECTL updateRectl = {0}; 192 221 193 222 if (pBlt->cDstSubRects) … … 224 253 if (!RT_SUCCESS(rc)) 225 254 return rc; 255 256 vboxVDMARectlUnite(&updateRectl, pDstRectl); 226 257 } 227 258 } … … 235 266 if (!RT_SUCCESS(rc)) 236 267 return rc; 268 269 vboxVDMARectlUnite(&updateRectl, &pBlt->dstRectl); 237 270 } 238 271 239 272 int iView = 0; 240 273 /* @todo: fixme: check if update is needed and get iView */ 241 vboxVDMANotifyPrimaryUpdate (pVdma->pVGAState, iView, & pBlt->dstRectl);274 vboxVDMANotifyPrimaryUpdate (pVdma->pVGAState, iView, &updateRectl); 242 275 243 276 return cbBlt;
Note:
See TracChangeset
for help on using the changeset viewer.