VirtualBox

Changeset 34227 in vbox


Ignore:
Timestamp:
Nov 22, 2010 4:31:49 AM (14 years ago)
Author:
vboxsync
Message:

Audio/HDA: backed r67971.

File:
1 edited

Legend:

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

    r34226 r34227  
    13371337}
    13381338
    1339 static uint32_t hdaReadAudio(INTELHDLinkState *pState, uint32_t *pu32Avail, uint32_t u32CblLimit)
     1339static uint32_t hdaReadAudio(INTELHDLinkState *pState, uint32_t *pu32Avail, bool *fStop, uint32_t u32CblLimit)
    13401340{
    13411341    PHDABDLEDESC pBdle = &pState->stInBdle;
     
    13501350            || (*pu32Avail < hdaFifoWToSz(pState, 0)))
    13511351        {
     1352            *fStop = true;
    13521353            return 0;
    13531354        }
     
    13621363            || cb2Copy < pBdle->cbUnderFifoW)
    13631364        {
     1365            *fStop = true;
    13641366            return 0;
    13651367        }
     
    13891391            pBdle->cbUnderFifoW += RT_MIN(cbBackendCopy, cb2Copy);
    13901392            Assert((pBdle->cbUnderFifoW <= hdaFifoWToSz(pState, 0)));
     1393            *fStop = true;
    13911394            break;
    13921395        }
     
    14011404}
    14021405
    1403 static uint32_t hdaWriteAudio(INTELHDLinkState *pState, uint32_t *pu32Avail, uint32_t u32CblLimit)
     1406static uint32_t hdaWriteAudio(INTELHDLinkState *pState, uint32_t *pu32Avail, bool *fStop, uint32_t u32CblLimit)
    14041407{
    14051408    PHDABDLEDESC pBdle = &pState->stOutBdle;
     
    14241427    {
    14251428        Log(("hda:wa: amount of unreported bytes is less than room may be transfered  (cbUnderFifoW:%d < %d)\n", pBdle->cbUnderFifoW, cb2Copy));
     1429        *fStop = true;
    14261430        goto done;
    14271431    }
     
    14821486DECLCALLBACK(void) hdaTransfer(CODECState *pCodecState, ENMSOUNDSOURCE src, int avail)
    14831487{
     1488    bool fStop = false;
    14841489    uint64_t u64BaseDMA = 0;
    14851490    PHDABDLEDESC pBdle = NULL;
     
    15331538    *pu32Sts |= HDA_REG_FIELD_FLAG_MASK(SDSTS, FIFORDY);
    15341539    fetch_bd(pState, pBdle, u64BaseDMA);
    1535     while(avail)
     1540    while( avail && !fStop)
    15361541    {
    15371542        Assert((avail >= 0 && (u32Cbl >= (*pu32Lpib)))); /* sanity */
     
    15411546        {
    15421547            case PO_INDEX:
    1543                 nBytes = hdaWriteAudio(pState, (uint32_t *)&avail, u32CblLimit);
     1548                nBytes = hdaWriteAudio(pState, (uint32_t *)&avail, &fStop, u32CblLimit);
    15441549                break;
    15451550            case PI_INDEX:
    1546                 nBytes = hdaReadAudio(pState, (uint32_t *)&avail, u32CblLimit);
     1551                nBytes = hdaReadAudio(pState, (uint32_t *)&avail, &fStop, u32CblLimit);
    15471552                break;
    15481553            default:
    15491554                nBytes = 0;
     1555                fStop  = true;
    15501556                AssertMsgFailed(("Unsupported"));
    1551                 break;
    15521557        }
    15531558        /*
     
    15921597
    15931598            }
    1594             break;
     1599            fStop = true;
    15951600        }
    15961601    }
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