VirtualBox

Ignore:
Timestamp:
Apr 25, 2012 9:42:29 PM (13 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
77623
Message:

crHgsmi cleanup & adjustments

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.cpp

    r40897 r41058  
    19621962        {
    19631963            if (pAllocation->pSynchEvent)
    1964             {
    19651964                ObDereferenceObject(pAllocation->pSynchEvent);
    1966             }
    19671965            break;
    19681966        }
     
    21512149                {
    21522150                    pAllocationInfo->Size = pAllocInfo->cbBuffer;
    2153                     pAllocation->enmSynchType = pAllocInfo->enmSynchType;
     2151                    pAllocation->fUhgsmiType = pAllocInfo->fUhgsmiType;
    21542152                    pAllocation->SurfDesc.cbSize = pAllocInfo->cbBuffer;
    21552153                    pAllocationInfo->Flags.CpuVisible = 1;
    21562154//                    pAllocationInfo->Flags.SynchronousPaging = 1;
    21572155                    pAllocationInfo->AllocationPriority = D3DDDI_ALLOCATIONPRIORITY_MAXIMUM;
    2158                     switch (pAllocInfo->enmSynchType)
     2156                    if (pAllocInfo->hSynch)
    21592157                    {
    2160                         case VBOXUHGSMI_SYNCHOBJECT_TYPE_EVENT:
    2161                             Status = ObReferenceObjectByHandle((HANDLE)pAllocInfo->hSynch, EVENT_MODIFY_STATE, *ExEventObjectType, UserMode,
    2162                                     (PVOID*)&pAllocation->pSynchEvent,
    2163                                     NULL);
    2164                             Assert(Status == STATUS_SUCCESS);
    2165                             break;
    2166                         case VBOXUHGSMI_SYNCHOBJECT_TYPE_SEMAPHORE:
    2167                             Status = ObReferenceObjectByHandle((HANDLE)pAllocInfo->hSynch, EVENT_MODIFY_STATE, *ExSemaphoreObjectType, UserMode,
    2168                                     (PVOID*)&pAllocation->pSynchSemaphore,
    2169                                     NULL);
    2170                             Assert(Status == STATUS_SUCCESS);
    2171                             break;
    2172                         case VBOXUHGSMI_SYNCHOBJECT_TYPE_NONE:
    2173                             pAllocation->pSynchEvent = NULL;
    2174                             Status = STATUS_SUCCESS;
    2175                             break;
    2176                         default:
    2177                             LOGREL(("ERROR: invalid synch info type(%d)", pAllocInfo->enmSynchType));
    2178                             AssertBreakpoint();
    2179                             Status = STATUS_INVALID_PARAMETER;
    2180                             break;
     2158                        Status = ObReferenceObjectByHandle((HANDLE)pAllocInfo->hSynch, EVENT_MODIFY_STATE, *ExEventObjectType, UserMode,
     2159                                (PVOID*)&pAllocation->pSynchEvent,
     2160                                NULL);
     2161                        Assert(Status == STATUS_SUCCESS);
    21812162                    }
    21822163                    break;
     
    27632744    {
    27642745        VBOXVDMACMD_CHROMIUM_BUFFER *pBufCmd = &pBody->aBuffers[i];
    2765         if (!pBufCmd->u32GuesData)
     2746        if (!pBufCmd->u32GuestData)
    27662747        {
    27672748            /* signal completion */
    2768             PVBOXWDDM_ALLOCATION pAlloc = (PVBOXWDDM_ALLOCATION)pBufCmd->u64GuesData;
    2769             switch (pAlloc->enmSynchType)
    2770             {
    2771                 case VBOXUHGSMI_SYNCHOBJECT_TYPE_EVENT:
    2772                     KeSetEvent(pAlloc->pSynchEvent, 3, FALSE);
    2773                     break;
    2774                 case VBOXUHGSMI_SYNCHOBJECT_TYPE_SEMAPHORE:
    2775                     KeReleaseSemaphore(pAlloc->pSynchSemaphore,
    2776                         3,
    2777                         1,
    2778                         FALSE);
    2779                     break;
    2780                 case VBOXUHGSMI_SYNCHOBJECT_TYPE_NONE:
    2781                     break;
    2782                 default:
    2783                     Assert(0);
    2784             }
     2749            PVBOXWDDM_ALLOCATION pAlloc = (PVBOXWDDM_ALLOCATION)pBufCmd->u64GuestData;
     2750            if (pAlloc->pSynchEvent)
     2751                KeSetEvent(pAlloc->pSynchEvent, 3, FALSE);
    27852752        }
    27862753    }
     
    30353002                pBufCmd->offBuffer = pBufInfo->Alloc.offAlloc;
    30363003                pBufCmd->cbBuffer = pBufInfo->cbData;
    3037                 pBufCmd->u32GuesData = pBufInfo->bDoNotSignalCompletion;
    3038                 pBufCmd->u64GuesData = (uint64_t)pBufInfo->Alloc.pAlloc;
     3004                pBufCmd->u32GuestData = pBufInfo->bDoNotSignalCompletion;
     3005                pBufCmd->u64GuestData = (uint64_t)pBufInfo->Alloc.pAlloc;
    30393006            }
    30403007
     
    51365103
    51375104                pSubmInfo->cbData = pSubmUmInfo->cbData;
    5138                 pSubmInfo->bDoNotSignalCompletion = pSubmUmInfo->fSubFlags.bDoNotSignalCompletion;
     5105                pSubmInfo->bDoNotSignalCompletion = pSubmUmInfo->bDoNotSignalCompletion;
    51395106
    51405107                pPLL->AllocationIndex = i;
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