Changeset 32631 in vbox
- Timestamp:
- Sep 20, 2010 9:55:38 AM (14 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/VMMDev.h
r32313 r32631 342 342 } VMMDevReqMousePointer; 343 343 AssertCompileSize(VMMDevReqMousePointer, 24+24); 344 345 /** 346 * Get the size that a VMMDevReqMousePointer request should have for a given 347 * size of cursor, including the trailing cursor image and mask data. 348 * @note an "empty" request still has the four preallocated bytes of data 349 * 350 * @returns the size 351 * @param width the cursor width 352 * @param height the cursor height 353 */ 354 DECLINLINE(size_t) vmmdevGetMousePointerReqSize(uint32_t width, uint32_t height) 355 { 356 size_t cbBase = RT_OFFSETOF(VMMDevReqMousePointer, pointerData); 357 size_t cbMask = (width + 7) / 8 * height; 358 size_t cbArgb = width * height * 4; 359 return RT_MAX(cbBase + ((cbMask + 3) & ~3) + cbArgb, 360 sizeof(VMMDevReqMousePointer)); 361 } 344 362 345 363 /** @name VMMDevReqMousePointer::fFlags -
trunk/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibVideo.cpp
r31409 r32631 99 99 { 100 100 VMMDevReqMousePointer *pReq; 101 int rc = vbglR3GRAlloc((VMMDevRequestHeader **)&pReq, RT_OFFSETOF(VMMDevReqMousePointer, pointerData) + cbImg, VMMDevReq_SetPointerShape); 101 size_t cbReq = vmmdevGetMousePointerReqSize(cx, cy); 102 AssertReturn( !pvImg 103 || cbReq == RT_OFFSETOF(VMMDevReqMousePointer, pointerData) + cbImg, 104 VERR_INVALID_PARAMETER); 105 int rc = vbglR3GRAlloc((VMMDevRequestHeader **)&pReq, cbReq, 106 VMMDevReq_SetPointerShape); 102 107 if (RT_SUCCESS(rc)) 103 108 { … … 111 116 112 117 rc = vbglR3GRPerform(&pReq->header); 113 vbglR3GRFree(&pReq->header);114 118 if (RT_SUCCESS(rc)) 115 119 rc = pReq->header.rc; 120 vbglR3GRFree(&pReq->header); 116 121 } 117 122 return rc; -
trunk/src/VBox/Devices/VMMDev/VMMDev.cpp
r32616 r32631 751 751 if (pRequestHeader->size < sizeof(VMMDevReqMousePointer)) 752 752 { 753 AssertMsg(pRequestHeader->size == 0x10028 && pRequestHeader->version == 10000, /* don't bitchabout legacy!!! */753 AssertMsg(pRequestHeader->size == 0x10028 && pRequestHeader->version == 10000, /* don't complain about legacy!!! */ 754 754 ("VMMDev mouse shape structure has invalid size %d (%#x) version=%d!\n", 755 755 pRequestHeader->size, pRequestHeader->size, pRequestHeader->size, pRequestHeader->version)); … … 767 767 fVisible, fAlpha, fShape, pointerShape->width, pointerShape->height)); 768 768 769 if (pRequestHeader->size == sizeof(VMMDevReqMousePointer)) 769 if ( pRequestHeader->size 770 != vmmdevGetMousePointerReqSize(pointerShape->width, 771 pointerShape->height) 772 || !pointerShape->width 773 || !pointerShape->height) 770 774 { 771 775 /* The guest did not provide the shape actually. */
Note:
See TracChangeset
for help on using the changeset viewer.