VirtualBox

Ignore:
Timestamp:
Sep 14, 2010 10:14:46 PM (14 years ago)
Author:
vboxsync
Message:

wddm/3d: multi-swapchain fixes (for win7 & multi-monitor)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm/VBoxVideoCm.cpp

    r30925 r32496  
    156156    PVBOXVIDEOCM_CMD_DR pHdr = VBOXVIDEOCM_HEAD(pvCmd);
    157157    vboxVideoCmCmdPostByHdr(pHdr->pContext->pSession, pHdr, cbSize);
     158}
     159
     160NTSTATUS vboxVideoCmCmdVisit(PVBOXVIDEOCM_CTX pContext, BOOL bEntireSession, PFNVBOXVIDEOCMCMDVISITOR pfnVisitor, PVOID pvVisitor)
     161{
     162    PVBOXVIDEOCM_SESSION pSession = pContext->pSession;
     163    PLIST_ENTRY pCurEntry = NULL;
     164    PVBOXVIDEOCM_CMD_DR pHdr;
     165
     166    ExAcquireFastMutex(&pSession->Mutex);
     167
     168    pCurEntry = pSession->CommandsList.Blink;
     169    do
     170    {
     171        if (pCurEntry != &pSession->CommandsList)
     172        {
     173            pHdr = VBOXCMENTRY_2_CMD(pCurEntry);
     174            pCurEntry = pHdr->QueueList.Blink;
     175            if (bEntireSession || pHdr->pContext == pContext)
     176            {
     177                void * pvBody = VBOXVIDEOCM_BODY(pHdr, void);
     178                UINT fRet = pfnVisitor(pHdr->pContext, pvBody, pHdr->CmdHdr.cbCmd, pvVisitor);
     179                if (fRet & VBOXVIDEOCMCMDVISITOR_RETURN_RMCMD)
     180                {
     181                    RemoveEntryList(&pHdr->QueueList);
     182                }
     183                if (!(fRet & VBOXVIDEOCMCMDVISITOR_RETURN_CONTINUE))
     184                    break;
     185            }
     186        }
     187        else
     188        {
     189            break;
     190        }
     191    } while (1);
     192
     193
     194    ExReleaseFastMutex(&pSession->Mutex);
     195
     196    return STATUS_SUCCESS;
    158197}
    159198
     
    447486    return STATUS_SUCCESS;
    448487}
     488
     489VOID vboxVideoCmLock(PVBOXVIDEOCM_CTX pContext)
     490{
     491    ExAcquireFastMutex(&pContext->pSession->Mutex);
     492}
     493
     494VOID vboxVideoCmUnlock(PVBOXVIDEOCM_CTX pContext)
     495{
     496    ExReleaseFastMutex(&pContext->pSession->Mutex);
     497}
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