VirtualBox

Changeset 6518 in vbox


Ignore:
Timestamp:
Jan 28, 2008 4:39:32 AM (17 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
27535
Message:

VbglR3SetPointerShape accept image size, and cleanups to vboxutils (x11 video)

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/VBoxGuest.h

    r6510 r6518  
    14221422VBGLR3DECL(int)     VbglR3VideoAccelEnable(bool fEnable);
    14231423VBGLR3DECL(int)     VbglR3VideoAccelFlush(void);
    1424 VBGLR3DECL(int)     VbglR3SetPointerShape(uint32_t fFlags, uint32_t xHot, uint32_t yHot, uint32_t cx, uint32_t cy, const void *pvImg, size_t cbReq);
     1424VBGLR3DECL(int)     VbglR3SetPointerShape(uint32_t fFlags, uint32_t xHot, uint32_t yHot, uint32_t cx, uint32_t cy, const void *pvImg, size_t cbImg);
    14251425/** @}  */
    14261426
  • trunk/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibVideo.cpp

    r6510 r6518  
    6868 * @param   cy          Pointer height.
    6969 * @param   pvImg       Pointer to the image data (can be NULL).
    70  * @param   cbReq       The complete size of the request.
     70 * @param   cbImg       Size of the image data pointed to by pvImg.
    7171 */
    72 VBGLR3DECL(int) VbglR3SetPointerShape(uint32_t fFlags, uint32_t xHot, uint32_t yHot, uint32_t cx, uint32_t cy, const void *pvImg, size_t cbReq)
     72VBGLR3DECL(int) VbglR3SetPointerShape(uint32_t fFlags, uint32_t xHot, uint32_t yHot, uint32_t cx, uint32_t cy, const void *pvImg, size_t cbImg)
    7373{
    7474    VMMDevReqMousePointer *pReq;
    75     int rc = vbglR3GRAlloc((VMMDevRequestHeader **)&pReq, cbReq, VMMDevReq_SetPointerShape);
     75    int rc = vbglR3GRAlloc((VMMDevRequestHeader **)&pReq, RT_OFFSETOF(VMMDevReqMousePointer, pointerData) + cbImg, VMMDevReq_SetPointerShape);
    7676    if (RT_SUCCESS(rc))
    7777    {
     
    8282        pReq->height = cy;
    8383        if (pvImg)
    84             memcpy(pReq->pointerData, pvImg, cbReq - sizeof(VMMDevReqMousePointer) + sizeof(pReq->pointerData));
     84            memcpy(pReq->pointerData, pvImg, cbImg);
    8585
    8686        rc = vbglR3GRPerform(&pReq->header);
  • trunk/src/VBox/Additions/x11/xgraphics/vboxutils-new.c

    r6510 r6518  
    345345            pVBox->reqp = p;
    346346            pVBox->pCurs = NULL;
    347             pVBox->use_hw_cursor = vbox_host_can_hwcursor(pScrn, pVBox);
    348             pVBox->set_pointer_shape_size = size;
    349             pVBox->pointer_offscreen = FALSE;
     347            pVBox->useHwCursor = vbox_host_can_hwcursor(pScrn, pVBox);
     348            pVBox->pointerHeaderSize = size;
     349            pVBox->pointerOffscreen = FALSE;
    350350            pVBox->useVbva = vboxInitVbva(scrnIndex, pScreen, pVBox);
    351351            return TRUE;
     
    366366    rc = VbglR3SetPointerShape(0, pVBox->reqp->xHot, pVBox->reqp->yHot, pVBox->reqp->width,
    367367                               pVBox->reqp->height, pVBox->reqp->pointerData,
    368                                pVBox->reqp->header.size);
     368                               pVBox->pointerSize);
    369369    if (RT_FAILURE(rc))
    370370        xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Could not hide the virtual mouse pointer.\n");
     
    378378    rc = VbglR3SetPointerShape(VBOX_MOUSE_POINTER_VISIBLE, pVBox->reqp->xHot, pVBox->reqp->yHot,
    379379                               pVBox->reqp->width, pVBox->reqp->height, pVBox->reqp->pointerData,
    380                                pVBox->reqp->header.size);
     380                               pVBox->pointerSize);
    381381    if (RT_FAILURE(rc))
    382382        xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Could not unhide the virtual mouse pointer.\n");
     
    397397
    398398    rc = VbglR3SetPointerShape(reqp->fFlags, reqp->xHot, reqp->yHot, reqp->width, reqp->height,
    399                                reqp->pointerData, reqp->header.size);
     399                               reqp->pointerData, pVBox->pointerSize);
    400400    if (RT_FAILURE(rc))
    401401        xf86DrvMsg(pScrn->scrnIndex, X_ERROR,  "Unable to set the virtual mouse pointer image.\n");
     
    426426        || (y < 0 || y > pScrn->pScreen->height))
    427427    {
    428         if (!pVBox->pointer_offscreen)
    429         {
    430             pVBox->pointer_offscreen = TRUE;
     428        if (!pVBox->pointerOffscreen)
     429        {
     430            pVBox->pointerOffscreen = TRUE;
    431431            vbox_vmm_hide_cursor(pScrn, pVBox);
    432432        }
     
    434434    else
    435435    {
    436         if (pVBox->pointer_offscreen)
    437         {
    438             pVBox->pointer_offscreen = FALSE;
     436        if (pVBox->pointerOffscreen)
     437        {
     438            pVBox->pointerOffscreen = FALSE;
    439439            vbox_vmm_show_cursor(pScrn, pVBox);
    440440        }
     
    478478    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
    479479    VBOXPtr pVBox = pScrn->driverPrivate;
    480     return pVBox->use_hw_cursor;
     480    return pVBox->useHwCursor;
    481481}
    482482
     
    517517    size_mask = ((dst_pitch * h) + 3) & (size_t) ~3;
    518518    size_rgba = w * h * 4;
    519     size      = size_mask + size_rgba + pVBox->set_pointer_shape_size;
     519    pVBox->pointerSize = size_mask + size_rgba;
     520    size      = pVBox->pointerSize + pVBox->pointerHeaderSize;
    520521
    521522    p = c = xcalloc (1, size);
     
    657658            bitsp->xhot, bitsp->yhot, w, h);
    658659
    659     size = w * h * 4 + pVBox->set_pointer_shape_size + mask_size;
     660    pVBox->pointerSize = w * h * 4 + mask_size;
     661    size = pVBox->pointerSize + pVBox->pointerHeaderSize;
    660662    p = xcalloc(1, size);
    661663    if (!p)
     
    708710
    709711    VbglR3SetPointerShape(VBOX_MOUSE_POINTER_SHAPE | VBOX_MOUSE_POINTER_ALPHA, bitsp->xhot, bitsp->yhot, w, h,
    710                           pm, reqp->header.size);
     712                          pm, pVBox->pointerSize);
    711713    xfree(p);
    712714}
     
    721723    Bool rc;
    722724
    723     if (pVBox->use_hw_cursor)
     725    if (pVBox->useHwCursor)
    724726    {
    725727        xf86DrvMsg(pScrn->scrnIndex, X_INFO,
  • trunk/src/VBox/Additions/x11/xgraphics/vboxvideo.h

    r6505 r6518  
    156156    IOADDRESS ioBase;
    157157#endif  /* XORG_7X defined */
    158 #ifndef RT_OS_SOLARIS
    159     int vbox_fd;
    160 #endif
    161158    VMMDevReqMousePointer *reqp;
    162159    xf86CursorInfoPtr pCurs;
    163     Bool use_hw_cursor;
    164     size_t set_pointer_shape_size;
    165     Bool pointer_offscreen;
     160    Bool useHwCursor;
     161    size_t pointerHeaderSize;
     162    size_t pointerSize;
     163    Bool pointerOffscreen;
    166164    Bool useVbva;
    167 #ifndef RT_OS_SOLARIS
    168     VMMDevVideoAccelFlush *reqf;
    169     VMMDevVideoAccelEnable *reqe;
    170 #endif
    171165    VMMDevMemory *pVMMDevMemory;
    172166    VBVAMEMORY *pVbvaMemory;
     
    174168
    175169#ifndef XORG_7X
    176 typedef struct _ModeInfoData {
     170typedef struct _ModeInfoData
     171{
    177172    int mode;
    178173    VbeModeInfoBlock *data;
     
    185180void vbox_close (ScrnInfoPtr pScrn, VBOXPtr pVBOX);
    186181
    187 extern Bool
    188 vboxEnableVbva(ScrnInfoPtr pScrn);
     182extern Bool vboxEnableVbva(ScrnInfoPtr pScrn);
    189183
    190 extern Bool
    191 vboxDisableVbva(ScrnInfoPtr pScrn);
     184extern Bool vboxDisableVbva(ScrnInfoPtr pScrn);
    192185
    193 extern Bool
    194 vboxGetDisplayChangeRequest(ScrnInfoPtr pScrn, uint32_t *pcx, uint32_t *pcy,
     186extern Bool vboxGetDisplayChangeRequest(ScrnInfoPtr pScrn, uint32_t *pcx, uint32_t *pcy,
    195187                            uint32_t *pcBits, uint32_t fEventAck, uint32_t iDisplay);
    196188
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