VirtualBox

Changeset 31502 in vbox


Ignore:
Timestamp:
Aug 10, 2010 4:21:33 AM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
64591
Message:

Audio/HDA: fixes WinXP hang and detection of "Double" reset.

Location:
trunk/src/VBox/Devices/Audio
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Audio/DevCodec.cpp

    r31475 r31502  
    579579        uint8_t i;
    580580        Log(("HDAcodec: enters reset\n"));
    581         for (i = 0; i < STAC9220_NODE_COUNT; ++i)
     581        if (pState->fFirstResetDetected)
    582582        {
    583             stac9220ResetNode(pState, i, &pState->pNodes[i]);
    584         }
    585         pState->pfnReset(pState);
     583            LogRel(("HDAcodec: \"Double\" reset detected\n"));
     584            pState->fFirstResetDetected = false;
     585            for (i = 0; i < STAC9220_NODE_COUNT; ++i)
     586            {
     587                stac9220ResetNode(pState, i, &pState->pNodes[i]);
     588            }
     589        }   
     590        else
     591            pState->fFirstResetDetected = true;
    586592        Log(("HDAcodec: exits reset\n"));
    587593    }
     
    11741180        if ((CODEC_VERBDATA(cmd) & pState->pVerbs[i].mask) == pState->pVerbs[i].verb)
    11751181        {
     1182            if(    pState->fFirstResetDetected
     1183                && CODEC_VERBDATA(cmd) != 0x7FF00
     1184                && CODEC_VERBDATA(cmd) != 0)
     1185                pState->fFirstResetDetected = false;
    11761186            *pfn = pState->pVerbs[i].pfn;
    11771187            return VINF_SUCCESS;
     
    12201230    pState->pfnLookup = codecLookup;
    12211231    pState->pNodes = (PCODECNODE)RTMemAllocZ(sizeof(CODECNODE) * STAC9220_NODE_COUNT);
     1232    pState->fFirstResetDetected = false;
    12221233    uint8_t i;
    12231234    for (i = 0; i < STAC9220_NODE_COUNT; ++i)
  • trunk/src/VBox/Devices/Audio/DevCodec.h

    r31263 r31502  
    224224    SWVoiceIn               *voice_mc;
    225225    void *pHDAState;
     226    bool fFirstResetDetected;
    226227    DECLR3CALLBACKMEMBER(int, pfnProcess, (struct CODECState *));
    227228    DECLR3CALLBACKMEMBER(int, pfnLookup, (struct CODECState *pState, uint32_t verb, PPFNCODECVERBPROCESSOR));
  • trunk/src/VBox/Devices/Audio/DevIchIntelHDA.cpp

    r31459 r31502  
    12011201{
    12021202    INTELHDLinkState *pState = (INTELHDLinkState *)pCodecState->pHDAState;
    1203     STATESTS(pState) |= 1 << (pCodecState->id);
     1203    pCodecState->fFirstResetDetected = true;
    12041204    return VINF_SUCCESS;
    12051205}
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