VirtualBox

Changeset 54981 in vbox for trunk/src


Ignore:
Timestamp:
Mar 27, 2015 7:02:12 AM (10 years ago)
Author:
vboxsync
Message:

PDM/DevIchAc97.cpp: Fixes.

File:
1 edited

Legend:

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

    r54424 r54981  
    10491049    uint32_t    addr           = pReg->bd.addr;
    10501050    uint32_t    cbWrittenTotal = 0;
    1051     uint32_t    cbToRead       = 0;
     1051    uint32_t    cbToRead;
    10521052
    10531053    uint32_t cbToWrite = RT_MIN((uint32_t)(pReg->picb << 1), cbMax);
     
    10791079            int rc2 = pDrv->pConnector->pfnWrite(pDrv->pConnector, pDrv->Out.pStrmOut,
    10801080                                                 pThis->pvReadWriteBuf, cbToRead, &cbWritten);
     1081            AssertRCBreak(rc);
    10811082            if (RT_FAILURE(rc2))
    10821083                continue;
     
    12851286    PAC97DRIVER pDrv;
    12861287
    1287     LogFlowFuncEnter();
    1288 
    12891288    uint32_t cbIn, cbOut, cSamplesLive;
    12901289    RTListForEach(&pThis->lstDrv, pDrv, AC97DRIVER, Node)
     
    13041303                                 pDrv->uLUN, cSamplesLive, cSamplesPlayed));
    13051304
    1306                 rc = pDrv->pConnector->pfnQueryStatus(pDrv->pConnector,
    1307                                                       &cbIn, &cbOut, &cSamplesLive);
    1308                 if (RT_SUCCESS(rc))
    1309                     LogFlowFunc(("\tLUN#%RU8: [2] cbIn=%RU32, cbOut=%RU32\n", pDrv->uLUN, cbIn, cbOut));
     1305                if (cSamplesPlayed)
     1306                {
     1307                    rc = pDrv->pConnector->pfnQueryStatus(pDrv->pConnector,
     1308                                                          &cbIn, &cbOut, &cSamplesLive);
     1309                    if (RT_SUCCESS(rc))
     1310                        LogFlowFunc(("\tLUN#%RU8: [2] cbIn=%RU32, cbOut=%RU32\n", pDrv->uLUN, cbIn, cbOut));
     1311                }
    13101312            }
    13111313
     
    13371339    TMTimerSet(pThis->pTimer, TMTimerGet(pThis->pTimer) + pThis->uTicks);
    13381340
    1339     LogFlowFuncLeave();
    1340 
    13411341    STAM_PROFILE_STOP(&pThis->StatTimer, a);
    13421342}
     
    13661366    }
    13671367
    1368     int rc;
     1368    int rc = VINF_SUCCESS;
    13691369    uint32_t cbWrittenTotal = 0;
    13701370
     
    14021402        {
    14031403            case PO_INDEX:
     1404            {
     1405                rc = ichac97WriteAudio(pThis, pReg, cbElapsed, &cbTransferred);
     1406                if (   RT_SUCCESS(rc)
     1407                    && cbTransferred)
    14041408                {
    1405                     rc = ichac97WriteAudio(pThis, pReg, cbElapsed, &cbTransferred);
    1406                     if (RT_SUCCESS(rc)
    1407                         && cbTransferred)
    1408                     {
    1409                         cbWrittenTotal += cbTransferred;
    1410                         Assert(cbElapsed >= cbTransferred);
    1411                         cbElapsed      -= cbTransferred;
    1412                         Assert((cbTransferred & 1) == 0);    /* Else the following shift won't work */
    1413                         pReg->picb     -= (cbTransferred >> 1);
    1414                     }
    1415                     break;
     1409                    cbWrittenTotal += cbTransferred;
     1410                    Assert(cbElapsed >= cbTransferred);
     1411                    cbElapsed      -= cbTransferred;
     1412                    Assert((cbTransferred & 1) == 0);    /* Else the following shift won't work */
     1413                    pReg->picb     -= (cbTransferred >> 1);
    14161414                }
     1415                break;
     1416            }
    14171417
    14181418            case PI_INDEX:
    14191419            case MC_INDEX:
     1420            {
     1421                rc = ichac97ReadAudio(pThis, pReg, cbElapsed, &cbTransferred);
     1422                if (   RT_SUCCESS(rc)
     1423                    && cbTransferred)
    14201424                {
    1421                     rc = ichac97ReadAudio(pThis, pReg, cbElapsed, &cbTransferred);
    1422                     if (RT_SUCCESS(rc)
    1423                         && cbTransferred)
    1424                     {
    1425                         Assert(cbElapsed >= cbTransferred);
    1426                         cbElapsed  -= cbTransferred;
    1427                         Assert((cbTransferred & 1) == 0);    /* Else the following shift won't work */
    1428                         pReg->picb -= (cbTransferred >> 1);
    1429                     }
    1430                     break;
     1425                    Assert(cbElapsed >= cbTransferred);
     1426                    cbElapsed  -= cbTransferred;
     1427                    Assert((cbTransferred & 1) == 0);    /* Else the following shift won't work */
     1428                    pReg->picb -= (cbTransferred >> 1);
    14311429                }
     1430                break;
     1431            }
    14321432
    14331433            default:
     
    25222522         * Register statistics.
    25232523         */
    2524         PDMDevHlpSTAMRegister(pDevIns, &pThis->StatTimer,            STAMTYPE_PROFILE, "/Devices/AC97/Timer",             STAMUNIT_TICKS_PER_CALL, "Profiling hdaTimer.");
     2524        PDMDevHlpSTAMRegister(pDevIns, &pThis->StatTimer,            STAMTYPE_PROFILE, "/Devices/AC97/Timer",             STAMUNIT_TICKS_PER_CALL, "Profiling ichac97Timer.");
    25252525        PDMDevHlpSTAMRegister(pDevIns, &pThis->StatBytesRead,        STAMTYPE_COUNTER, "/Devices/AC97/BytesRead"   ,      STAMUNIT_BYTES,          "Bytes read from AC97 emulation.");
    25262526        PDMDevHlpSTAMRegister(pDevIns, &pThis->StatBytesWritten,     STAMTYPE_COUNTER, "/Devices/AC97/BytesWritten",      STAMUNIT_BYTES,          "Bytes written to AC97 emulation.");
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