VirtualBox

Changeset 43723 in vbox


Ignore:
Timestamp:
Oct 24, 2012 10:56:20 AM (12 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
81607
Message:

crOpenGL: fix large buffer transfers

Location:
trunk/src/VBox
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/common/wddm/VBoxMPIf.h

    r43643 r43723  
    3535
    3636/* One would increase this whenever definitions in this file are changed */
    37 #define VBOXVIDEOIF_VERSION 14
     37#define VBOXVIDEOIF_VERSION 15
    3838
    3939#define VBOXWDDM_NODE_ID_SYSTEM           0
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxUhgsmiBase.cpp

    r42499 r43723  
    234234
    235235    pBuf->CallHdr.EscapeHdr.escapeCode = VBOXESC_CRHGSMICTLCON_CALL;
    236     pBuf->CallHdr.EscapeHdr.u32CmdSpecific = 0;
     236    pBuf->CallHdr.EscapeHdr.u32CmdSpecific = (uint32_t)VERR_GENERAL_FAILURE;
    237237    memcpy(&pBuf->CallHdr.CallInfo, pCallInfo, cbCallInfo);
    238238
     
    240240    if (RT_SUCCESS(rc))
    241241    {
    242         memcpy(pCallInfo, &pBuf->CallHdr.CallInfo, cbCallInfo);
    243         rc = VINF_SUCCESS;
    244     }
    245     else
    246     {
     242        rc = (int)pBuf->CallHdr.EscapeHdr.u32CmdSpecific;
     243        if (RT_SUCCESS(rc))
     244        {
     245            memcpy(pCallInfo, &pBuf->CallHdr.CallInfo, cbCallInfo);
     246            rc = VINF_SUCCESS;
     247        }
     248        else
     249            WARN(("vboxCrHgsmiPrivateEscape u32CmdSpecific failed, rc (%d)", rc));
     250    }
     251    else
    247252        WARN(("vboxCrHgsmiPrivateEscape failed, rc (%d)", rc));
    248    }
     253
    249254    /* cleanup */
    250255    if (pBuf != &Buf)
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.cpp

    r43489 r43723  
    40154015                    Assert(pEscape->PrivateDriverDataSize > RT_OFFSETOF(VBOXDISPIFESCAPE_CRHGSMICTLCON_CALL, CallInfo));
    40164016                    int rc = VBoxMpCrCtlConCallUserData(&pDevExt->CrCtlCon, &pCall->CallInfo, pEscape->PrivateDriverDataSize - RT_OFFSETOF(VBOXDISPIFESCAPE_CRHGSMICTLCON_CALL, CallInfo));
    4017                     if (RT_SUCCESS(rc))
    4018                         Status = STATUS_SUCCESS;
    4019                     else
    4020                     {
     4017                    pEscapeHdr->u32CmdSpecific = (uint32_t)rc;
     4018                    Status = STATUS_SUCCESS; /* <- always return success here, otherwise the private data buffer modifications
     4019                                              * i.e. rc status stored in u32CmdSpecific will not be copied to user mode */
     4020                    if (!RT_SUCCESS(rc))
    40214021                        WARN(("VBoxMpCrUmCtlConCall failed, rc(%d)", rc));
    4022                         Status = STATUS_UNSUCCESSFUL;
    4023                     }
    40244022                }
    40254023                else
  • trunk/src/VBox/HostServices/SharedOpenGL/crserver/crservice.cpp

    r41404 r43723  
    473473            if (pBuffer->uiId == iBuffer)
    474474            {
    475                 if (pBuffer->uiSize!=cbBufferSize)
     475                if (cbBufferSize && pBuffer->uiSize!=cbBufferSize)
    476476                {
    477477                    static int shown=0;
Note: See TracChangeset for help on using the changeset viewer.

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