VirtualBox

Changeset 68893 in vbox


Ignore:
Timestamp:
Sep 27, 2017 4:25:53 PM (7 years ago)
Author:
vboxsync
Message:

Audio/DrvAudio.cpp: Added attach / detach callbacks.

File:
1 edited

Legend:

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

    r68868 r68893  
    10641064    AssertPtrReturn(pInterface, VERR_INVALID_POINTER);
    10651065    AssertPtrReturn(pStream,    VERR_INVALID_POINTER);
    1066     /* pcData is optional. */
    10671066
    10681067    PDRVAUDIO pThis = PDMIAUDIOCONNECTOR_2_DRVAUDIO(pInterface);
     
    10961095{
    10971096    AssertPtrReturn(pThis, VERR_INVALID_POINTER);
     1097
     1098    if (!pThis->pHostDrvAudio)
     1099        return VINF_SUCCESS;
    10981100
    10991101    if (!pStream)
     
    14821484    {
    14831485        if (!pThis->pHostDrvAudio)
    1484         {
    1485             rc = VERR_NOT_AVAILABLE;
    1486             break;
    1487         }
     1486            break;
    14881487
    14891488        PPDMAUDIOSTREAM pHstStream = drvAudioGetHostStream(pStream);
     
    17761775    do
    17771776    {
     1777        if (!pThis->pHostDrvAudio)
     1778            break;
     1779
    17781780        PPDMAUDIOSTREAM pHstStream = drvAudioGetHostStream(pStream);
    17791781        AssertPtr(pHstStream);
     
    22532255    LogFlowFunc(("enmCmd=%s\n", DrvAudioHlpStreamCmdToStr(enmCmd)));
    22542256
     2257    int rc2 = RTCritSectEnter(&pThis->CritSect);
     2258    AssertRC(rc2);
     2259
    22552260    if (!pThis->pHostDrvAudio)
    22562261        return;
     
    22592264    RTListForEach(&pThis->lstHstStreams, pHstStream, PDMAUDIOSTREAM, Node)
    22602265        drvAudioStreamControlInternalBackend(pThis, pHstStream, enmCmd);
     2266
     2267    rc2 = RTCritSectLeave(&pThis->CritSect);
     2268    AssertRC(rc2);
    22612269}
    22622270
     
    34773485{
    34783486    drvAudioStateHandler(pDrvIns, PDMAUDIOSTREAMCMD_RESUME);
     3487}
     3488
     3489/**
     3490 * Attach notification.
     3491 *
     3492 * @param   pDrvIns     The driver instance data.
     3493 */
     3494static DECLCALLBACK(int) drvAudioAttach(PPDMDRVINS pDrvIns, uint32_t fFlags)
     3495{
     3496    RT_NOREF(fFlags);
     3497
     3498    PDMDRV_CHECK_VERSIONS_RETURN(pDrvIns);
     3499    PDRVAUDIO pThis = PDMINS_2_DATA(pDrvIns, PDRVAUDIO);
     3500
     3501    int rc2 = RTCritSectEnter(&pThis->CritSect);
     3502    AssertRC(rc2);
     3503
     3504    int rc = VINF_SUCCESS;
     3505
     3506    LogFunc(("%s\n", pThis->szName));
     3507
     3508    rc2 = RTCritSectLeave(&pThis->CritSect);
     3509    if (RT_SUCCESS(rc))
     3510        rc = rc2;
     3511
     3512    return rc;
     3513}
     3514
     3515/**
     3516 * Detach notification.
     3517 *
     3518 * @param   pDrvIns     The driver instance data.
     3519 */
     3520static DECLCALLBACK(void) drvAudioDetach(PPDMDRVINS pDrvIns, uint32_t fFlags)
     3521{
     3522    RT_NOREF(fFlags);
     3523
     3524    PDMDRV_CHECK_VERSIONS_RETURN_VOID(pDrvIns);
     3525    PDRVAUDIO pThis = PDMINS_2_DATA(pDrvIns, PDRVAUDIO);
     3526
     3527    int rc2 = RTCritSectEnter(&pThis->CritSect);
     3528    AssertRC(rc2);
     3529
     3530    pThis->pHostDrvAudio = NULL;
     3531
     3532    LogFunc(("%s\n", pThis->szName));
     3533
     3534    rc2 = RTCritSectLeave(&pThis->CritSect);
     3535    AssertRC(rc2);
    34793536}
    34803537
     
    35193576    drvAudioResume,
    35203577    /* pfnAttach */
    3521     NULL,
     3578    drvAudioAttach,
    35223579    /* pfnDetach */
    3523     NULL,
     3580    drvAudioDetach,
    35243581    /* pfnPowerOff */
    35253582    drvAudioPowerOff,
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